Code refactoring
[yangtools.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / BindingGeneratorImpl.java
index 44adb2235d446775dbfaa87f4e7e0652def58ddd..1760a7e13d254364bd30aafaf14d9bbfde34acce 100644 (file)
@@ -103,12 +103,18 @@ public final class BindingGeneratorImpl implements BindingGenerator {
     private final Map<SchemaPath, GeneratedType> allGroupings = new HashMap<SchemaPath, GeneratedType>();
 
     /**
-     * Only parent constructor is invoked.
+     * Constant with the concrete name of namespace.
      */
-
     private final static String YANG_EXT_NAMESPACE = "urn:opendaylight:yang:extension:yang-ext";
+
+    /**
+     * Constant with the concrete name of identifier.
+     */
     private final static String AUGMENT_IDENTIFIER_NAME = "augment-identifier";
 
+    /**
+     * Only parent constructor is invoked.
+     */
     public BindingGeneratorImpl() {
         super();
     }
@@ -859,26 +865,9 @@ public final class BindingGeneratorImpl implements BindingGenerator {
 
             final String enumerationName = parseToClassName(enumName);
             final EnumBuilder enumBuilder = typeBuilder.addEnumeration(enumerationName);
+            enumBuilder.updateEnumPairsFromEnumTypeDef(enumTypeDef);
 
-            if (enumBuilder != null) {
-                final List<EnumPair> enums = enumTypeDef.getValues();
-                if (enums != null) {
-                    int listIndex = 0;
-                    for (final EnumPair enumPair : enums) {
-                        if (enumPair != null) {
-                            final String enumPairName = parseToClassName(enumPair.getName());
-                            Integer enumPairValue = enumPair.getValue();
-
-                            if (enumPairValue == null) {
-                                enumPairValue = listIndex;
-                            }
-                            enumBuilder.addValue(enumPairName, enumPairValue);
-                            listIndex++;
-                        }
-                    }
-                }
-                return enumBuilder;
-            }
+            return enumBuilder;
         }
         return null;
     }
@@ -1018,6 +1007,11 @@ public final class BindingGeneratorImpl implements BindingGenerator {
         return augTypeBuilder;
     }
 
+    /**
+     * 
+     * @param unknownSchemaNodes
+     * @return
+     */
     private String getAugmentIdentifier(List<UnknownSchemaNode> unknownSchemaNodes) {
         String ret = null;
         for (UnknownSchemaNode unknownSchemaNode : unknownSchemaNodes) {
@@ -2023,6 +2017,10 @@ public final class BindingGeneratorImpl implements BindingGenerator {
      * BitsTypeDefinition} which are also added to <code>typeBuilder</code> as
      * enclosing transfer object.
      *
+     * If more then one generated TO builder is created for enclosing then all
+     * of the generated TO builders are added to <code>typeBuilder</code> as
+     * enclosing transfer objects.
+     * 
      * @param typeDef
      *            type definition which can be of type <code>UnionType</code> or
      *            <code>BitsTypeDefinition</code>
@@ -2036,18 +2034,20 @@ public final class BindingGeneratorImpl implements BindingGenerator {
     private GeneratedTOBuilder addTOToTypeBuilder(TypeDefinition<?> typeDef, GeneratedTypeBuilder typeBuilder,
             String leafName, Module parentModule) {
         final String classNameFromLeaf = parseToClassName(leafName);
-        GeneratedTOBuilder genTOBuilder = null;
+        List<GeneratedTOBuilder> genTOBuilders = new ArrayList<>();
         final String packageName = typeBuilder.getFullyQualifiedName();
         if (typeDef instanceof UnionTypeDefinition) {
-            genTOBuilder = ((TypeProviderImpl) typeProvider).provideGeneratedTOBuilderForUnionTypeDefinition(
-                    packageName, typeDef, classNameFromLeaf, parentModule);
+            genTOBuilders.addAll(((TypeProviderImpl) typeProvider).provideGeneratedTOBuildersForUnionTypeDef(
+                    packageName, typeDef, classNameFromLeaf));
         } else if (typeDef instanceof BitsTypeDefinition) {
-            genTOBuilder = ((TypeProviderImpl) typeProvider).provideGeneratedTOBuilderForBitsTypeDefinition(
-                    packageName, typeDef, classNameFromLeaf);
+            genTOBuilders.add(((TypeProviderImpl) typeProvider).provideGeneratedTOBuilderForBitsTypeDefinition(
+                    packageName, typeDef, classNameFromLeaf));
         }
-        if (genTOBuilder != null) {
-            typeBuilder.addEnclosingTransferObject(genTOBuilder);
-            return genTOBuilder;
+        if (genTOBuilders != null && !genTOBuilders.isEmpty()) {
+            for (GeneratedTOBuilder genTOBuilder : genTOBuilders) {
+                typeBuilder.addEnclosingTransferObject(genTOBuilder);
+            }
+            return genTOBuilders.get(0);
         }
         return null;