Bug 309 : Fixed incorrect serialization of instance identifier
[yangtools.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / RuntimeGeneratedMappingServiceImpl.xtend
index 2ee19e89c44bfc9ea43b069ff05322fffb090eb9..f14b15eba756d965a496d1f9527f77ea29992e0d 100644 (file)
@@ -143,9 +143,9 @@ class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMappingSer
         val key = toDataDom(entry.key)
         var CompositeNode data;
         if(Augmentation.isAssignableFrom(entry.key.targetType)) {
-            data = toCompositeNodeImpl(key,entry.value);
+            data = toCompositeNodeImplAugument(key,entry.value);
         } else {
-          data = toCompositeNodeImpl(entry.value);
+          data = toCompositeNodeImpl(key,entry.value);
         }
         return new SimpleEntry(key, data);
 
@@ -162,9 +162,18 @@ class RuntimeGeneratedMappingServiceImpl implements BindingIndependentMappingSer
         val ret = codec.serialize(new ValueWithQName(null, object));
         return ret as CompositeNode;
     }
+    
+    private def CompositeNode toCompositeNodeImpl(org.opendaylight.yangtools.yang.data.api.InstanceIdentifier identifier,DataObject object) {
+        val last = identifier.path.last;
+        val cls = object.implementedInterface;
+        waitForSchema(cls);
+        val codec = registry.getCodecForDataObject(cls) as DataContainerCodec<DataObject>;
+        val ret = codec.serialize(new ValueWithQName(last.nodeType, object));
+        return ret as CompositeNode;
+    }
 
 
-    private def CompositeNode toCompositeNodeImpl(org.opendaylight.yangtools.yang.data.api.InstanceIdentifier identifier,DataObject object) {
+    private def CompositeNode toCompositeNodeImplAugument(org.opendaylight.yangtools.yang.data.api.InstanceIdentifier identifier,DataObject object) {
 
         //val cls = object.implementedInterface;
         //waitForSchema(cls);