Bug 1475: Correctly handle case of typedef that extends boolean 35/9635/1
authorEd Warnicke <eaw@cisco.com>
Sun, 3 Aug 2014 20:09:14 +0000 (15:09 -0500)
committerEd Warnicke <eaw@cisco.com>
Sun, 3 Aug 2014 20:09:14 +0000 (15:09 -0500)
Change-Id: I892ddb39b56cbd17ea22f07a94f4c2c2dd9ed448
Signed-off-by: Ed Warnicke <eaw@cisco.com>
code-generator/binding-java-api-generator/src/main/java/org/opendaylight/yangtools/sal/java/api/generator/UnionTemplate.xtend

index 94cfe1e8d05cec8076711637a6da1129e06d8fed..2b56179964c464b17ec2259dd5a4835a14d32d4d 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.sal.java.api.generator
 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject
 import java.beans.ConstructorProperties
 import org.opendaylight.yangtools.sal.binding.model.api.Enumeration
+import static org.opendaylight.yangtools.binding.generator.util.Types.*
 
 /**
  * Template for generating JAVA class. 
@@ -77,6 +78,15 @@ class UnionTemplate extends ClassTemplate {
                                 «ELSEIF propRet instanceof GeneratedTransferObject && (propRet as GeneratedTransferObject).unionType»
                                     ««« union type
                                     this.«other.fieldName» = «property.fieldName».getValue();
+                                «ELSEIF propRet instanceof GeneratedTransferObject // Is it a GeneratedTransferObject
+                                        && (propRet as GeneratedTransferObject).typedef  // Is it a typedef
+                                        && (propRet as GeneratedTransferObject).properties != null 
+                                        && !(propRet as GeneratedTransferObject).properties.empty 
+                                        && ((propRet as GeneratedTransferObject).properties.size == 1) 
+                                        && (propRet as GeneratedTransferObject).properties.get(0).name.equals("value") 
+                                        && BOOLEAN.equals((propRet as GeneratedTransferObject).properties.get(0).returnType)» // And the property value is of type boolean
+                                    ««« generated boolean typedef
+                                    this.«other.fieldName» = «property.fieldName».isValue().toString().toCharArray();
                                 «ELSE»
                                     ««« generated type
                                     this.«other.fieldName» = «property.fieldName».getValue().toString().toCharArray();