diff options
-rw-r--r-- | src/main/java/org/onap/clamp/clds/util/JsonUtils.java | 44 | ||||
-rw-r--r-- | src/test/java/org/onap/clamp/clds/util/JsonUtilsTest.java | 33 |
2 files changed, 38 insertions, 39 deletions
diff --git a/src/main/java/org/onap/clamp/clds/util/JsonUtils.java b/src/main/java/org/onap/clamp/clds/util/JsonUtils.java index 96ddc2929..f59864ac0 100644 --- a/src/main/java/org/onap/clamp/clds/util/JsonUtils.java +++ b/src/main/java/org/onap/clamp/clds/util/JsonUtils.java @@ -31,6 +31,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonPrimitive; + import java.util.ArrayList; import java.util.List; import java.util.Optional; @@ -38,12 +39,13 @@ import java.util.Spliterator; import java.util.Spliterators; import java.util.stream.Collectors; import java.util.stream.StreamSupport; + import org.onap.clamp.clds.model.properties.AbstractModelElement; import org.onap.clamp.clds.service.SecureServicePermission; import org.onap.clamp.clds.service.SecureServicePermissionDeserializer; /** - * This class is used to access the jackson with restricted type access. + * This class is used to access the GSON with restricted type access. */ public class JsonUtils { @@ -52,19 +54,17 @@ public class JsonUtils { private static final String LOG_ELEMENT_NOT_FOUND_IN_JSON = "Value '{}' for key 'name' not found in JSON {}"; public static final Gson GSON = new GsonBuilder() - .registerTypeAdapter(SecureServicePermission.class, new SecureServicePermissionDeserializer()) - .create(); + .registerTypeAdapter(SecureServicePermission.class, new SecureServicePermissionDeserializer()).create(); private JsonUtils() { } - /** - * Return the value field of the json node element that has a name field equals to the given name. + * Return the value field of the json node element that has a name field equals + * to the given name. */ public static String getStringValueByName(JsonElement jsonElement, String name) { - String value = extractJsonValueFromElement(jsonElement, name) - .map(JsonUtils::extractStringValueFromElement) + String value = extractJsonValueFromElement(jsonElement, name).map(JsonUtils::extractStringValueFromElement) .orElse(null); if (value == null) { if (logger.isDebugEnabled()) { @@ -77,7 +77,8 @@ public class JsonUtils { } /** - * Return an array of values for the field of the json node element that has a name field equals to the given name. + * Return an array of values for the field of the json node element that has a + * name field equals to the given name. */ public static List<String> getStringValuesByName(JsonElement jsonElement, String name) { List<String> values = extractJsonValueFromElement(jsonElement, name) @@ -93,21 +94,22 @@ public class JsonUtils { } /** - * Return the int value field of the json node element that has a name field equals to the given name. + * Return the int value field of the json node element that has a name field + * equals to the given name. */ public static Integer getIntValueByName(JsonElement element, String name) { String value = getStringValueByName(element, name); return Integer.valueOf(value); } - /** - * Return the Json value field of the json node element that has a name field equals to the given name. + * Return the Json value field of the json node element that has a name field + * equals to the given name. */ public static JsonObject getJsonObjectByName(JsonElement jsonElement, String name) { JsonObject jsonObject = extractJsonValueFromElement(jsonElement, name).map(JsonElement::getAsJsonObject) .orElse(null); - if (jsonObject == null) { + if (jsonObject == null) { logger.warn(LOG_ELEMENT_NOT_FOUND, name); } else { logger.debug(LOG_ELEMENT_NOT_FOUND_IN_JSON, name, jsonElement.toString()); @@ -116,7 +118,7 @@ public class JsonUtils { } private static Optional<JsonElement> extractJsonValueFromElement(JsonElement jsonElement, String name) { - if(jsonElement != null ){ + if (jsonElement != null) { if (jsonElement.isJsonArray()) { return extractValueJsonFromArray(jsonElement, name); } else if (hasMatchingParameterName(name, jsonElement)) { @@ -136,8 +138,7 @@ public class JsonUtils { } private static boolean hasMatchingParameterName(String name, JsonElement element) { - return element.isJsonObject() - && element.getAsJsonObject().has("name") + return element.isJsonObject() && element.getAsJsonObject().has("name") && name.equals(element.getAsJsonObject().get("name").getAsString()); } @@ -153,14 +154,11 @@ public class JsonUtils { private static List<String> extractStringValuesFromElement(JsonElement element) { if (element.isJsonArray()) { - return StreamSupport.stream( - Spliterators.spliteratorUnknownSize(element.getAsJsonArray().iterator(), Spliterator.ORDERED), - false) - .filter(JsonElement::isJsonPrimitive) - .map(JsonElement::getAsJsonPrimitive) - .filter(JsonPrimitive::isString) - .map(JsonPrimitive::getAsString) - .collect(Collectors.toList()); + return StreamSupport + .stream(Spliterators.spliteratorUnknownSize(element.getAsJsonArray().iterator(), Spliterator.ORDERED), + false) + .filter(JsonElement::isJsonPrimitive).map(JsonElement::getAsJsonPrimitive) + .filter(JsonPrimitive::isString).map(JsonPrimitive::getAsString).collect(Collectors.toList()); } else { String value = extractStringValueFromElement(element); return Lists.newArrayList(value); diff --git a/src/test/java/org/onap/clamp/clds/util/JsonUtilsTest.java b/src/test/java/org/onap/clamp/clds/util/JsonUtilsTest.java index 3e11b8a23..82c2162a5 100644 --- a/src/test/java/org/onap/clamp/clds/util/JsonUtilsTest.java +++ b/src/test/java/org/onap/clamp/clds/util/JsonUtilsTest.java @@ -24,15 +24,17 @@ package org.onap.clamp.clds.util; +import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThat; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.io.IOException; +import java.io.IOException; import java.util.List; + import org.junit.Test; public class JsonUtilsTest { @@ -78,7 +80,8 @@ public class JsonUtilsTest { } /** - * This method test that the security hole in Jackson is not enabled in the default ObjectMapper. + * This method test that the security hole in GSON is not enabled in the default + * ObjectMapper. */ @Test public void testCreateBeanDeserializer() { @@ -91,48 +94,47 @@ public class JsonUtilsTest { assertFalse(testObject instanceof TestObject); } - @Test public void shouldReturnJsonValueByName() throws IOException { - //given + // given String modelProperties = ResourceFileUtil .getResourceAsString("example/model-properties/custom/modelBpmnPropertiesMultiVF.json"); JsonElement globalElement = JsonUtils.GSON.fromJson(modelProperties, JsonObject.class).get("global"); - //when + // when String locationName = JsonUtils.getStringValueByName(globalElement, "location"); String timeoutValue = JsonUtils.getStringValueByName(globalElement, "timeout"); - //then + // then assertThat(locationName).isEqualTo("SNDGCA64"); assertThat(timeoutValue).isEqualTo("500"); } @Test public void shouldReturnJsonObjectByPropertyName() throws IOException { - //given + // given String modelProperties = ResourceFileUtil .getResourceAsString("example/model-properties/custom/modelBpmnPropertiesMultiVF.json"); JsonElement globalElement = JsonUtils.GSON.fromJson(modelProperties, JsonObject.class).get("global"); - //when + // when JsonObject deployParameters = JsonUtils.getJsonObjectByName(globalElement, "deployParameters"); - //then + // then assertThat(deployParameters).isEqualToComparingFieldByField(DEPLOY_PARAMETERS); } @Test public void shouldReturnJsonValuesByPropertyName() throws IOException { - //given + // given String modelProperties = ResourceFileUtil .getResourceAsString("example/model-properties/custom/modelBpmnPropertiesMultiVF.json"); JsonElement globalElement = JsonUtils.GSON.fromJson(modelProperties, JsonObject.class).get("global"); - //when + // when List<String> vfs = JsonUtils.getStringValuesByName(globalElement, "vf"); - //then + // then assertThat(vfs).containsExactly( "6c7aaec2-59eb-41d9-8681-b7f976ab668d", "8sadsad0-a98s-6a7s-fd12-sadji9sa8d12", @@ -140,18 +142,17 @@ public class JsonUtilsTest { ); } - @Test public void shouldReturnJsonValueAsInteger() throws IOException { - //given + // given String modelProperties = ResourceFileUtil .getResourceAsString("example/model-properties/custom/modelBpmnPropertiesMultiVF.json"); JsonElement globalElement = JsonUtils.GSON.fromJson(modelProperties, JsonObject.class).get("global"); - //when + // when Integer timeoutValue = JsonUtils.getIntValueByName(globalElement, "timeout"); - //then + // then assertThat(timeoutValue).isEqualTo(500); } } |