Hide TypeBuilderFactory subclasses 43/99843/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 23 Feb 2022 08:54:42 +0000 (09:54 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 23 Feb 2022 08:56:07 +0000 (09:56 +0100)
TypeBuilderFactory subclasses are being checked for Codegen subclass,
so as to add (or not) documentation. Refactor addCodegenInformation()
by moving it to the factory, with Runtime ignoring doing nothing.

Change-Id: I724bd304de0ec1a51520e59e64b21d1060d7e013
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
14 files changed:
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/ActionGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CaseGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ChoiceGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ContainerGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/Generator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/GroupingGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/IdentityGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ListGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/ModuleGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/NotificationGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OpaqueObjectGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/OperationContainerGenerator.java
binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/TypeBuilderFactory.java

index 002ab608e07772f74399619146b9230e2d753b89..54e08cb1a33c79f3948a91b82d407fe97954e02d 100644 (file)
@@ -598,7 +598,7 @@ abstract class AbstractTypeObjectGenerator<T extends EffectiveStatement<?, ?>> e
 
         // builder.setSchemaPath(typedef.getPath());
         builder.setModuleName(module.statement().argument().getLocalName());
-        addCodegenInformation(typedef, builder);
+        builderFactory.addCodegenInformation(typedef, builder);
         annotateDeprecatedIfNecessary(typedef, builder);
         makeSerializable(builder);
         return builder.build();
@@ -636,7 +636,7 @@ abstract class AbstractTypeObjectGenerator<T extends EffectiveStatement<?, ?>> e
 
 //        builder.setSchemaPath(typedef.getPath());
         builder.setModuleName(moduleName);
-        addCodegenInformation(typedef, builder);
+        builderFactory.addCodegenInformation(typedef, builder);
 
         annotateDeprecatedIfNecessary(typedef, builder);
 
@@ -661,7 +661,7 @@ abstract class AbstractTypeObjectGenerator<T extends EffectiveStatement<?, ?>> e
 
 //        builder.setSchemaPath(typedef.getPath());
         builder.setModuleName(module.statement().argument().getLocalName());
-        addCodegenInformation(definingStatement, builder);
+        builderFactory.addCodegenInformation(definingStatement, builder);
 
         annotateDeprecatedIfNecessary(definingStatement, builder);
 
index 859c80ff99bfb0090062afc708c788de3c412f8a..1b26a386739f55f4acb2dca0d8b379b60139f88a 100644 (file)
@@ -50,9 +50,7 @@ final class ActionGenerator extends AbstractCompositeGenerator<ActionEffectiveSt
 //        addGetterMethods(builder, builderFactory);
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
 
         return builder.build();
     }
index fb522ad34e8e18d394287e5d6607fc87565948d3..ab7c79e863136da0813503ded6ce58e2f3d3da35 100644 (file)
@@ -61,9 +61,7 @@ final class CaseGenerator extends AbstractCompositeGenerator<CaseEffectiveStatem
         addGetterMethods(builder, builderFactory);
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
         builder.setModuleName(module.statement().argument().getLocalName());
 
         return builder.build();
index 06373ff9611d3c832bbc5bafd4d7e8687a154b54..e43e2eff510927a067d43d0b63e6536e7bf30114 100644 (file)
@@ -36,9 +36,7 @@ final class ChoiceGenerator extends AbstractCompositeGenerator<ChoiceEffectiveSt
         module.addQNameConstant(builder, localName());
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
 //      newType.setSchemaPath(schemaNode.getPath());
         builder.setModuleName(module.statement().argument().getLocalName());
 
index 84957056ebb6b86eb66cfc55013a39d5a0bd9ebf..b2d490ca7cd130d936d22e55c56a5ba24d9aa71b 100644 (file)
@@ -39,9 +39,7 @@ final class ContainerGenerator extends AbstractCompositeGenerator<ContainerEffec
         addGetterMethods(builder, builderFactory);
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
         builder.setModuleName(module.statement().argument().getLocalName());
 //      builder.setSchemaPath(node.getPath());
 
index 99580eddbb6be3a64ca67088059ff21b259c7291..10d5e098898ce79d3e9a9186c1cf5fb03a9c8dbb 100644 (file)
@@ -23,27 +23,22 @@ import java.util.List;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
-import org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil;
 import org.opendaylight.mdsal.binding.generator.impl.reactor.CollisionDomain.Member;
 import org.opendaylight.mdsal.binding.model.api.AccessModifier;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
 import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.model.api.type.builder.AnnotableTypeBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
-import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
 import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
 import org.opendaylight.mdsal.binding.model.ri.BindingTypes;
 import org.opendaylight.mdsal.binding.model.ri.Types;
 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.GeneratedPropertyBuilderImpl;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
-import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
 import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.type.TypeBuilder;
@@ -328,31 +323,6 @@ public abstract class Generator implements Iterable<Generator> {
         }
     }
 
-    static final void addCodegenInformation(final EffectiveStatement<?, ?> stmt,
-            final GeneratedTypeBuilderBase<?> builder) {
-        if (stmt instanceof DocumentedNode) {
-            addCodegenInformation((DocumentedNode) stmt, builder);
-        }
-    }
-
-    static final void addCodegenInformation(final DocumentedNode node, final GeneratedTypeBuilderBase<?> builder) {
-        node.getDescription().map(BindingGeneratorUtil::encodeAngleBrackets).ifPresent(builder::setDescription);
-        node.getReference().ifPresent(builder::setReference);
-    }
-
-    static final void addCodegenInformation(final ModuleGenerator module, final EffectiveStatement<?, ?> stmt,
-            final GeneratedTypeBuilderBase<?> builder) {
-        if (stmt instanceof DocumentedNode) {
-            final DocumentedNode node = (DocumentedNode) stmt;
-            TypeComments.description(node).ifPresent(builder::addComment);
-            node.getDescription().ifPresent(builder::setDescription);
-            node.getReference().ifPresent(builder::setReference);
-        }
-        if (stmt instanceof SchemaNode) {
-            YangSourceDefinition.of(module.statement(), (SchemaNode) stmt).ifPresent(builder::setYangSourceDefinition);
-        }
-    }
-
     static final void addUnits(final GeneratedTOBuilder builder, final TypeDefinition<?> typedef) {
         typedef.getUnits().ifPresent(units -> {
             if (!units.isEmpty()) {
index a128dd02455b60ccd9d393808b056e0720c93233..687c60f65cb18f150d4f8846a7b3548c6271fed1 100644 (file)
@@ -44,9 +44,7 @@ final class GroupingGenerator extends AbstractCompositeGenerator<GroupingEffecti
         module.addQNameConstant(builder, statement().argument());
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
 
         return builder.build();
     }
index a1a88b8c848662b5245e10fc86d78341e6235230..307aed28c19a1470b6bde24dae7e8c6680cafb35 100644 (file)
@@ -60,7 +60,7 @@ final class IdentityGenerator extends AbstractDependentGenerator<IdentityEffecti
         final ModuleGenerator module = currentModule();
         module.addQNameConstant(builder, localName());
 
-        addCodegenInformation(module, statement(), builder);
+        builderFactory.addCodegenInformation(module, statement(), builder);
         builder.setModuleName(module.statement().argument().getLocalName());
 //        builder.setSchemaPath(identity.getPath());
 
index 1a252386e8fc4fe004e3ea7ea795d2555b2eaaa6..5eca4ee13a6a3ed27a100a59edd61bf95d85a8dc 100644 (file)
@@ -69,9 +69,7 @@ final class ListGenerator extends AbstractCompositeGenerator<ListEffectiveStatem
         addGetterMethods(builder, builderFactory);
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
         builder.setModuleName(module.statement().argument().getLocalName());
         //    builder.setSchemaPath(node.getPath());
 
index 98d842c51cb4504482177ad660102a3932f6c7c8..868487b201f8d0b7c5c33c25fb3332e8ff86abd3 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
-import static com.google.common.base.Verify.verify;
 import static com.google.common.base.Verify.verifyNotNull;
 
 import java.util.Map;
@@ -15,14 +14,12 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.generator.impl.reactor.CollisionDomain.Member;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
-import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
 import org.opendaylight.mdsal.binding.model.ri.BindingTypes;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 import org.opendaylight.yangtools.yang.common.AbstractQName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DataTreeEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
@@ -117,17 +114,7 @@ public final class ModuleGenerator extends AbstractCompositeGenerator<ModuleEffe
         }
 
         addGetterMethods(builder, builderFactory);
-
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            final ModuleEffectiveStatement stmt = statement();
-            verify(stmt instanceof Module, "Unexpected module %s", stmt);
-            final Module module = (Module) stmt;
-
-            YangSourceDefinition.of(module).ifPresent(builder::setYangSourceDefinition);
-            TypeComments.description(module).ifPresent(builder::addComment);
-            module.getDescription().ifPresent(builder::setDescription);
-            module.getReference().ifPresent(builder::setReference);
-        }
+        builderFactory.addCodegenInformation(statement(), builder);
 
         return builder.build();
     }
index f59965a8cfadaeb5f394f7a0ef538d6ca583cf5c..e169fb9f1edabd791d4aee4c8ff8f64e1128e34c 100644 (file)
@@ -44,7 +44,7 @@ final class NotificationGenerator extends AbstractCompositeGenerator<Notificatio
         final ModuleGenerator module = currentModule();
         module.addQNameConstant(builder, localName());
 
-        addCodegenInformation(module, statement(), builder);
+        builderFactory.addCodegenInformation(module, statement(), builder);
         annotateDeprecatedIfNecessary(builder);
 
         return builder.build();
index cce0d05c42ff00616dc4f728040c2edf2e9aa95b..d05c9b55ed0f45d8c8e4931e68aacbd4ae72b888 100644 (file)
@@ -39,7 +39,7 @@ final class OpaqueObjectGenerator<T extends DataTreeEffectiveStatement<?>> exten
         final ModuleGenerator module = currentModule();
         module.addQNameConstant(builder, localName());
 
-        addCodegenInformation(module, statement(), builder);
+        builderFactory.addCodegenInformation(module, statement(), builder);
         builder.setModuleName(module.statement().argument().getLocalName());
 //        newType.setSchemaPath(schemaNode.getPath());
 
index 687d7f946a912ccedd19bf20303c56f4de5da49e..bd3ea607ae0131f2572a4e7c1f7071cbbce0de71 100644 (file)
@@ -63,9 +63,7 @@ class OperationContainerGenerator extends AbstractCompositeGenerator<SchemaTreeE
         module.addQNameConstant(builder, localName());
 
         annotateDeprecatedIfNecessary(builder);
-        if (builderFactory instanceof TypeBuilderFactory.Codegen) {
-            addCodegenInformation(module, statement(), builder);
-        }
+        builderFactory.addCodegenInformation(module, statement(), builder);
 //                builder.setSchemaPath(schemaNode.getPath());
         builder.setModuleName(module.statement().argument().getLocalName());
 
index 04a1824a27f2ce8c2eae80449bc9f35998bf6344..e1fbd9ca4dcabdf154dc7c01272b34820a42db22 100644 (file)
@@ -7,15 +7,19 @@
  */
 package org.opendaylight.mdsal.binding.generator.impl.reactor;
 
+import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.binding.generator.BindingGeneratorUtil;
 import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
 import org.opendaylight.mdsal.binding.model.api.JavaTypeName;
+import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.AbstractEnumerationBuilder;
 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.CodegenEnumerationBuilder;
 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.CodegenGeneratedTOBuilder;
@@ -25,6 +29,11 @@ import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.RuntimeGen
 import org.opendaylight.mdsal.binding.model.ri.generated.type.builder.RuntimeGeneratedTypeBuilder;
 import org.opendaylight.mdsal.binding.runtime.api.RuntimeGeneratedUnion;
 import org.opendaylight.yangtools.concepts.Immutable;
+import org.opendaylight.yangtools.yang.model.api.DocumentedNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.ri.type.TypeBuilder;
 
 /**
@@ -32,7 +41,7 @@ import org.opendaylight.yangtools.yang.model.ri.type.TypeBuilder;
  */
 @Beta
 public abstract class TypeBuilderFactory implements Immutable {
-    static final class Codegen extends TypeBuilderFactory {
+    private static final class Codegen extends TypeBuilderFactory {
         private static final @NonNull Codegen INSTANCE = new Codegen();
 
         private Codegen() {
@@ -59,6 +68,46 @@ public abstract class TypeBuilderFactory implements Immutable {
             return new UnionBuilder(identifier);
         }
 
+        @Override
+        void addCodegenInformation(final EffectiveStatement<?, ?> stmt,
+                final GeneratedTypeBuilderBase<?> builder) {
+            if (stmt instanceof DocumentedNode) {
+                addCodegenInformation((DocumentedNode) stmt, builder);
+            }
+        }
+
+        @Override
+        void addCodegenInformation(final ModuleEffectiveStatement stmt, final GeneratedTypeBuilderBase<?> builder) {
+            verify(stmt instanceof Module, "Unexpected module %s", stmt);
+            final Module module = (Module) stmt;
+
+            YangSourceDefinition.of(module).ifPresent(builder::setYangSourceDefinition);
+            TypeComments.description(module).ifPresent(builder::addComment);
+            module.getDescription().ifPresent(builder::setDescription);
+            module.getReference().ifPresent(builder::setReference);
+        }
+
+        @Override
+        void addCodegenInformation(final DocumentedNode node, final GeneratedTypeBuilderBase<?> builder) {
+            node.getDescription().map(BindingGeneratorUtil::encodeAngleBrackets).ifPresent(builder::setDescription);
+            node.getReference().ifPresent(builder::setReference);
+        }
+
+        @Override
+        void addCodegenInformation(final ModuleGenerator module, final EffectiveStatement<?, ?> stmt,
+                final GeneratedTypeBuilderBase<?> builder) {
+            if (stmt instanceof DocumentedNode) {
+                final DocumentedNode node = (DocumentedNode) stmt;
+                TypeComments.description(node).ifPresent(builder::addComment);
+                node.getDescription().ifPresent(builder::setDescription);
+                node.getReference().ifPresent(builder::setReference);
+            }
+            if (stmt instanceof SchemaNode) {
+                YangSourceDefinition.of(module.statement(), (SchemaNode) stmt)
+                    .ifPresent(builder::setYangSourceDefinition);
+            }
+        }
+
         private static final class UnionBuilder extends CodegenGeneratedTOBuilder implements GeneratedUnionBuilder {
             UnionBuilder(final JavaTypeName identifier) {
                 super(identifier);
@@ -73,7 +122,7 @@ public abstract class TypeBuilderFactory implements Immutable {
         }
     }
 
-    static final class Runtime extends TypeBuilderFactory {
+    private static final class Runtime extends TypeBuilderFactory {
         private static final @NonNull Runtime INSTANCE = new Runtime();
 
         private Runtime() {
@@ -100,6 +149,27 @@ public abstract class TypeBuilderFactory implements Immutable {
             return new UnionBuilder(identifier);
         }
 
+        @Override
+        void addCodegenInformation(final EffectiveStatement<?, ?> stmt, final GeneratedTypeBuilderBase<?> builder) {
+            // No-op
+        }
+
+        @Override
+        void addCodegenInformation(final ModuleEffectiveStatement stmt, final GeneratedTypeBuilderBase<?> builder) {
+            // No-op
+        }
+
+        @Override
+        void addCodegenInformation(final DocumentedNode node, final GeneratedTypeBuilderBase<?> builder) {
+            // No-op
+        }
+
+        @Override
+        void addCodegenInformation(final ModuleGenerator module, final EffectiveStatement<?, ?> stmt,
+                final GeneratedTypeBuilderBase<?> builder) {
+            // No-op
+        }
+
         private static final class UnionBuilder extends RuntimeGeneratedTOBuilder implements GeneratedUnionBuilder {
             private List<String> typePropertyNames;
 
@@ -110,7 +180,7 @@ public abstract class TypeBuilderFactory implements Immutable {
 
             @Override
             public void setTypePropertyNames(final List<String> propertyNames) {
-                this.typePropertyNames = List.copyOf(propertyNames);
+                typePropertyNames = List.copyOf(propertyNames);
             }
 
             @Override
@@ -155,4 +225,12 @@ public abstract class TypeBuilderFactory implements Immutable {
 
     abstract @NonNull GeneratedUnionBuilder newGeneratedUnionBuilder(JavaTypeName identifier);
 
+    abstract void addCodegenInformation(EffectiveStatement<?, ?> stmt, GeneratedTypeBuilderBase<?> builder);
+
+    abstract void addCodegenInformation(ModuleEffectiveStatement stmt, GeneratedTypeBuilderBase<?> builder);
+
+    abstract void addCodegenInformation(DocumentedNode node, GeneratedTypeBuilderBase<?> builder);
+
+    abstract void addCodegenInformation(ModuleGenerator module, EffectiveStatement<?, ?> stmt,
+        GeneratedTypeBuilderBase<?> builder);
 }