diff options
Diffstat (limited to 'utils/src')
-rw-r--r-- | utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java | 6 | ||||
-rw-r--r-- | utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java | 26 |
2 files changed, 30 insertions, 2 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java index 69a211b6..1c65be82 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java @@ -38,6 +38,7 @@ import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.nio.charset.StandardCharsets; +import org.onap.policy.common.gson.MapDoubleAdapterFactory; /** * JSON encoder and decoder using the "standard" mechanism, which is currently gson. @@ -47,8 +48,9 @@ public class StandardCoder implements Coder { /** * Gson object used to encode and decode messages. */ - private static final Gson GSON = new GsonBuilder() - .registerTypeAdapter(StandardCoderObject.class, new StandardTypeAdapter()).create(); + private static final Gson GSON = + new GsonBuilder().registerTypeAdapter(StandardCoderObject.class, new StandardTypeAdapter()) + .registerTypeAdapterFactory(new MapDoubleAdapterFactory()).create(); /** * Constructs the object. diff --git a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java index 7583d776..e8e3bb60 100644 --- a/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java +++ b/utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java @@ -43,7 +43,9 @@ import java.io.Writer; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.junit.Before; import org.junit.Test; @@ -235,6 +237,26 @@ public class StandardCoderTest { assertThatThrownBy(() -> coder.fromJson(new StringReader("["), StandardCoderObject.class)); } + @Test + public void testMapDouble() throws Exception { + MyMap map = new MyMap(); + map.props = new HashMap<>(); + map.props.put("plainString", "def"); + map.props.put("negInt", -10); + map.props.put("doubleVal", 12.5); + map.props.put("posLong", 100000000000L); + + String json = coder.encode(map); + + map.props.clear(); + map = coder.decode(json, MyMap.class); + + assertEquals("def", map.props.get("plainString")); + assertEquals(-10, map.props.get("negInt")); + assertEquals(100000000000L, map.props.get("posLong")); + assertEquals(12.5, map.props.get("doubleVal")); + } + private static class MyObject { private String abc; @@ -244,4 +266,8 @@ public class StandardCoderTest { return "MyObject [abc=" + abc + "]"; } } + + private static class MyMap { + private Map<String, Object> props; + } } |