Bug 2480: Union objects are generated incorrectly when using bits type
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / ClassTemplate.xtend
index 8d20831242fc1be9149a80811227def001523ecc..dba7356f9bd68cd61ce72d99407a8bcebc26c28b 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.yangtools.sal.binding.model.api.GeneratedProperty
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType
 import org.opendaylight.yangtools.sal.binding.model.api.Restrictions
+import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition
 import com.google.common.base.Preconditions
 
 /**
@@ -126,6 +127,10 @@ class ClassTemplate extends BaseTemplate {
                 «ENDIF»
             «ENDFOR»
 
+            «IF (genTO.isTypedef() && genTO.getBaseType instanceof BitsTypeDefinition)»
+                «generateGetValueForBitsTypeDef»
+            «ENDIF»
+
             «generateHashCode»
 
             «generateEquals»
@@ -137,6 +142,24 @@ class ClassTemplate extends BaseTemplate {
             «generateRangeMethod("range", "_range")»
 
         }
+
+    '''
+
+    /**
+     * Template method which generates the method <code>getValue()</code> for typedef,
+     * which base type is BitsDefinition.
+     *
+     * @return string with the <code>getValue()</code> method definition in JAVA format
+     */
+    def protected generateGetValueForBitsTypeDef() '''
+
+        public boolean[] getValue() {
+            return new boolean[]{
+            «FOR property: genTO.properties SEPARATOR ','»
+                 «property.fieldName»
+            «ENDFOR»
+            };
+        }
     '''
 
     def private generateLengthMethod(String methodName, String varName) '''