summaryrefslogtreecommitdiffstats
path: root/utils/src
diff options
context:
space:
mode:
Diffstat (limited to 'utils/src')
-rw-r--r--utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java6
-rw-r--r--utils/src/test/java/org/onap/policy/common/utils/coder/StandardCoderTest.java26
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;
+ }
}