diff options
author | Jim Hahn <jrh3@att.com> | 2019-04-10 20:08:30 -0400 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2019-04-11 08:58:10 -0400 |
commit | ea29ed1a002ab282a36761448575ffc2e517284d (patch) | |
tree | 1127a1d9acd8899b5d39323b56465455e26320fe /utils/src/main/java | |
parent | f5586edf6bb68016b4259829b57ca7e3528b126a (diff) |
Don't map JSON values to Double
By default, gson treats all numbers as Double when placed into a
generic Map. This is not backward compatible with existing policy
APIs. Added a type adapter that walks Map objects and converts the
Double values to Integer or Long, where possible.
Made this the default behavior in the GsonMessageBodyHandler, the
JacksonHandler, and the StandardCoder.
Also fixed a couple of checkstyle errors in the gson project.
Change-Id: I9ac0c77e6592d1c039646f0662c077b77a1e9aaf
Issue-ID: POLICY-1542
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'utils/src/main/java')
-rw-r--r-- | utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoder.java | 6 |
1 files changed, 4 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. |