Test Replace Jackson with GSON 51/30951/2
authorYiLi <li.yi101@zte.com.cn>
Fri, 9 Feb 2018 01:53:54 +0000 (09:53 +0800)
committerYiLi <li.yi101@zte.com.cn>
Fri, 9 Feb 2018 02:37:19 +0000 (10:37 +0800)
Change-Id: Id4c2ed81e7dbd5546940ff50363555336d55b75b
Issue-ID: HOLMES-115
Signed-off-by: YiLi <li.yi101@zte.com.cn>
holmes-actions/pom.xml
holmes-actions/src/main/java/org/onap/holmes/common/api/entity/AlarmsCorrelation.java
holmes-actions/src/main/java/org/onap/holmes/common/api/entity/CorrelationResult.java
holmes-actions/src/main/java/org/onap/holmes/common/api/entity/CorrelationRule.java
holmes-actions/src/main/java/org/onap/holmes/common/api/entity/ServiceNode.java
holmes-actions/src/main/java/org/onap/holmes/common/api/entity/ServiceRegisterEntity.java
holmes-actions/src/main/java/org/onap/holmes/common/dmaap/DmaapService.java
holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java
holmes-actions/src/main/java/org/onap/holmes/common/utils/Md5Util.java
holmes-actions/src/test/java/org/onap/holmes/common/utils/JacksonUtilTest.java
holmes-actions/src/test/java/org/onap/holmes/common/utils/Md5UtilTest.java

index 3a724d0..850a03a 100644 (file)
         <dependency>\r
             <groupId>org.onap.msb.java-sdk</groupId>\r
             <artifactId>msb-java-sdk</artifactId>\r
+            <!--<exclusions>-->\r
+                <!--<exclusion>-->\r
+                    <!--<groupId>com.eclipsesource.jaxrs</groupId>-->\r
+                    <!--<artifactId>jersey-all</artifactId>-->\r
+                <!--</exclusion>-->\r
+            <!--</exclusions>-->\r
         </dependency>\r
         <dependency>\r
             <groupId>org.apache.geronimo.specs</groupId>\r
         <dependency>\r
             <groupId>io.dropwizard</groupId>\r
             <artifactId>dropwizard-core</artifactId>\r
+            <exclusions>\r
+                <exclusion>\r
+                    <groupId>com.fasterxml.jackson.core</groupId>\r
+                    <artifactId>jackson-core</artifactId>\r
+                </exclusion>\r
+                <exclusion>\r
+                    <groupId>com.fasterxml.jackson.core</groupId>\r
+                    <artifactId>jackson-databind</artifactId>\r
+                </exclusion>\r
+                <exclusion>\r
+                    <groupId>com.fasterxml.jackson.dataformat</groupId>\r
+                    <artifactId>jackson-dataformat-yaml</artifactId>\r
+                </exclusion>\r
+            </exclusions>\r
         </dependency>\r
         <dependency>\r
             <groupId>io.swagger</groupId>\r
index ee32be2..4cbd6bf 100644 (file)
@@ -15,7 +15,7 @@
  */\r
 package org.onap.holmes.common.api.entity;\r
 \r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
+import com.google.gson.annotations.SerializedName;\r
 import java.util.Date;\r
 import lombok.Data;\r
 import lombok.NoArgsConstructor;\r
@@ -24,30 +24,27 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor\r
 public class AlarmsCorrelation {\r
 \r
-    @JsonProperty(value = "ruleid")\r
+    @SerializedName(value = "ruleid")\r
     private String ruleId;\r
 \r
-    @JsonProperty(value = "ruleinfo")\r
+    @SerializedName(value = "ruleinfo")\r
     private String ruleInfo;\r
 \r
-    @JsonProperty(value = "resulttype")\r
+    @SerializedName(value = "resulttype")\r
     private byte resultType;\r
 \r
-    @JsonProperty(value = "createtime")\r
+    @SerializedName(value = "createtime")\r
     private Date createTime;\r
 \r
-    @JsonProperty(value = "parentalarmid")\r
+    @SerializedName(value = "parentalarmid")\r
     private long parentAlarmId;\r
 \r
-    @JsonProperty(value = "childalarmid")\r
+    @SerializedName(value = "childalarmid")\r
     private long childAlarmId;\r
 \r
-    @JsonProperty(defaultValue = "-1")\r
     private long reserve1 = -1;\r
 \r
-    @JsonProperty(defaultValue = "-1")\r
     private long reserve2 = -1;\r
 \r
-    @JsonProperty(defaultValue = "-1")\r
     private long reserve3 = -1;\r
 }\r
index 6802696..f3e2562 100644 (file)
  */\r
 package org.onap.holmes.common.api.entity;\r
 \r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
 import java.io.Serializable;\r
-import org.onap.holmes.common.api.stat.Alarm;\r
-\r
 import lombok.Getter;\r
 import lombok.NoArgsConstructor;\r
 import lombok.Setter;\r
 import lombok.ToString;\r
+import org.onap.holmes.common.api.stat.Alarm;\r
 \r
 @Setter\r
 @Getter\r
@@ -30,15 +28,11 @@ import lombok.ToString;
 @ToString\r
 public class CorrelationResult implements Serializable{\r
 \r
-  @JsonProperty\r
   private String ruleId;\r
 \r
-  @JsonProperty\r
   private long createTimeL;\r
 \r
-  @JsonProperty\r
   private byte resultType;\r
 \r
-  @JsonProperty\r
   private Alarm[] affectedAlarms;\r
 }\r
index eb9273a..0343dfa 100644 (file)
@@ -15,7 +15,7 @@
  */\r
 package org.onap.holmes.common.api.entity;\r
 \r
-import com.fasterxml.jackson.annotation.JsonProperty;\r
+import com.google.gson.annotations.SerializedName;\r
 import java.util.Date;\r
 import java.util.Properties;\r
 import lombok.Getter;\r
@@ -25,35 +25,36 @@ import lombok.Setter;
 @Setter\r
 public class CorrelationRule {\r
 \r
-    @JsonProperty(value = "ruleid")\r
+    @SerializedName(value = "ruleid")\r
     private String rid;\r
-    @JsonProperty(value = "rulename")\r
+    @SerializedName(value = "rulename")\r
     private String name;\r
-    @JsonProperty\r
+\r
     private String description;\r
-    @JsonProperty\r
+\r
     private int enabled;\r
-    @JsonProperty\r
+\r
     private long templateID;\r
+\r
     private String engineID;\r
-    @JsonProperty\r
+\r
     private String engineType;\r
-    @JsonProperty\r
+\r
     private String creator;\r
-    @JsonProperty\r
+\r
     private String modifier;\r
-    @JsonProperty\r
+\r
     private Properties params;\r
-    @JsonProperty\r
+\r
     private String content;\r
-    @JsonProperty\r
+\r
     private String vendor;\r
-    @JsonProperty(value = "createtime")\r
+    @SerializedName(value = "createtime")\r
     private Date createTime;\r
-    @JsonProperty(value = "updatetime")\r
+    @SerializedName(value = "updatetime")\r
     private Date updateTime;\r
-    @JsonProperty(value = "package")\r
+    @SerializedName(value = "package")\r
     private String packageName;\r
-    @JsonProperty(value = "controlloopname")\r
+    @SerializedName(value = "controlloopname")\r
     private String closedControlLoopName;\r
 }\r
index d456910..2c2b793 100644 (file)
@@ -17,7 +17,6 @@
 \r
 package org.onap.holmes.common.api.entity;\r
 \r
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;\r
 import lombok.AllArgsConstructor;\r
 import lombok.Data;\r
 import lombok.Getter;\r
@@ -27,7 +26,6 @@ import lombok.Setter;
 @Data\r
 @NoArgsConstructor\r
 @AllArgsConstructor\r
-@JsonIgnoreProperties(ignoreUnknown = true)\r
 @Getter\r
 @Setter\r
 public class ServiceNode {\r
index 7804082..f5dca01 100644 (file)
@@ -16,7 +16,6 @@
 \r
 package org.onap.holmes.common.api.entity;\r
 \r
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;\r
 import java.util.ArrayList;\r
 import java.util.List;\r
 import lombok.AllArgsConstructor;\r
@@ -28,7 +27,6 @@ import lombok.Setter;
 @Data\r
 @NoArgsConstructor\r
 @AllArgsConstructor\r
-@JsonIgnoreProperties(ignoreUnknown = true)\r
 @Setter\r
 @Getter\r
 public class ServiceRegisterEntity {\r
index 65058c5..240f09b 100644 (file)
@@ -15,7 +15,6 @@
  */
 package org.onap.holmes.common.dmaap;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import java.util.Optional;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
@@ -31,7 +30,7 @@ import org.onap.holmes.common.dcae.DcaeConfigurationsCache;
 import org.onap.holmes.common.dmaap.entity.PolicyMsg;
 import org.onap.holmes.common.dmaap.entity.PolicyMsg.EVENT_STATUS;
 import org.onap.holmes.common.exception.CorrelationException;
-import org.onap.holmes.common.utils.JacksonUtil;
+import org.onap.holmes.common.utils.GsonUtil;
 
 @Slf4j
 @Service
@@ -48,11 +47,9 @@ public class DmaapService {
             publisher.setUrl(DcaeConfigurationsCache.getPubSecInfo(dmaapConfigKey).getDmaapInfo()
                     .getTopicUrl());
             publisher.publish(policyMsg);
-            log.info("send policyMsg: " + JacksonUtil.beanToJson(policyMsg));
+            log.info("send policyMsg: " + GsonUtil.beanToJson(policyMsg));
         } catch (CorrelationException e) {
             log.error("Failed to publish the control loop event to DMaaP", e);
-        } catch (JsonProcessingException e) {
-            log.info("Failed to convert the control loop event to json");
         } catch (NullPointerException e) {
             log.error("DMaaP configurations do not exist!");
         }
index 6f6e8f3..452aaf8 100644 (file)
 package org.onap.holmes.common.utils;
 
 import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonParseException;
 import com.google.gson.reflect.TypeToken;
+import java.lang.reflect.Type;
 import java.util.List;
 import java.util.Map;
 
 public class GsonUtil {
     private static Gson gson = null;
     static {
-        if (gson == null) {;
-            gson = new Gson();
+        if (gson == null) {
+            gson = new GsonBuilder()
+                    .registerTypeAdapter(Integer.class, new JsonDeserializer<Integer>() {
+                        @Override
+                        public Integer deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
+                            try {
+                                return json.getAsInt();
+                            } catch (NumberFormatException e) {
+                                return 0;
+                            }
+                        }
+                    })
+                    .create();
         }
     }
 
     private GsonUtil() {
     }
+
+
     public static String beanToJson(Object object) {
         String gsonString = null;
         if (gson != null) {
index 1c06b52..c630239 100644 (file)
 
 package org.onap.holmes.common.utils;
 
-import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.hash.HashCode;
 import com.google.common.hash.HashFunction;
 import com.google.common.hash.Hashing;
 import java.nio.charset.Charset;
-import net.sf.json.JSONObject;
 
 public class Md5Util {
 
@@ -38,8 +36,8 @@ public class Md5Util {
         return hash.toString();
     }
 
-    public static String md5(Object data) throws JsonProcessingException {
-        String actualData = data == null ? "{}" : JacksonUtil.beanToJson(data);
+    public static String md5(Object data) {
+        String actualData = data == null ? "{}" : GsonUtil.beanToJson(data);
         return md5(actualData);
     }
 }
index 5f90c2d..6fa9c11 100644 (file)
@@ -20,6 +20,15 @@ package org.onap.holmes.common.utils;
 import static org.hamcrest.core.IsEqual.equalTo;\r
 import static org.junit.Assert.assertThat;\r
 \r
+import com.google.gson.Gson;\r
+import com.google.gson.GsonBuilder;\r
+import com.google.gson.JsonDeserializationContext;\r
+import com.google.gson.JsonDeserializer;\r
+import com.google.gson.JsonElement;\r
+import com.google.gson.JsonParseException;\r
+import com.google.gson.JsonSerializationContext;\r
+import com.google.gson.JsonSerializer;\r
+import java.lang.reflect.Type;\r
 import org.junit.Test;\r
 import org.onap.holmes.common.utils.bean.TestBean;\r
 \r
@@ -29,21 +38,22 @@ public class JacksonUtilTest {
     public void testBeanToJson() throws Exception {\r
         TestBean o = new TestBean();\r
         o.setId("id");\r
-        String result = JacksonUtil.beanToJson(o);\r
+        String result = GsonUtil.beanToJson(o);\r
         assertThat("{\"id\":\"id\"}", equalTo(result));\r
     }\r
 \r
     @Test\r
     public void jsonToBean_json_null() throws Exception {\r
         String jsonNull = null;\r
-        TestBean testBean = JacksonUtil.jsonToBean(jsonNull, TestBean.class);\r
-        assertThat(testBean.getId(), equalTo(null));\r
+        TestBean testBean = GsonUtil.jsonToBean(jsonNull, TestBean.class);\r
+        assertThat(testBean, equalTo(null));\r
     }\r
 \r
     @Test\r
     public void jsonToBean_json_normal() throws Exception {\r
         String json = "{\"id\":\"id\"}";\r
-        TestBean testBean = JacksonUtil.jsonToBean(json, TestBean.class);\r
+        TestBean testBean = GsonUtil.jsonToBean(json, TestBean.class);\r
         assertThat(testBean.getId(), equalTo("id"));\r
     }\r
+\r
 }
\ No newline at end of file
index 041b09d..af81a11 100644 (file)
@@ -26,8 +26,9 @@ import org.onap.holmes.common.dcae.entity.DcaeConfigurations;
 import org.onap.holmes.common.dcae.entity.SecurityInfo;
 
 public class Md5UtilTest {
+
     @Test
-    public void testMd5NormalDiff(){
+    public void testMd5NormalDiff() {
         String contents1 = "contents1";
         String contents2 = "contents2";
 
@@ -35,7 +36,7 @@ public class Md5UtilTest {
     }
 
     @Test
-    public void testMd5NormalSame(){
+    public void testMd5NormalSame() {
         String contents1 = "contents";
         String contents2 = "contents";
 
@@ -43,7 +44,7 @@ public class Md5UtilTest {
     }
 
     @Test
-    public void testMd5Null(){
+    public void testMd5Null() {
         String contents1 = null;
         String contents2 = null;
 
@@ -51,32 +52,25 @@ public class Md5UtilTest {
     }
 
     @Test
-    public void testMd5ObjDiff(){
+    public void testMd5ObjDiff() {
         DcaeConfigurations config1 = new DcaeConfigurations();
         DcaeConfigurations config2 = new DcaeConfigurations();
 
         config1.addPubSecInfo("config1", new SecurityInfo());
         config2.addPubSecInfo("config2", new SecurityInfo());
+        assertThat(Md5Util.md5(config1), not(equalTo(Md5Util.md5(config2))));
 
-        try {
-            assertThat(Md5Util.md5(config1), not(equalTo(Md5Util.md5(config2))));
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
     }
 
     @Test
-    public void testMd5ObjSame(){
+    public void testMd5ObjSame() {
         DcaeConfigurations config1 = new DcaeConfigurations();
         DcaeConfigurations config2 = new DcaeConfigurations();
 
         config1.addPubSecInfo("config", new SecurityInfo());
         config2.addPubSecInfo("config", new SecurityInfo());
 
-        try {
-            assertThat(Md5Util.md5(config1), equalTo(Md5Util.md5(config2)));
-        } catch (JsonProcessingException e) {
-            e.printStackTrace();
-        }
+        assertThat(Md5Util.md5(config1), equalTo(Md5Util.md5(config2)));
+
     }
 }
\ No newline at end of file