Change GeneratedTypeBuilderBase.setSchemaPath() 43/69043/7
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 3 Mar 2018 18:16:22 +0000 (19:16 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 9 Mar 2018 17:16:07 +0000 (18:16 +0100)
Using an Iterable here is wasteful, as most uses have a SchemaPath
handy. This way the SchemaPath is not forced to instantiate its
path from root unless necessary.

JIRA: MDSAL-315
Change-Id: Ia41c198d19f63e0f99207dc38deef0b096722b54
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
13 files changed:
binding/mdsal-binding-generator-api/src/main/java/org/opendaylight/mdsal/binding/model/api/type/builder/GeneratedTypeBuilderBase.java
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/AbstractTypeGenerator.java
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/yang/types/AbstractTypeProvider.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/AbstractEnumerationBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/CodegenEnumerationBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/CodegenGeneratedTOBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/CodegenGeneratedTypeBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/RuntimeEnumerationBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/RuntimeGeneratedTOBuilder.java
binding/mdsal-binding-generator-util/src/main/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/RuntimeGeneratedTypeBuilder.java
binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/EnumerationBuilderImplTest.java
binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTOBuilderImplTest.java
binding/mdsal-binding-generator-util/src/test/java/org/opendaylight/mdsal/binding/model/util/generated/type/builder/GeneratedTypeBuilderTest.java

index f7ebe0bc793ba91b5670d11cf00e54bd980e164a..a3e17c6f552c0054ae118283cbaf49f7b8b33487 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.mdsal.binding.model.api.Constant;
 import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>> extends Type {
 
@@ -210,13 +210,11 @@ public interface GeneratedTypeBuilderBase<T extends GeneratedTypeBuilderBase<T>>
     void setModuleName(String moduleName);
 
     /**
-     * Set a list of QNames which represent schema path in schema tree from
-     * actual concrete type to the root.
+     * Schema path in schema tree from actual concrete type to the root.
      *
-     * @param schemaPath
-     *            a list of QNames which represent schema path in schema tree
+     * @param schemaPath schema path in schema tree
      */
-    void setSchemaPath(Iterable<QName> schemaPath);
+    void setSchemaPath(SchemaPath schemaPath);
 
     /**
      * Set a string that is used to specify a textual cross-reference to an
index 538dd07cf497bc4cd12d495fef26115cdf236fb9..862fe5175bd6b09516b86bb6646d9b8c7ef72f9d 100644 (file)
@@ -258,7 +258,7 @@ abstract class AbstractTypeGenerator {
 
         genType.setModuleName(module.getName());
         addCodegenInformation(genType, module, node);
-        genType.setSchemaPath(node.getPath().getPathFromRoot());
+        genType.setSchemaPath(node.getPath());
         if (node instanceof DataNodeContainer) {
             genCtx.get(module).addChildNodeType(node, genType);
             groupingsToGenTypes(module, ((DataNodeContainer) node).getGroupings());
@@ -598,7 +598,7 @@ abstract class AbstractTypeGenerator {
 
         addCodegenInformation(newType, module, identity);
         newType.setModuleName(module.getName());
-        newType.setSchemaPath(identity.getPath().getPathFromRoot());
+        newType.setSchemaPath(identity.getPath());
 
         final QName qname = identity.getQName();
         qnameConstant(newType, BindingMapping.QNAME_STATIC_FIELD_NAME, qname);
@@ -1577,7 +1577,7 @@ abstract class AbstractTypeGenerator {
                 genTOBuilder.getName());
 
         addCodegenInformation(returnType, parentModule, typeDef);
-        returnType.setSchemaPath(typeDef.getPath().getPathFromRoot());
+        returnType.setSchemaPath(typeDef.getPath());
         returnType.setModuleName(parentModule.getName());
 
         genTOBuilder.setTypedef(true);
@@ -1730,7 +1730,7 @@ abstract class AbstractTypeGenerator {
         qnameConstant(newType, BindingMapping.QNAME_STATIC_FIELD_NAME, schemaNode.getQName());
 
         addCodegenInformation(newType, module, schemaNode);
-        newType.setSchemaPath(schemaNode.getPath().getPathFromRoot());
+        newType.setSchemaPath(schemaNode.getPath());
         newType.setModuleName(module.getName());
 
         if (!genTypeBuilders.containsKey(packageName)) {
index f6b93a8cff0a6bc3c902c1a0c9910e62cecaef40..745c9cc3c46d36c3e9d9b738e1c5eed6c4af70de 100644 (file)
@@ -653,7 +653,7 @@ public abstract class AbstractTypeProvider implements TypeProvider {
         addEnumDescription(enumBuilder, enumTypeDef);
         enumTypeDef.getReference().ifPresent(enumBuilder::setReference);
         enumBuilder.setModuleName(module.getName());
-        enumBuilder.setSchemaPath(enumTypeDef.getPath().getPathFromRoot());
+        enumBuilder.setSchemaPath(enumTypeDef.getPath());
         enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef);
         return enumBuilder.toInstance(null);
     }
@@ -970,7 +970,7 @@ public abstract class AbstractTypeProvider implements TypeProvider {
         if (typeDefName != null && !typeDefName.isEmpty()) {
             final String typeName = BindingMapping.getClassName(typeDefName);
             unionGenTOBuilder = newGeneratedTOBuilder(basePackageName, typeName);
-            unionGenTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot());
+            unionGenTOBuilder.setSchemaPath(typedef.getPath());
             unionGenTOBuilder.setModuleName(module.getName());
             addCodegenInformation(unionGenTOBuilder, typedef);
         } else {
@@ -1189,7 +1189,7 @@ public abstract class AbstractTypeProvider implements TypeProvider {
         if (packageName != null && typeDefTOName != null) {
             final String genTOName = BindingMapping.getClassName(typeDefTOName);
             final GeneratedTOBuilder newType = newGeneratedTOBuilder(packageName, genTOName);
-            newType.setSchemaPath(typedef.getPath().getPathFromRoot());
+            newType.setSchemaPath(typedef.getPath());
             newType.setModuleName(moduleName);
             addCodegenInformation(newType, typedef);
             return newType;
@@ -1228,7 +1228,7 @@ public abstract class AbstractTypeProvider implements TypeProvider {
 
             final String typeName = BindingMapping.getClassName(typeDefName);
             final GeneratedTOBuilder genTOBuilder = newGeneratedTOBuilder(basePackageName, typeName);
-            genTOBuilder.setSchemaPath(typeDef.getPath().getPathFromRoot());
+            genTOBuilder.setSchemaPath(typeDef.getPath());
             genTOBuilder.setModuleName(moduleName);
             genTOBuilder.setBaseType(typeDef);
             addCodegenInformation(genTOBuilder, typeDef);
@@ -1306,7 +1306,7 @@ public abstract class AbstractTypeProvider implements TypeProvider {
         final String classTypedefName = BindingMapping.getClassName(typedefName);
         final String innerTypeDef = innerExtendedType.getQName().getLocalName();
         final GeneratedTOBuilder genTOBuilder = newGeneratedTOBuilder(basePackageName, classTypedefName);
-        genTOBuilder.setSchemaPath(typedef.getPath().getPathFromRoot());
+        genTOBuilder.setSchemaPath(typedef.getPath());
         genTOBuilder.setModuleName(moduleName);
         genTOBuilder.setTypedef(true);
         addCodegenInformation(genTOBuilder, typedef);
index c29a10210b56d9ae7c31be3308a819dfc43d0b80..2057426446231c5e50c023e88c1a6d3625a0293f 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
 import org.opendaylight.mdsal.binding.model.util.AbstractBaseType;
 import org.opendaylight.yangtools.util.LazyCollections;
 import org.opendaylight.yangtools.yang.binding.BindingMapping;
-import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
@@ -59,7 +59,7 @@ public abstract class AbstractEnumerationBuilder extends AbstractBaseType implem
 
     public abstract void setModuleName(String moduleName);
 
-    public abstract void setSchemaPath(Iterable<QName> schemaPath);
+    public abstract void setSchemaPath(SchemaPath schemaPath);
 
     abstract AbstractPair createEnumPair(String name, int value, String description);
 
index fa2b41af0b0043ebbb40247f8c43a27c97edfea5..dd30d6fbf50f62dea23b3320ee6f9e4332226cc1 100644 (file)
@@ -13,12 +13,13 @@ import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder {
     private String description;
     private String reference;
     private String moduleName;
-    private Iterable<QName> schemaPath;
+    private SchemaPath schemaPath;
 
     public CodegenEnumerationBuilder(final String packageName, final String name) {
         super(packageName, name);
@@ -35,7 +36,7 @@ public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         this.schemaPath = schemaPath;
     }
 
@@ -80,7 +81,7 @@ public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder
         private final String description;
         private final String reference;
         private final String moduleName;
-        private final Iterable<QName> schemaPath;
+        private final SchemaPath schemaPath;
 
         EnumerationImpl(final CodegenEnumerationBuilder builder, final Type definingType) {
             super(builder, definingType);
@@ -107,7 +108,7 @@ public final class CodegenEnumerationBuilder extends AbstractEnumerationBuilder
 
         @Override
         public Iterable<QName> getSchemaPath() {
-            return this.schemaPath;
+            return this.schemaPath.getPathFromRoot();
         }
 
         @Override
index a515046959a0b33e2d89082a14460801083fa6ed..69c46aaa86253a420230553ef888616c041afdc8 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
 import org.opendaylight.mdsal.binding.model.api.Restrictions;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder {
 
@@ -20,7 +21,7 @@ public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder
     private String reference;
     private String description;
     private String moduleName;
-    private Iterable<QName> schemaPath;
+    private SchemaPath schemaPath;
 
     public CodegenGeneratedTOBuilder(final String packageName, final String name) {
         super(packageName, name);
@@ -52,7 +53,7 @@ public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         this.schemaPath = schemaPath;
     }
 
@@ -72,7 +73,7 @@ public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder
         private final String reference;
         private final String description;
         private final String moduleName;
-        private final Iterable<QName> schemaPath;
+        private final SchemaPath schemaPath;
 
         public GTO(final CodegenGeneratedTOBuilder builder) {
             super(builder);
@@ -111,7 +112,7 @@ public final class CodegenGeneratedTOBuilder extends AbstractGeneratedTOBuilder
 
         @Override
         public Iterable<QName> getSchemaPath() {
-            return this.schemaPath;
+            return this.schemaPath.getPathFromRoot();
         }
 
         @Override
index a2b896b5cf8610f8e96895178ccf3950df1abfc1..838c92d00a057ba2b1f8fd64837b497016924751 100644 (file)
@@ -11,6 +11,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class CodegenGeneratedTypeBuilder extends AbstractGeneratedTypeBuilder<GeneratedTypeBuilder> implements
         GeneratedTypeBuilder {
@@ -18,7 +19,7 @@ public final class CodegenGeneratedTypeBuilder extends AbstractGeneratedTypeBuil
     private String description;
     private String reference;
     private String moduleName;
-    private Iterable<QName> schemaPath;
+    private SchemaPath schemaPath;
 
     public CodegenGeneratedTypeBuilder(final String packageName, final String name) {
         super(packageName, name);
@@ -36,7 +37,7 @@ public final class CodegenGeneratedTypeBuilder extends AbstractGeneratedTypeBuil
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         this.schemaPath = schemaPath;
     }
 
@@ -95,7 +96,7 @@ public final class CodegenGeneratedTypeBuilder extends AbstractGeneratedTypeBuil
         private final String description;
         private final String reference;
         private final String moduleName;
-        private final Iterable<QName> schemaPath;
+        private final SchemaPath schemaPath;
 
         public GeneratedTypeImpl(final CodegenGeneratedTypeBuilder builder) {
             super(builder);
@@ -118,7 +119,7 @@ public final class CodegenGeneratedTypeBuilder extends AbstractGeneratedTypeBuil
 
         @Override
         public Iterable<QName> getSchemaPath() {
-            return this.schemaPath;
+            return this.schemaPath.getPathFromRoot();
         }
 
         @Override
index a39528aa65305e1369f99cda38e257c724ff51ff..d24761367cfe84615c728ce50869bb5834f8e493 100644 (file)
@@ -13,6 +13,7 @@ import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.model.api.YangSourceDefinition;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class RuntimeEnumerationBuilder extends AbstractEnumerationBuilder {
     public RuntimeEnumerationBuilder(final String packageName, final String name) {
@@ -30,7 +31,7 @@ public final class RuntimeEnumerationBuilder extends AbstractEnumerationBuilder
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         // No-op
     }
 
index e378f7f315a060f40739d559358fc279facc180b..c99338e650f4e888b40637f297814bab99d34783 100644 (file)
@@ -12,6 +12,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
 import org.opendaylight.mdsal.binding.model.api.Restrictions;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class RuntimeGeneratedTOBuilder extends AbstractGeneratedTOBuilder {
 
@@ -40,7 +41,7 @@ public final class RuntimeGeneratedTOBuilder extends AbstractGeneratedTOBuilder
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         // No-op
     }
 
index 77e8da5341e30afbca014777bb6358a8e82fdf02..0778d865d47c722245209a6649fd498a70cfa09d 100644 (file)
@@ -11,6 +11,7 @@ import org.opendaylight.mdsal.binding.model.api.GeneratedType;
 import org.opendaylight.mdsal.binding.model.api.TypeComment;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public final class RuntimeGeneratedTypeBuilder extends AbstractGeneratedTypeBuilder<GeneratedTypeBuilder> implements
         GeneratedTypeBuilder {
@@ -36,7 +37,7 @@ public final class RuntimeGeneratedTypeBuilder extends AbstractGeneratedTypeBuil
     }
 
     @Override
-    public void setSchemaPath(final Iterable<QName> schemaPath) {
+    public void setSchemaPath(final SchemaPath schemaPath) {
         // No-op
     }
 
index 87cf647c2659e5edba02b6cf1cb748b48fd5ecf3..85fc36b6229a2db6f5f4cbde54cd5fa22467d526 100644 (file)
@@ -46,7 +46,7 @@ public class EnumerationBuilderImplTest {
         enumerationBuilder.setDescription(DESCRIPTION);
         enumerationBuilder.setModuleName(moduleName);
         enumerationBuilder.setReference(reference);
-        enumerationBuilder.setSchemaPath(Collections.singletonList(qName));
+        enumerationBuilder.setSchemaPath(SchemaPath.create(true, qName));
         enumerationBuilder.addValue(valueName, value, valueDescription);
         enumerationBuilder.addAnnotation(packageName, "TestAnnotation");
         enumerationBuilderSame = new CodegenEnumerationBuilder(packageName, name);
index 986c784f4066d6fa6ab38c919c406d1939039ead..a936933d50814e2e84d0091c36e5eb2c9b279414 100644 (file)
@@ -138,7 +138,7 @@ public class GeneratedTOBuilderImplTest {
         genTOBuilder.setDescription("test description");
         genTOBuilder.setModuleName("test-module");
         genTOBuilder.setReference("http://tools.ietf.org/html/rfc6020");
-        genTOBuilder.setSchemaPath(SchemaPath.ROOT.getPathFromRoot());
+        genTOBuilder.setSchemaPath(SchemaPath.ROOT);
 
         final GeneratedTransferObject genTO = genTOBuilder.toInstance();
 
index cf242bcd6081a0144c62b399526a87f4989f4798..8fcbab81401720afe1033486844ed134b52a48cd 100644 (file)
@@ -291,7 +291,7 @@ public class GeneratedTypeBuilderTest {
         generatedTypeBuilder.setDescription("My description ...");
         generatedTypeBuilder.setModuleName("myModuleName");
         generatedTypeBuilder.setReference("myReference");
-        generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("test", "/path")).getPathFromRoot());
+        generatedTypeBuilder.setSchemaPath(SchemaPath.create(true, QName.create("test", "/path")));
         assertNotNull(generatedTypeBuilder.addComment(TypeComments.javadoc("My comment..").get()));
 
         assertEquals(