Add a MD5 Util Class 49/22649/1
authorGuangrong Fu <fu.guangrong@zte.com.cn>
Wed, 8 Nov 2017 04:25:01 +0000 (12:25 +0800)
committerGuangrong Fu <fu.guangrong@zte.com.cn>
Wed, 8 Nov 2017 04:25:01 +0000 (12:25 +0800)
Change-Id: I8d4f82fd7afcfc58ca32879f48df92baca6d3445
Issue-ID: HOLMES-86
Signed-off-by: Guangrong Fu <fu.guangrong@zte.com.cn>
holmes-actions/pom.xml
holmes-actions/src/main/java/org/onap/holmes/common/dcae/entity/DcaeConfigurations.java
holmes-actions/src/main/java/org/onap/holmes/common/dmaap/entity/PolicyMsg.java
holmes-actions/src/main/java/org/onap/holmes/common/utils/Md5Util.java [new file with mode: 0644]
holmes-actions/src/test/java/org/onap/holmes/common/utils/Md5UtilTest.java [new file with mode: 0644]
pom.xml

index d72348e..d91e88a 100644 (file)
             <groupId>io.dropwizard</groupId>\r
             <artifactId>dropwizard-jdbi</artifactId>\r
         </dependency>\r
-\r
+        <dependency>\r
+            <groupId>com.google.guava</groupId>\r
+            <artifactId>guava</artifactId>\r
+        </dependency>\r
         <dependency>\r
             <groupId>org.apache.poi</groupId>\r
             <artifactId>poi</artifactId>\r
index 8c98699..a8045ec 100644 (file)
@@ -23,40 +23,47 @@ import java.util.Map;
 import java.util.Set;\r
 import lombok.NoArgsConstructor;\r
 \r
-@NoArgsConstructor\r
 public class DcaeConfigurations extends HashMap<String, Object>{\r
-    private Map<String, SecurityInfo> streamsPublishes = new HashMap<>();\r
-    private Map<String, SecurityInfo> streamsSubscribes = new HashMap<>();\r
-    private List<Rule> rules = new ArrayList<>();\r
+\r
+    private static final String STREAMS_PUBLISHES = "streamsPublishes";\r
+    private static final String STREAMS_SUBSCRIBES = "streamsSubscribes";\r
+    private static final String RULES = "rules";\r
+\r
+    public DcaeConfigurations(){\r
+        super();\r
+        this.put(STREAMS_PUBLISHES, new HashMap<String, SecurityInfo>());\r
+        this.put(STREAMS_SUBSCRIBES, new HashMap<String, SecurityInfo>());\r
+        this.put(RULES, new ArrayList<Rule>());\r
+    }\r
 \r
     public void addDefaultRule(Rule rule) {\r
         if (null == rule) {\r
             return;\r
         }\r
-        this.rules.add(rule);\r
+        ((List<Rule>)(this.get(RULES))).add(rule);\r
     }\r
 \r
     public List<Rule> getDefaultRules() {\r
-        return this.rules;\r
+        return (List<Rule>)(this.get(RULES));\r
     }\r
 \r
     public SecurityInfo addPubSecInfo(String key, SecurityInfo value) {\r
-        return this.streamsPublishes.put(key, value);\r
+        return ((Map<String, SecurityInfo>)(this.get(STREAMS_PUBLISHES))).put(key, value);\r
     }\r
 \r
     public SecurityInfo getPubSecInfo(String key) {\r
-        return this.streamsPublishes.get(key);\r
+        return ((Map<String, SecurityInfo>)(this.get(STREAMS_PUBLISHES))).get(key);\r
     }\r
 \r
     public SecurityInfo addSubSecInfo(String key, SecurityInfo value) {\r
-        return this.streamsSubscribes.put(key, value);\r
+        return ((Map<String, SecurityInfo>)(this.get(STREAMS_SUBSCRIBES))).put(key, value);\r
     }\r
 \r
     public SecurityInfo getSubSecInfo(String key) {\r
-        return this.streamsSubscribes.get(key);\r
+        return ((Map<String, SecurityInfo>)(this.get(STREAMS_SUBSCRIBES))).get(key);\r
     }\r
 \r
     public Set<String> getSubKeys(){\r
-        return this.streamsSubscribes.keySet();\r
+        return ((Map<String, SecurityInfo>)(this.get(STREAMS_SUBSCRIBES))).keySet();\r
     }\r
 }\r
index 37713b4..2ef25dc 100644 (file)
@@ -32,7 +32,7 @@ public class PolicyMsg {
     private EVENT_STATUS closedLoopEventStatus = EVENT_STATUS.ONSET;\r
     private long closedLoopAlarmStart;\r
     private long closedLoopAlarmEnd;\r
-    private String closedLoopEventClient;\r
+    private String closedLoopEventClient = "DCAE.HolmesInstance";\r
     private String policyVersion;\r
     private String policyName;\r
     private String policyScope;\r
diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/utils/Md5Util.java b/holmes-actions/src/main/java/org/onap/holmes/common/utils/Md5Util.java
new file mode 100644 (file)
index 0000000..1c06b52
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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 {
+
+    private static HashFunction hf = Hashing.md5();
+    private static Charset defaultCharset = Charset.forName("UTF-8");
+
+    private Md5Util() {
+
+    }
+
+    public static String md5(String data) {
+        String actualData = data == null ? "" : data;
+        HashCode hash = hf.newHasher().putString(actualData, defaultCharset).hash();
+        return hash.toString();
+    }
+
+    public static String md5(Object data) throws JsonProcessingException {
+        String actualData = data == null ? "{}" : JacksonUtil.beanToJson(data);
+        return md5(actualData);
+    }
+}
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/utils/Md5UtilTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/utils/Md5UtilTest.java
new file mode 100644 (file)
index 0000000..041b09d
--- /dev/null
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2017 ZTE Corporation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.onap.holmes.common.utils;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsNot.not;
+import static org.junit.Assert.assertThat;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.junit.Test;
+import org.onap.holmes.common.dcae.entity.DcaeConfigurations;
+import org.onap.holmes.common.dcae.entity.SecurityInfo;
+
+public class Md5UtilTest {
+    @Test
+    public void testMd5NormalDiff(){
+        String contents1 = "contents1";
+        String contents2 = "contents2";
+
+        assertThat(Md5Util.md5(contents1), not(equalTo(Md5Util.md5(contents2))));
+    }
+
+    @Test
+    public void testMd5NormalSame(){
+        String contents1 = "contents";
+        String contents2 = "contents";
+
+        assertThat(Md5Util.md5(contents1), equalTo(Md5Util.md5(contents2)));
+    }
+
+    @Test
+    public void testMd5Null(){
+        String contents1 = null;
+        String contents2 = null;
+
+        assertThat(Md5Util.md5(contents1), equalTo(Md5Util.md5(contents2)));
+    }
+
+    @Test
+    public void testMd5ObjDiff(){
+        DcaeConfigurations config1 = new DcaeConfigurations();
+        DcaeConfigurations config2 = new DcaeConfigurations();
+
+        config1.addPubSecInfo("config1", new SecurityInfo());
+        config2.addPubSecInfo("config2", new SecurityInfo());
+
+        try {
+            assertThat(Md5Util.md5(config1), not(equalTo(Md5Util.md5(config2))));
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+    }
+
+    @Test
+    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();
+        }
+    }
+}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0977abe..12e4da5 100644 (file)
--- a/pom.xml
+++ b/pom.xml
                 <artifactId>httpclient</artifactId>\r
                 <version>4.5.3</version>\r
             </dependency>\r
+            <dependency>\r
+                <groupId>com.google.guava</groupId>\r
+                <artifactId>guava</artifactId>\r
+                <version>19.0</version>\r
+            </dependency>\r
         </dependencies>\r
     </dependencyManagement>\r
 </project>\r