BUG-832 Fix deserialization of Empty type leaves.
authorMaros Marsalek <mmarsale@cisco.com>
Wed, 30 Apr 2014 11:29:09 +0000 (13:29 +0200)
committerMaros Marsalek <mmarsale@cisco.com>
Tue, 6 May 2014 07:07:34 +0000 (09:07 +0200)
Signed-off-by: Maros Marsalek <mmarsale@cisco.com>
Change-Id: I4474f6790a7c17b9f3a0b5fb54a9fdc93dc0e72c

code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/TransformerGenerator.xtend

index 5c5b7f627c06bcd45d629659e10bcdd510b0ddfc..f399f767b4d14e94a70b823d87e8db79d3c44e6f 100644 (file)
@@ -613,6 +613,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             «QName.name» _localQName = QNAME;
+
                             if($2 == null) {
                             return null;
                             }
@@ -764,7 +765,7 @@ class TransformerGenerator {
     private def dispatch String deserializeBodyImpl(GeneratedType type, SchemaNode node, InstanceIdentifier<?> bindingId) '''
         {
             «QName.name» _localQName = «QName.name».create($1,QNAME.getLocalName());
-        
+
             if($2 == null) {
             return null;
             }
@@ -860,7 +861,7 @@ class TransformerGenerator {
                 _hasNext = _iterator.hasNext();
             }
         }
-        
+
         ////System.out.println(" list" + «propertyName»);
     '''
 
@@ -952,7 +953,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             ////System.out.println("«inputType.simpleName»#toDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
@@ -977,7 +978,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             ////System.out.println("«inputType.simpleName»#fromDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
@@ -1025,7 +1026,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             ////System.out.println("«inputType.simpleName»#toDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
@@ -1040,7 +1041,7 @@ class TransformerGenerator {
                                 }
                             «ENDIF»
                             «ENDFOR»
-                        
+
                             return null;
                         }
                     '''
@@ -1057,7 +1058,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             ////System.out.println("«inputType.simpleName»#fromDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
@@ -1105,14 +1106,14 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             ////System.out.println("«inputType.simpleName»#toDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
                             «typeSpec.resolvedName» _encapsulatedValue = («typeSpec.resolvedName») $1;
                             «HashSet.resolvedName» _value = new «HashSet.resolvedName»();
                             //System.out.println("«inputType.simpleName»#toDomValue:Enc: "+_encapsulatedValue);
-                        
+
                             «FOR bit : typeDef.bits»
                             «val getter = bit.getterName()»
                             if(Boolean.TRUE.equals(_encapsulatedValue.«getter»())) {
@@ -1121,7 +1122,7 @@ class TransformerGenerator {
                             «ENDFOR»
                             «Set.resolvedName» _domValue =  «Collections.resolvedName».unmodifiableSet(_value);
                             //System.out.println("«inputType.simpleName»#toDomValue:DeEnc: "+_domValue);
-                        
+
                             return _domValue;
                         }
                     '''
@@ -1139,7 +1140,7 @@ class TransformerGenerator {
                     bodyChecked = '''
                         {
                             //System.out.println("«inputType.simpleName»#fromDomValue: "+$1);
-                        
+
                             if($1 == null) {
                             return null;
                             }
@@ -1147,7 +1148,7 @@ class TransformerGenerator {
                             «FOR bit : sortedBits»
                             Boolean «bit.propertyName» = Boolean.valueOf(_domValue.contains("«bit.name»"));
                             «ENDFOR»
-                        
+
                             return new «inputType.resolvedName»(«FOR bit : sortedBits SEPARATOR ","»«bit.propertyName»«ENDFOR»);
                         }
                     '''
@@ -1333,6 +1334,12 @@ class TransformerGenerator {
             return '''(«InstanceIdentifier.name») «INSTANCE_IDENTIFIER_CODEC».deserialize(«domParameter»)'''
         } else if (CLASS_TYPE.equals(type)) {
             return '''(«Class.name») «IDENTITYREF_CODEC».deserialize(«domParameter»)'''
+        } else if (typeDef!=null && typeDef instanceof EmptyTypeDefinition) {
+            if(domParameter == null) {
+                return ''' Boolean.FALSE '''
+            } else {
+                return ''' Boolean.TRUE '''
+            }
         }
         return '''(«type.resolvedName») «domParameter»'''
 
@@ -1477,7 +1484,7 @@ class TransformerGenerator {
 
     private def dispatch CharSequence serializeProperty(LeafSchemaNode schema, Type type, String propertyName) '''
         «type.resolvedName» «propertyName» = value.«propertyName»();
-        
+
         if(«propertyName» != null) {
             «QName.name» _qname = «QName.name».create(_resultName,"«schema.QName.localName»");
             Object _propValue = «serializeValue(type, propertyName, schema.type)»;
@@ -1495,19 +1502,19 @@ class TransformerGenerator {
     private def dispatch serializeValue(Enumeration type, String parameter, TypeDefinition<?> typeDefinition) {
         '''«type.valueSerializer(typeDefinition).resolvedName».toDomValue(«parameter»)'''
     }
-    
+
     private def dispatch serializeValue(Type type, String parameter, EmptyTypeDefinition typeDefinition) {
         '''(«parameter».booleanValue() ? "" : null)'''
     }
-    
+
     private def dispatch serializeValue(Type signature, String property, TypeDefinition<?> typeDefinition) {
         serializeValue(signature,property)
     }
-    
+
     private def dispatch serializeValue(Type signature, String property, Void typeDefinition) {
         serializeValue(signature,property)
     }
-    
+
     private def dispatch serializeValue(Type signature, String property) {
         if (INSTANCE_IDENTIFIER == signature) {
             return '''«INSTANCE_IDENTIFIER_CODEC».serialize(«property»)'''