BUG-7759: return deserialized type 97/53297/2
authorRobert Varga <rovarga@cisco.com>
Tue, 14 Mar 2017 19:45:19 +0000 (20:45 +0100)
committerRobert Varga <rovarga@cisco.com>
Tue, 14 Mar 2017 22:31:51 +0000 (23:31 +0100)
Union codec should not be returning the string representation,
but rather the proper deserialized type.

Change-Id: I4c452ecd59ee72b9b69ead39c3c36868bcd74444
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/UnionStringCodec.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/codecs/UnionCodecStringTest.java

index 5dea5939e7dc022c3650895fbe2b19bd4f699317..1ec5ba5c2551aada37e232cbbca36b801d1ed648 100644 (file)
@@ -55,8 +55,7 @@ final class UnionStringCodec extends TypeDefinitionAwareCodec<Object, UnionTypeD
             }
 
             try {
-                typeAwareCodec.deserialize(stringRepresentation);
-                return stringRepresentation;
+                return typeAwareCodec.deserialize(stringRepresentation);
             } catch (final Exception e) {
                 LOG.debug("Value {} did not matched representation for {}",stringRepresentation,type,e);
                 // invalid - try the next union type.
index 3819cf03ade63ffca5bbdd9a33d3781b464aaf42..e210b6acb63e1ee3638a6098803d4a778414e59d 100644 (file)
@@ -48,7 +48,7 @@ public class UnionCodecStringTest {
         assertEquals("serialize", "123", codec.serialize("123"));
         assertEquals("serialize", "123", codec.serialize(123));
         assertEquals("serialize", "", codec.serialize(null));
-        assertEquals("serialize", "", codec.serialize("" ));
+        assertEquals("serialize", "", codec.serialize(""));
     }
 
     @SuppressWarnings("unchecked")
@@ -59,10 +59,10 @@ public class UnionCodecStringTest {
                 UnionCodec.class);
 
         assertEquals("deserialize", "enum1", codec.deserialize("enum1"));
-        assertEquals("deserialize", "123", codec.deserialize("123"));
-        assertEquals("deserialize", "-123", codec.deserialize("-123"));
-        assertEquals("deserialize", "41234567890", codec.deserialize("41234567890"));
-        assertEquals("deserialize", "", codec.deserialize(""));
+        assertEquals("deserialize", 123, codec.deserialize("123"));
+        assertEquals("deserialize", -123, codec.deserialize("-123"));
+        assertEquals("deserialize", 41234567890L, codec.deserialize("41234567890"));
+        assertEquals("deserialize", null, codec.deserialize(""));
         assertEquals("deserialize", null, codec.deserialize(null));
 
         deserializeWithExpectedIllegalArgEx(codec, "enum3");