Implemented range validation (Bug 178).
[mdsal.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / BindingGeneratorImpl.xtend
index 702dd0d7e5d0b2b87b60689e1fbdef8d76d884af..4d694bba9270a351159ba1aa7f7a9bfaaa22727f 100644 (file)
@@ -1491,8 +1491,28 @@ public class BindingGeneratorImpl implements BindingGenerator {
                 nodeDesc = "";
             }
             if (nodeName !== null && !node.isAddedByUses()) {
-                val TypeDefinition<?> type = node.type;
-                val listType = Types.listTypeFor(typeProvider.javaTypeForSchemaDefinitionType(type, node));
+                val TypeDefinition<?> typeDef = node.type;\r
+                val parentModule = findParentModule(schemaContext, node);\r
+\r
+                var Type returnType = null;\r
+                if (typeDef instanceof EnumTypeDefinition) {\r
+                    returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, node);\r
+                    val enumTypeDef = typeDef as EnumTypeDefinition;\r
+                    val enumBuilder = resolveInnerEnumFromTypeDefinition(enumTypeDef, nodeName, typeBuilder);\r
+                    returnType = new ReferencedTypeImpl(enumBuilder.packageName, enumBuilder.name);\r
+                    (typeProvider as TypeProviderImpl).putReferencedType(node.path, returnType);\r
+                } else if (typeDef instanceof UnionType) {\r
+                    val genTOBuilder = addTOToTypeBuilder(typeDef, typeBuilder, nodeName, node, parentModule);\r
+                    returnType = new ReferencedTypeImpl(genTOBuilder.packageName, genTOBuilder.name);\r
+                } else if (typeDef instanceof BitsTypeDefinition) {\r
+                    val genTOBuilder = addTOToTypeBuilder(typeDef, typeBuilder, nodeName, node, parentModule);\r
+                    returnType = new ReferencedTypeImpl(genTOBuilder.packageName, genTOBuilder.name);\r
+                } else {\r
+                    val Restrictions restrictions = BindingGeneratorUtil.getRestrictions(typeDef);\r
+                    returnType = typeProvider.javaTypeForSchemaDefinitionType(typeDef, node, restrictions);\r
+                }\r
+
+                val listType = Types.listTypeFor(returnType);
                 constructGetter(typeBuilder, nodeName, nodeDesc, listType);
                 return true;
             }
@@ -1792,7 +1812,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
      * @return generated TO builder for <code>typeDef</code>\r
      */
     private def GeneratedTOBuilder addTOToTypeBuilder(TypeDefinition<?> typeDef, GeneratedTypeBuilder typeBuilder,
-        String leafName, LeafSchemaNode leaf, Module parentModule) {
+        String leafName, DataSchemaNode leaf, Module parentModule) {
         val classNameFromLeaf = parseToClassName(leafName);
         val List<GeneratedTOBuilder> genTOBuilders = new ArrayList();
         val packageName = typeBuilder.fullyQualifiedName;