BUG-1196: fixed bug in choice case codec.
[yangtools.git] / code-generator / binding-generator-impl / src / main / java / org / opendaylight / yangtools / sal / binding / generator / impl / TransformerGenerator.xtend
index 8821411022763d504a06e3fd9f1078005b898ee0..792b0b9cc3d1cc470d4d463d7dfb7a79e2b30102 100644 (file)
@@ -625,8 +625,7 @@ class TransformerGenerator extends AbstractTransformerGenerator {
                 //staticQNameField(inputType);
                 staticField(it, INSTANCE_IDENTIFIER_CODEC, BindingCodec)
                 staticField(it, IDENTITYREF_CODEC, BindingCodec)
-                staticField(it, CLASS_TO_CASE_MAP, Map)
-                staticField(it, COMPOSITE_TO_CASE, Map)
+                staticField(it, DISPATCH_CODEC, BindingCodec)
                 //staticField(it,QNAME_TO_CASE_MAP,BindingCodec)
                 implementsType(BINDING_CODEC)
                 method(List, "toDomStatic", #[QName, Object]) [
@@ -636,14 +635,11 @@ class TransformerGenerator extends AbstractTransformerGenerator {
                             if($2 == null) {
                                 return null;
                             }
-                            «DataObject.name» _baValue = («DataObject.name») $2;
-                            Class _baClass = _baValue.getImplementedInterface();
-                            «BINDING_CODEC.name» _codec =  «CLASS_TO_CASE_MAP».get(_baClass);
-                            if(_codec == null) {
-                                return null;
+                            if («DISPATCH_CODEC» == null) {
+                                throw new «IllegalStateException.name»("Implementation of codec was not initialized.");
                             }
-                            java.util.Map.Entry _input = new «SimpleEntry.name»($1,_baValue);
-                            Object _ret =  _codec.serialize(_input);
+                            java.util.Map.Entry _input = new «SimpleEntry.name»($1,$2);
+                            Object _ret =  «DISPATCH_CODEC».serialize(_input);
                             ////System.out.println("«typeSpec.name»#toDomStatic: " + _ret);
                             return («List.name») _ret;
                         }
@@ -658,11 +654,10 @@ class TransformerGenerator extends AbstractTransformerGenerator {
                     modifiers = PUBLIC + FINAL + STATIC
                     bodyChecked = '''
                         {
-                            «BINDING_CODEC.name» _codec = («BINDING_CODEC.name») «COMPOSITE_TO_CASE».get($2);
-                            if(_codec != null) {
-                                return _codec.deserialize(new «SimpleEntry.name»($1,$2),$3);
+                            if («DISPATCH_CODEC» == null) {
+                                throw new «IllegalStateException.name»("Implementation of codec was not initialized.");
                             }
-                            return null;
+                            return «DISPATCH_CODEC».deserialize($2,$3);
                         }
                     '''
                 ]