Centralize Builder and Key suffixes 92/97392/3
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 5 Sep 2021 20:21:35 +0000 (22:21 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 5 Sep 2021 22:53:47 +0000 (00:53 +0200)
We have a number of places hard-coding these constants, use a common
place for them.

Change-Id: Ifbd633e1bc7fbd66bd72d091955e4353d412b6c5
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractTypeObjectGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/KeyGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderGenerator.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/BuilderTemplate.xtend
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/JavaFileTemplate.java
binding/mdsal-binding-java-api-generator/src/main/java/org/opendaylight/mdsal/binding/java/api/generator/UnionTemplate.xtend
binding/mdsal-binding-java-api-generator/src/test/java/org/opendaylight/mdsal/binding/java/api/generator/SpecializingLeafrefTest.java
binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java

index 9090f2453db546354a7ae778125f72ecb4588821..9d8526aad09ae0c636820aa63e59998111b5d282 100644 (file)
@@ -807,7 +807,7 @@ abstract class AbstractTypeObjectGenerator<T extends EffectiveStatement<?, ?>> e
         for (String part : unionName.localNameComponents()) {
             sb.append(part);
         }
-        return JavaTypeName.create(unionName.packageName(), sb.append("Builder").toString());
+        return JavaTypeName.create(unionName.packageName(), sb.append(BindingMapping.BUILDER_SUFFIX).toString());
     }
 
     // FIXME: we should not rely on TypeDefinition
index e0bf2e60df77a2063687730bbd09fc56069f9c28..4473a0b1cedce48a6caae3a0c7eb239f68fe328d 100644 (file)
@@ -23,9 +23,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
 final class KeyGenerator extends AbstractExplicitGenerator<KeyEffectiveStatement> {
-    // FIXME: this should be a well-known constant
-    private static final String SUFFIX = "Key";
-
     private final ListGenerator listGen;
 
     KeyGenerator(final KeyEffectiveStatement statement, final AbstractCompositeGenerator<?> parent,
@@ -41,7 +38,7 @@ final class KeyGenerator extends AbstractExplicitGenerator<KeyEffectiveStatement
 
     @Override
     Member createMember(final CollisionDomain domain) {
-        return domain.addSecondary(this, listGen.getMember(), SUFFIX);
+        return domain.addSecondary(this, listGen.getMember(), BindingMapping.KEY_SUFFIX);
     }
 
     @Override
index d1ce0888c97e0f9a639a81d58210ae39e0f7eda1..5cb016dd7a9a2b69fb5347ba2a12e1d062f77dfa 100644 (file)
@@ -454,8 +454,8 @@ abstract class AbstractTypeProvider {
 
             // Define a corresponding union builder. Typedefs are always anchored at a Java package root,
             // so we are placing the builder alongside the union.
-            final GeneratedTOBuilder unionBuilder = newGeneratedTOBuilder(
-                JavaTypeName.create(genTOBuilder.getPackageName(), genTOBuilder.getName() + "Builder"));
+            final GeneratedTOBuilder unionBuilder = newGeneratedTOBuilder(JavaTypeName.create(
+                genTOBuilder.getPackageName(), genTOBuilder.getName() + BindingMapping.BUILDER_SUFFIX));
             unionBuilder.setIsUnionBuilder(true);
             final MethodSignatureBuilder method = unionBuilder.addMethod("getDefaultInstance");
             method.setReturnType(returnType);
index 15253302abfdd9a737fba07df4cbd54e2d065bf7..d92004820c436996f9c7ba423fe41d9b634749a4 100644 (file)
@@ -62,13 +62,13 @@ public final class BuilderGenerator implements CodeGenerator {
 
     @Override
     public String getUnitName(final Type type) {
-        return type.getName() + BuilderTemplate.BUILDER_STR;
+        return type.getName() + BindingMapping.BUILDER_SUFFIX;
     }
 
     @VisibleForTesting
     static BuilderTemplate templateForType(final GeneratedType type) {
         final JavaTypeName origName = type.getIdentifier();
-        final JavaTypeName builderName = origName.createSibling(origName.simpleName() + BuilderTemplate.BUILDER_STR);
+        final JavaTypeName builderName = origName.createSibling(origName.simpleName() + BindingMapping.BUILDER_SUFFIX);
 
         return new BuilderTemplate(new CodegenGeneratedTypeBuilder(builderName)
             .addEnclosingTransferObject(new CodegenGeneratedTOBuilder(
index 5c4d8830cea165a4c72d44b1de319948c9d3bbce..5e8040cfcfdddc22c2e905fac00e33ced80a3987 100644 (file)
@@ -39,11 +39,6 @@ import org.opendaylight.yangtools.concepts.Builder
  * Template for generating JAVA builder classes.
  */
 class BuilderTemplate extends AbstractBuilderTemplate {
-    /**
-     * Constant used as suffix for builder name.
-     */
-    package static val BUILDER_STR = "Builder";
-
     static val BUILDER = JavaTypeName.create(Builder)
 
     val BuilderImplTemplate implTemplate
index 669e843a6293ef37a8eb8000076945e823bf15bb..cb0e5c5499a6fbc42b72218f18e822908b55a222 100644 (file)
@@ -12,8 +12,6 @@ import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 import static org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil.encodeAngleBrackets;
 import static org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil.replaceAllIllegalChars;
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.AUGMENTABLE_AUGMENTATION_NAME;
-import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.GETTER_PREFIX;
 
 import com.google.common.base.CharMatcher;
 import com.google.common.collect.ImmutableSortedSet;
@@ -153,12 +151,13 @@ class JavaFileTemplate {
         .addIgnoredStatement(YangStmtMapping.REFERENCE)
         .addIgnoredStatement(YangStmtMapping.ORGANIZATION)
         .build();
+    private static final int GETTER_PREFIX_LENGTH = BindingMapping.GETTER_PREFIX.length();
     private static final Type AUGMENTATION_RET_TYPE;
 
     static {
         final Method m;
         try {
-            m = Augmentable.class.getDeclaredMethod(AUGMENTABLE_AUGMENTATION_NAME, Class.class);
+            m = Augmentable.class.getDeclaredMethod(BindingMapping.AUGMENTABLE_AUGMENTATION_NAME, Class.class);
         } catch (NoSuchMethodException e) {
             throw new ExceptionInInitializerError(e);
         }
@@ -419,7 +418,7 @@ class JavaFileTemplate {
                     sb.append("</i>\n");
 
                     if (hasBuilderClass(schema)) {
-                        final String builderName = type.getName() + "Builder";
+                        final String builderName = type.getName() + BindingMapping.BUILDER_SUFFIX;
 
                         sb.append("\n<p>To create instances of this class use {@link ").append(builderName)
                         .append("}.\n")
@@ -427,7 +426,7 @@ class JavaFileTemplate {
                         if (node instanceof ListSchemaNode) {
                             final var keyDef = ((ListSchemaNode) node).getKeyDefinition();
                             if (!keyDef.isEmpty()) {
-                                sb.append("@see ").append(type.getName()).append("Key");
+                                sb.append("@see ").append(type.getName()).append(BindingMapping.KEY_SUFFIX);
                             }
                             sb.append('\n');
                         }
@@ -528,7 +527,7 @@ class JavaFileTemplate {
             return null;
         }
 
-        final String fieldName = StringExtensions.toFirstLower(method.getName().substring(GETTER_PREFIX.length()));
+        final String fieldName = StringExtensions.toFirstLower(method.getName().substring(GETTER_PREFIX_LENGTH));
         return new BuilderGeneratedProperty(fieldName, method);
     }
 }
index c2e897504e08ad280ba16cbe7871e5331698dcd3..094eb158c716a1bee031767056cd4cbfa5e8fc55 100644 (file)
@@ -13,6 +13,7 @@ import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.EMPTY_TYPE;
 import static org.opendaylight.mdsal.binding.model.ri.BaseYangTypes.STRING_TYPE;
 import static org.opendaylight.mdsal.binding.model.ri.Types.STRING;
 import static org.opendaylight.mdsal.binding.model.ri.Types.getOuterClassName;
+import static org.opendaylight.mdsal.binding.spec.naming.BindingMapping.BUILDER_SUFFIX
 
 import java.util.Base64;
 import org.gaul.modernizer_maven_annotations.SuppressModernizer
@@ -82,10 +83,10 @@ class UnionTemplate extends ClassTemplate {
 
     def typeBuilder() {
         val outerCls = getOuterClassName(type);
-        if(outerCls !== null) {
-            return outerCls + type.name + "Builder"
+        if (outerCls !== null) {
+            return outerCls + type.name + BUILDER_SUFFIX
         }
-        return type.name + "Builder"
+        return type.name + BUILDER_SUFFIX
     }
 
     private def unionConstructorsParentProperties() '''
index 19e3ad0b45aeb07803891ec8d9eac19126561e39..b12f352f15b801432d0d8c91f64bed4d48327c41 100644 (file)
@@ -34,6 +34,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.MethodSignature;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.ri.Types;
+import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 
 public class SpecializingLeafrefTest extends BaseCompilationTest {
     private static final Type LIST_STRING_TYPE  = Types.listTypeFor(Types.STRING);
@@ -279,7 +280,7 @@ public class SpecializingLeafrefTest extends BaseCompilationTest {
     }
 
     private static String getJavaBuilderFileName(final String name) {
-        return getJavaFileName(name + "Builder");
+        return getJavaFileName(name + BindingMapping.BUILDER_SUFFIX);
     }
 
     private String getFileContent(final String fileName) throws IOException {
index dd53f3d2d26a4140aa303dd852c9192d856ba132..7690f6d9fef1d4dcf8b9f00452c6d3ef727f1a21 100644 (file)
@@ -61,6 +61,8 @@ public final class BindingMapping {
     public static final @NonNull String DATA_ROOT_SUFFIX = "Data";
     public static final @NonNull String RPC_SERVICE_SUFFIX = "Service";
     public static final @NonNull String NOTIFICATION_LISTENER_SUFFIX = "Listener";
+    public static final @NonNull String BUILDER_SUFFIX = "Builder";
+    public static final @NonNull String KEY_SUFFIX = "Key";
     public static final @NonNull String QNAME_STATIC_FIELD_NAME = "QNAME";
     public static final @NonNull String PACKAGE_PREFIX = "org.opendaylight.yang.gen.v1";
     public static final @NonNull String AUGMENTATION_FIELD = "augmentation";