Merge "BUG-532: implemented copy constructor for generated builder classes."
[mdsal.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / ClassTemplate.xtend
index 85b2df5d6243ad2f765ffae0943d1e91a8203f9e..eb5b94c5da742df982350567d99606116e351d2a 100644 (file)
@@ -127,7 +127,7 @@ class ClassTemplate extends BaseTemplate {
 
             «generateLengthMethod("length", genTO, genTO.importedName, "_length")»
 
-            «generateRangeMethod("range", genTO, genTO.importedName, "_range"
+            «generateRangeMethod("range", genTO.restrictions, genTO.importedName, "_range", allProperties
 
         }
     '''
@@ -366,13 +366,14 @@ class ClassTemplate extends BaseTemplate {
      */
     def protected generateFields() '''
         «IF restrictions != null»
-            «IF !(restrictions.lengthConstraints.empty)»
-                «val numberClass = restrictions.lengthConstraints.iterator.next.min.class»
-                private static «List.importedName»<«Range.importedName»<«numberClass.importedNumber»>> _length;
-            «ENDIF»
-            «IF !(restrictions.rangeConstraints.empty)»
-                «val numberClass = restrictions.rangeConstraints.iterator.next.min.class»
-                private static «List.importedName»<«Range.importedName»<«numberClass.importedNumber»>> _range;
+            «val prop = getPropByName("value")»
+            «IF prop != null»
+                «IF !(restrictions.lengthConstraints.empty)»
+                    private static «List.importedName»<«Range.importedName»<«prop.returnType.importedNumber»>> _length;
+                «ENDIF»
+                «IF !(restrictions.rangeConstraints.empty)»
+                    private static «List.importedName»<«Range.importedName»<«prop.returnType.importedNumber»>> _range;
+                «ENDIF»
             «ENDIF»
         «ENDIF»
         «IF !properties.empty»
@@ -382,7 +383,6 @@ class ClassTemplate extends BaseTemplate {
         «ENDIF»
     '''
 
-
     /**
      * Template method which generates the method <code>hashCode()</code>.
      *
@@ -444,4 +444,13 @@ class ClassTemplate extends BaseTemplate {
         «ENDIF»
     '''
 
+    def GeneratedProperty getPropByName(String name) {
+        for (GeneratedProperty prop : allProperties) {
+            if (prop.name.equals(name)) {
+                return prop;
+            }
+        }
+        return null;
+    }
+
 }