diff options
author | Jim Hahn <jrh3@att.com> | 2020-04-03 09:44:26 -0400 |
---|---|---|
committer | Jim Hahn <jrh3@att.com> | 2020-04-06 09:41:59 -0400 |
commit | a56d3929f2387252525577fb36f9e03933064b8f (patch) | |
tree | 4b671549b5f1c0513c31d77baa19821e422f41e7 /utils/src/main/java/org/onap/policy/common/utils/coder | |
parent | 7da3ddfa40de2f683a2d423d62b78a8d001108eb (diff) |
Address sonar issues in common
Addressed the following sonar issues:
- missing assertion in junit test case
- disable sonars about setAccessible() as it's required for jackson
emulation
- sleep in junit
- don't use wild-cards (e.g., "*") with java.util Pattern
- use re2j instead of java.util Pattern
- use String methods (e.g., startsWith())
- duplicate method bodies
- duplicate code in Coder classes
- string concatenation in logger calls
- UTF-8 encoding
- return primitive instead of boxed primitive
- add assertion to tests
- renamed support methods from doTestXxx to verifyXxx
- cognitive complexity
- use AtomicRef instead of volatile
- use specific Functionals (e.g., IntConsumer)
- function always returns the same value
- serializable vs transient
Issue-ID: POLICY-2305
Change-Id: I08eb7aa495a80bdc1d26827ba17a7946c83b9828
Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'utils/src/main/java/org/onap/policy/common/utils/coder')
5 files changed, 47 insertions, 93 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 2548dea4..7f5e3b85 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 @@ -40,8 +40,6 @@ import java.io.Writer; import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; -import lombok.AccessLevel; -import lombok.Getter; import org.onap.policy.common.gson.DoubleConverter; import org.onap.policy.common.gson.GsonMessageBodyHandler; @@ -53,28 +51,44 @@ public class StandardCoder implements Coder { /** * Gson object used to encode and decode messages. */ - @Getter(AccessLevel.PROTECTED) - private static final Gson GSON; + private static final Gson GSON_STD; /** * Gson object used to encode messages in "pretty" format. */ - @Getter(AccessLevel.PROTECTED) - private static final Gson GSON_PRETTY; + private static final Gson GSON_STD_PRETTY; static { GsonBuilder builder = GsonMessageBodyHandler.configBuilder( new GsonBuilder().registerTypeAdapter(StandardCoderObject.class, new StandardTypeAdapter())); - GSON = builder.create(); - GSON_PRETTY = builder.setPrettyPrinting().create(); + GSON_STD = builder.create(); + GSON_STD_PRETTY = builder.setPrettyPrinting().create(); } /** + * Gson object used to encode and decode messages. + */ + protected final Gson gson; + + /** + * Gson object used to encode messages in "pretty" format. + */ + protected final Gson gsonPretty; + + /** * Constructs the object. */ public StandardCoder() { - super(); + this(GSON_STD, GSON_STD_PRETTY); + } + + /** + * Constructs the object. + */ + protected StandardCoder(Gson gson, Gson gsonPretty) { + this.gson = gson; + this.gsonPretty = gsonPretty; } @Override @@ -213,13 +227,13 @@ public class StandardCoder implements Coder { * @return the encoded object */ protected String toPrettyJson(Object object) { - return GSON_PRETTY.toJson(object); + return gsonPretty.toJson(object); } @Override public StandardCoderObject toStandard(Object object) throws CoderException { try { - return new StandardCoderObject(GSON.toJsonTree(object)); + return new StandardCoderObject(gson.toJsonTree(object)); } catch (RuntimeException e) { throw new CoderException(e); @@ -229,7 +243,7 @@ public class StandardCoder implements Coder { @Override public <T> T fromStandard(StandardCoderObject sco, Class<T> clazz) throws CoderException { try { - return GSON.fromJson(sco.getData(), clazz); + return gson.fromJson(sco.getData(), clazz); } catch (RuntimeException e) { throw new CoderException(e); @@ -287,7 +301,7 @@ public class StandardCoder implements Coder { * @return a json element representing the object */ protected JsonElement toJsonTree(Object object) { - return GSON.toJsonTree(object); + return gson.toJsonTree(object); } /** @@ -297,7 +311,7 @@ public class StandardCoder implements Coder { * @return a json string representing the object */ protected String toJson(Object object) { - return GSON.toJson(object); + return gson.toJson(object); } /** @@ -307,7 +321,7 @@ public class StandardCoder implements Coder { * @param object object to be encoded */ protected void toJson(Writer target, Object object) { - GSON.toJson(object, object.getClass(), target); + gson.toJson(object, object.getClass(), target); } /** @@ -318,7 +332,7 @@ public class StandardCoder implements Coder { * @return the object represented by the given json element */ protected <T> T fromJson(JsonElement json, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(json, clazz)); + return convertFromDouble(clazz, gson.fromJson(json, clazz)); } /** @@ -329,7 +343,7 @@ public class StandardCoder implements Coder { * @return the object represented by the given json string */ protected <T> T fromJson(String json, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(json, clazz)); + return convertFromDouble(clazz, gson.fromJson(json, clazz)); } /** @@ -340,7 +354,7 @@ public class StandardCoder implements Coder { * @return the object represented by the given json string */ protected <T> T fromJson(Reader source, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(source, clazz)); + return convertFromDouble(clazz, gson.fromJson(source, clazz)); } /** diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillis.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillis.java index fbb53b91..27b239bb 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillis.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderInstantAsMillis.java @@ -22,12 +22,7 @@ package org.onap.policy.common.utils.coder; import com.google.gson.Gson; import com.google.gson.GsonBuilder; -import com.google.gson.JsonElement; -import java.io.Reader; -import java.io.Writer; import java.time.Instant; -import lombok.AccessLevel; -import lombok.Getter; import org.onap.policy.common.gson.GsonMessageBodyHandler; import org.onap.policy.common.gson.InstantAsMillisTypeAdapter; @@ -40,14 +35,12 @@ public class StandardCoderInstantAsMillis extends StandardCoder { /** * Gson object used to encode and decode messages. */ - @Getter(AccessLevel.PROTECTED) - private static final Gson GSON; + private static final Gson GSON_INSTANT; /** * Gson object used to encode messages in "pretty" format. */ - @Getter(AccessLevel.PROTECTED) - private static final Gson GSON_PRETTY; + private static final Gson GSON_INSTANT_PRETTY; static { GsonBuilder builder = GsonMessageBodyHandler @@ -55,71 +48,14 @@ public class StandardCoderInstantAsMillis extends StandardCoder { new StandardTypeAdapter())) .registerTypeAdapter(Instant.class, new InstantAsMillisTypeAdapter()); - GSON = builder.create(); - GSON_PRETTY = builder.setPrettyPrinting().create(); + GSON_INSTANT = builder.create(); + GSON_INSTANT_PRETTY = builder.setPrettyPrinting().create(); } /** * Constructs the object. */ public StandardCoderInstantAsMillis() { - super(); - } - - @Override - protected String toPrettyJson(Object object) { - return GSON_PRETTY.toJson(object); - } - - @Override - public StandardCoderObject toStandard(Object object) throws CoderException { - try { - return new StandardCoderObject(GSON.toJsonTree(object)); - - } catch (RuntimeException e) { - throw new CoderException(e); - } - } - - @Override - public <T> T fromStandard(StandardCoderObject sco, Class<T> clazz) throws CoderException { - try { - return GSON.fromJson(sco.getData(), clazz); - - } catch (RuntimeException e) { - throw new CoderException(e); - } - } - - // the remaining methods are wrappers that can be overridden by junit tests - - @Override - protected JsonElement toJsonTree(Object object) { - return GSON.toJsonTree(object); - } - - @Override - protected String toJson(Object object) { - return GSON.toJson(object); - } - - @Override - protected void toJson(Writer target, Object object) { - GSON.toJson(object, object.getClass(), target); - } - - @Override - protected <T> T fromJson(JsonElement json, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(json, clazz)); - } - - @Override - protected <T> T fromJson(String json, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(json, clazz)); - } - - @Override - protected <T> T fromJson(Reader source, Class<T> clazz) { - return convertFromDouble(clazz, GSON.fromJson(source, clazz)); + super(GSON_INSTANT, GSON_INSTANT_PRETTY); } } diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java index 7f0f0580..5d682638 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java @@ -35,7 +35,11 @@ public class StandardCoderObject implements Serializable { /** * Data wrapped by this. */ - private final JsonElement data; + /* + * this should not be transient, but since it isn't serializable, we're stuck with it + * until there's time to address the issue + */ + private final transient JsonElement data; /** * Constructs the object. diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java index 85505a98..647a6155 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardValCoder.java @@ -65,7 +65,7 @@ public class StandardValCoder extends StandardCoder { * The validator strips off the "pretty" stuff (i.e., spaces), thus we have to validate and generate the pretty * JSON in separate steps. */ - getGSON().toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, new StringWriter())); + gson.toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, new StringWriter())); return super.toPrettyJson(object); } @@ -79,18 +79,18 @@ public class StandardValCoder extends StandardCoder { @Override protected void toJson(@NonNull Writer target, @NonNull Object object) { - getGSON().toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, target)); + gson.toJson(object, object.getClass(), validatorApi.createJsonWriter(validator, target)); } @Override protected <T> T fromJson(@NonNull Reader source, @NonNull Class<T> clazz) { - return convertFromDouble(clazz, getGSON().fromJson(validatorApi.createJsonReader(validator, source), clazz)); + return convertFromDouble(clazz, gson.fromJson(validatorApi.createJsonReader(validator, source), clazz)); } @Override protected <T> T fromJson(String json, Class<T> clazz) { StringReader reader = new StringReader(json); - return convertFromDouble(clazz, getGSON().fromJson(validatorApi.createJsonReader(validator, reader), clazz)); + return convertFromDouble(clazz, gson.fromJson(validatorApi.createJsonReader(validator, reader), clazz)); } /** diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java index 1bcf6ac0..c4375968 100644 --- a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java +++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardYamlCoder.java @@ -34,7 +34,7 @@ public class StandardYamlCoder extends StandardCoder { * Constructs the object. */ public StandardYamlCoder() { - translator = new YamlJsonTranslator(getGSON()); + translator = new YamlJsonTranslator(gson); } @Override |