Fixed bug in augmentation of choice nodes. 65/1665/1
authorMartin Vitez <mvitez@cisco.com>
Fri, 4 Oct 2013 07:13:29 +0000 (09:13 +0200)
committerMartin Vitez <mvitez@cisco.com>
Fri, 4 Oct 2013 07:13:29 +0000 (09:13 +0200)
Signed-off-by: Martin Vitez <mvitez@cisco.com>
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/BindingGeneratorImpl.xtend

index 9a89eac4ef139b50ce6789d2ec5e246a5f2bfc7c..fbaddc6f7f06af23fbeeac94faa38ea82f9ea10b 100644 (file)
@@ -62,7 +62,6 @@ import static org.opendaylight.yangtools.binding.generator.util.BindingTypes.*;
 import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.*;\r
 import org.opendaylight.yangtools.yang.parser.util.ModuleDependencySort\r
 import org.opendaylight.yangtools.yang.model.util.ExtendedType;\r
-\r
 public class BindingGeneratorImpl implements BindingGenerator {\r
     /**\r
      * Outter key represents the package name. Outter value represents map of\r
@@ -874,10 +873,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
                 val augType = augTypeBuilder.toInstance();\r
                 genTypes.add(augType);\r
             } else {\r
-                val choiceTarget = targetSchemaNode as ChoiceNode;\r
-                val choiceCaseNodes = choiceTarget.cases;\r
-                genTypes.addAll(\r
-                    generateTypesFromAugmentedChoiceCases(augmentPackageName, targetType, choiceCaseNodes));\r
+                genTypes.addAll(generateTypesFromAugmentedChoiceCases(augmentPackageName, targetType, augChildNodes, targetSchemaNode as ChoiceNode));\r
             }\r
             genTypes.addAll(augmentationBodyToGenTypes(augmentPackageName, augChildNodes));\r
         }\r
@@ -1315,22 +1311,32 @@ public class BindingGeneratorImpl implements BindingGenerator {
      *             </ul>\r
      */\r
     private def List<GeneratedType> generateTypesFromAugmentedChoiceCases(String basePackageName, Type refChoiceType,\r
-        Set<ChoiceCaseNode> caseNodes) {\r
+        Set<DataSchemaNode> caseNodes, ChoiceNode targetNode) {\r
         checkArgument(basePackageName !== null, "Base Package Name cannot be NULL.");\r
         checkArgument(refChoiceType !== null, "Referenced Choice Type cannot be NULL.");\r
         checkArgument(caseNodes !== null, "Set of Choice Case Nodes cannot be NULL.");\r
 \r
         val List<GeneratedType> generatedTypes = new ArrayList();\r
         for (caseNode : caseNodes) {\r
-            if(caseNode !== null && caseNode.isAugmenting()) {\r
+               if(caseNode !== null) {\r
                 val packageName = packageNameForGeneratedType(basePackageName, caseNode.path);\r
                 val caseTypeBuilder = addDefaultInterfaceDefinition(packageName, caseNode);\r
                 caseTypeBuilder.addImplementsType(refChoiceType);\r
 \r
-                val Set<DataSchemaNode> childNodes = caseNode.childNodes;\r
-                if(childNodes !== null) {\r
-                                       resolveDataSchemaNodesAugmented(basePackageName, caseTypeBuilder, childNodes);\r
+                if (caseNode instanceof DataNodeContainer) {\r
+                       val DataNodeContainer dataNodeCase = caseNode as DataNodeContainer;\r
+                       val Set<DataSchemaNode> childNodes = dataNodeCase.childNodes;\r
+                    if(childNodes !== null) {\r
+                                           resolveDataSchemaNodesAugmented(basePackageName, caseTypeBuilder, childNodes);\r
+                    }\r
+                } else {\r
+                       val ChoiceCaseNode node = targetNode.getCaseNodeByName(caseNode.getQName().getLocalName());\r
+                       val Set<DataSchemaNode> childNodes = node.childNodes;\r
+                    if(childNodes !== null) {\r
+                                           resolveDataSchemaNodesAugmented(basePackageName, caseTypeBuilder, childNodes);\r
+                    }\r
                 }\r
+                \r
                 generatedTypes.add(caseTypeBuilder.toInstance());\r
             }\r
         }\r