summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuangrongFu <fu.guangrong@zte.com.cn>2020-07-18 17:47:37 +0800
committerGuangrongFu <fu.guangrong@zte.com.cn>2020-07-18 17:54:40 +0800
commitce0b806a18d8f370e1245c480836d18a04afa243 (patch)
tree99f670a4e9ef8681e432b5c0a098f5bbc2a72449
parent490fc3c1fafe50d5fb0e23db5cfd10730be96866 (diff)
Added Some Tools to GsonUtil
Change-Id: I66cd546e6cb9af5313e235cde93a7e914ff00b1f Issue-ID: HOLMES-331 Signed-off-by: GuangrongFu <fu.guangrong@zte.com.cn>
-rw-r--r--holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java34
-rw-r--r--holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java80
-rw-r--r--holmes-actions/src/test/java/org/onap/holmes/common/dcae/entity/DcaeConfigurationsTest.java45
-rw-r--r--holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java1
-rw-r--r--holmes-actions/src/test/java/org/onap/holmes/common/utils/GsonUtilTest.java146
5 files changed, 259 insertions, 47 deletions
diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java
index c1eede7..377debb 100644
--- a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java
+++ b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java
@@ -30,6 +30,8 @@ import java.util.Map.Entry;
import java.util.Set;
import java.util.stream.Stream;
+import static org.onap.holmes.common.utils.GsonUtil.getAsString;
+
public class DcaeConfigurationParser {
private static final String RULE_CONTENT_SPLIT = "\\$\\$\\$";
@@ -85,15 +87,9 @@ public class DcaeConfigurationParser {
private static SecurityInfo createSecurityInfo(String key, JsonObject entity) {
SecurityInfo securityInfo = new SecurityInfo();
- if (entity.has("type") && !entity.get("type").isJsonNull()) {
- securityInfo.setType(entity.get("type").getAsString());
- }
- if (entity.has("aaf_password") && !entity.get("aaf_password").isJsonNull()) {
- securityInfo.setAafPassword(entity.get("aaf_password").getAsString());
- }
- if (entity.has("aaf_username") && !entity.get("aaf_username").isJsonNull()) {
- securityInfo.setAafUsername(entity.get("aaf_username").getAsString());
- }
+ securityInfo.setType(getAsString(entity, "type"));
+ securityInfo.setAafPassword(getAsString(entity, "aaf_password"));
+ securityInfo.setAafUsername(getAsString(entity, "aaf_username"));
securityInfo.setSecureTopic(!key.endsWith("unsecure"));
fillInDmaapInfo(securityInfo, entity.get("dmaap_info").getAsJsonObject());
return securityInfo;
@@ -101,21 +97,11 @@ public class DcaeConfigurationParser {
private static void fillInDmaapInfo(SecurityInfo securityInfo, JsonObject jsonDmaapInfo) {
SecurityInfo.DmaapInfo dmaapInfo = securityInfo.getDmaapInfo();
- if (jsonDmaapInfo.has("location") && !jsonDmaapInfo.get("location").isJsonNull()){
- dmaapInfo.setLocation(jsonDmaapInfo.get("location").getAsString());
- }
- if (jsonDmaapInfo.has("topic_url") && !jsonDmaapInfo.get("topic_url").isJsonNull()) {
- dmaapInfo.setTopicUrl(jsonDmaapInfo.get("topic_url").getAsString());
- }
- if (jsonDmaapInfo.has("client_id") && !jsonDmaapInfo.get("client_id").isJsonNull()) {
- dmaapInfo.setClientId(jsonDmaapInfo.get("client_id").getAsString());
- }
- if (jsonDmaapInfo.has("client_role") && !jsonDmaapInfo.get("client_role").isJsonNull()) {
- dmaapInfo.setClientRole(jsonDmaapInfo.get("client_role").getAsString());
- }
- if (jsonDmaapInfo.has("type") && !jsonDmaapInfo.get("type").isJsonNull()) {
- dmaapInfo.setType(jsonDmaapInfo.get("type").getAsString());
- }
+ dmaapInfo.setLocation(getAsString(jsonDmaapInfo, "location"));
+ dmaapInfo.setTopicUrl(getAsString(jsonDmaapInfo, "topic_url"));
+ dmaapInfo.setClientId(getAsString(jsonDmaapInfo, "client_id"));
+ dmaapInfo.setClientRole(getAsString(jsonDmaapInfo, "client_role"));
+ dmaapInfo.setType(getAsString(jsonDmaapInfo, "type"));
}
private static void fillInRules(DcaeConfigurations ret, JsonObject jsonObject) {
diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java b/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java
index 452aaf8..a5e6461 100644
--- a/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java
+++ b/holmes-actions/src/main/java/org/onap/holmes/common/utils/GsonUtil.java
@@ -1,5 +1,5 @@
/**
- * Copyright 2018 ZTE Corporation.
+ * Copyright 2018-2020 ZTE Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,28 +17,25 @@ 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.JsonObject;
import com.google.gson.reflect.TypeToken;
-import java.lang.reflect.Type;
+import org.apache.commons.lang3.StringUtils;
+
import java.util.List;
import java.util.Map;
public class GsonUtil {
private static Gson gson = null;
+
static {
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;
- }
+ .registerTypeAdapter(Integer.class, (JsonDeserializer<Integer>) (json, typeOfT, context) -> {
+ try {
+ return json.getAsInt();
+ } catch (NumberFormatException e) {
+ return 0;
}
})
.create();
@@ -65,31 +62,70 @@ public class GsonUtil {
return t;
}
- public static <T> List<T> GsonToList(String gsonString, Class<T> cls) {
+ public static <T> List<T> jsonToList(String gsonString, Class<T> cls) {
List<T> list = null;
if (gson != null) {
- list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
- }.getType());
+ list = gson.fromJson(gsonString, TypeToken.getParameterized(List.class, cls).getType());
}
return list;
}
- public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
+ public static <T> List<Map<String, T>> jsonToListMaps(String gsonString, Class<T> cls) {
List<Map<String, T>> list = null;
if (gson != null) {
list = gson.fromJson(gsonString,
- new TypeToken<List<Map<String, T>>>() {
- }.getType());
+ TypeToken.getParameterized(List.class,
+ TypeToken.getParameterized(Map.class, String.class, cls).getType()
+ ).getType()
+ );
}
return list;
}
- public static <T> Map<String, T> GsonToMaps(String gsonString) {
+ public static <T> Map<String, T> jsonToMap(String gsonString, Class<T> cls) {
Map<String, T> map = null;
if (gson != null) {
- map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
- }.getType());
+ map = gson.fromJson(gsonString, TypeToken.getParameterized(Map.class, String.class, cls).getType());
}
return map;
}
+
+ public static String getAsString(JsonObject o, String field) {
+ String ret = null;
+
+ if (field == null) {
+ field = StringUtils.EMPTY;
+ }
+
+ if (o.has(field) && !o.get(field).isJsonNull()) {
+ ret = o.get(field).getAsString();
+ }
+ return ret;
+ }
+
+ public static long getAsLong(JsonObject o, String field) {
+ long ret = 0;
+
+ if (field == null) {
+ field = StringUtils.EMPTY;
+ }
+
+ if (o.has(field) && !o.get(field).isJsonNull()) {
+ ret = o.get(field).getAsLong();
+ }
+ return ret;
+ }
+
+ public static int getAsInt(JsonObject o, String field) {
+ int ret = 0;
+
+ if (field == null) {
+ field = StringUtils.EMPTY;
+ }
+
+ if (o.has(field) && !o.get(field).isJsonNull()) {
+ ret = o.get(field).getAsInt();
+ }
+ return ret;
+ }
}
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/dcae/entity/DcaeConfigurationsTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/entity/DcaeConfigurationsTest.java
new file mode 100644
index 0000000..7f1db36
--- /dev/null
+++ b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/entity/DcaeConfigurationsTest.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2020 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.dcae.entity;
+
+import org.junit.Test;
+
+import java.util.Set;
+
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsNull.notNullValue;
+import static org.junit.Assert.*;
+
+public class DcaeConfigurationsTest {
+
+ @Test
+ public void testAddDefaultRule_null_param() throws Exception {
+ DcaeConfigurations dcaeConfigurations = new DcaeConfigurations();
+ dcaeConfigurations.addDefaultRule(null);
+ assertThat(dcaeConfigurations.getDefaultRules().size(), is(0));
+ }
+
+ @Test
+ public void testGettersAndSetters() throws Exception {
+ DcaeConfigurations dcaeConfigurations = new DcaeConfigurations();
+ dcaeConfigurations.addSubSecInfo("test", new SecurityInfo());
+ assertThat(dcaeConfigurations.getSubSecInfo("test"), notNullValue());
+
+ Set<String> keys = dcaeConfigurations.getSubKeys();
+ assertThat(keys.contains("test"), is(true));
+ }
+} \ No newline at end of file
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java
index c441942..0c188df 100644
--- a/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java
+++ b/holmes-actions/src/test/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParserTest.java
@@ -43,7 +43,6 @@ public class DcaeConfigurationParserTest {
@Test
public void parse() throws Exception {
DcaeConfigurations obj = DcaeConfigurationParser.parse(readConfigurationsFromFile("dcae.config.json"));
-
assertThat(obj.getDefaultRules().size(), equalTo(1));
assertThat(obj.get("collector.keystore.alias"), equalTo("dynamically generated"));
assertThat(((SecurityInfo) obj.getPubSecInfo("sec_measurement")).getAafPassword(), equalTo("aaf_password"));
diff --git a/holmes-actions/src/test/java/org/onap/holmes/common/utils/GsonUtilTest.java b/holmes-actions/src/test/java/org/onap/holmes/common/utils/GsonUtilTest.java
new file mode 100644
index 0000000..ebba1d2
--- /dev/null
+++ b/holmes-actions/src/test/java/org/onap/holmes/common/utils/GsonUtilTest.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright 2020 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.google.gson.Gson;
+import com.google.gson.JsonParser;
+import org.junit.Test;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.core.Is.is;
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class GsonUtilTest {
+
+ private final TestBean bean1 = new TestBean("onap1", 10, 10f, 10d);
+ private final TestBean bean2 = new TestBean("onap2", 20, 20f, 20d);
+ private final Gson gson = new Gson();
+
+ @Test
+ public void beanToJson() {
+ String expected = gson.toJson(bean1);
+ String actual = GsonUtil.beanToJson(bean1);
+ assertThat(actual, equalTo(expected));
+ }
+
+ @Test
+ public void jsonToBean() {
+ TestBean expected = bean1;
+ TestBean actual = GsonUtil.jsonToBean(gson.toJson(expected), TestBean.class);
+ assertThat(expected.getString(), equalTo(actual.getString()));
+ assertThat(expected.getInteger(), equalTo(actual.getInteger()));
+ assertThat(expected.getaDouble(), equalTo(actual.getaDouble()));
+ assertThat(expected.getaFloat(), equalTo(actual.getaFloat()));
+ }
+
+ @Test
+ public void jsonToList() {
+ List<TestBean> expected = Arrays.asList( bean1, bean2);
+ List<TestBean> actual = GsonUtil.jsonToList(gson.toJson(expected), TestBean.class);
+
+ assertThat(expected.size(), equalTo(actual.size()));
+ for (TestBean tb : expected) {
+ assertThat(actual.contains(tb), is(true));
+ }
+ }
+
+ @Test
+ public void jsonToListMaps() {
+ List<Map<String, TestBean>> actual = GsonUtil.jsonToListMaps(
+ "[{\"onap1\":{\"string\":\"onap1\",\"integer\":10,\"aFloat\":10.0,\"aDouble\":10.0}},"
+ + "{\"onap2\":{\"string\":\"onap2\",\"integer\":20,\"aFloat\":20.0,\"aDouble\":20.0}}]", TestBean.class);
+
+ assertThat(actual.get(0).get("onap1"), equalTo(new TestBean("onap1", 10, 10f, 10d)));
+ assertThat(actual.get(1).get("onap2"), equalTo(new TestBean("onap2", 20, 20f, 20d)));
+ }
+
+ @Test
+ public void jsonToMap() {
+ Map<String, TestBean> actual = GsonUtil
+ .jsonToMap("{\"onap1\":{\"string\":\"onap1\",\"integer\":10,\"aFloat\":10.0,\"aDouble\":10.0}}", TestBean.class);
+ assertThat(actual.get("onap1"), equalTo(new TestBean("onap1", 10, 10f, 10d)));
+ }
+
+ @Test
+ public void getAsString() {
+ assertThat("onap1",
+ equalTo(GsonUtil.getAsString(JsonParser.parseString(GsonUtil.beanToJson(bean1)).getAsJsonObject(),"string")));
+ }
+
+ @Test
+ public void getAsLong() {
+ assertThat(10L,
+ is(GsonUtil.getAsLong(JsonParser.parseString(GsonUtil.beanToJson(bean1)).getAsJsonObject(),"integer")));
+ }
+
+ @Test
+ public void getAsInt() {
+ assertThat(10,
+ is(GsonUtil.getAsInt(JsonParser.parseString(GsonUtil.beanToJson(bean1)).getAsJsonObject(),"integer")));
+ }
+}
+
+class TestBean {
+ private String string;
+ private int integer;
+ private float aFloat;
+ private double aDouble;
+
+ public TestBean(String string, int integer, float aFloat, double aDouble) {
+ this.string = string;
+ this.integer = integer;
+ this.aFloat = aFloat;
+ this.aDouble = aDouble;
+ }
+
+ public String getString() {
+ return string;
+ }
+
+ public int getInteger() {
+ return integer;
+ }
+
+ public float getaFloat() {
+ return aFloat;
+ }
+
+ public double getaDouble() {
+ return aDouble;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null || ! (o instanceof TestBean)) {
+ return false;
+ }
+
+ return string.equals(((TestBean) o).string)
+ && integer == ((TestBean) o).integer
+ && aDouble == ((TestBean) o).aDouble
+ && aFloat == ((TestBean) o).aFloat;
+ }
+
+ @Override
+ public int hashCode() {
+ return string.hashCode();
+ }
+} \ No newline at end of file