summaryrefslogtreecommitdiffstats
path: root/model/utilities
diff options
context:
space:
mode:
Diffstat (limited to 'model/utilities')
-rw-r--r--model/utilities/pom.xml5
-rw-r--r--model/utilities/src/main/java/org/onap/policy/apex/model/utilities/json/JSONHandler.java53
-rw-r--r--model/utilities/src/test/java/org/onap/policy/apex/model/utilities/json/JSONHandlerTest.java60
3 files changed, 118 insertions, 0 deletions
diff --git a/model/utilities/pom.xml b/model/utilities/pom.xml
index fbf1a21fe..90b9937d8 100644
--- a/model/utilities/pom.xml
+++ b/model/utilities/pom.xml
@@ -34,6 +34,11 @@
<artifactId>antlr4-runtime</artifactId>
<version>4.6</version>
</dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.7</version>
+ </dependency>
</dependencies>
<build>
diff --git a/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/json/JSONHandler.java b/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/json/JSONHandler.java
new file mode 100644
index 000000000..eb42a4efa
--- /dev/null
+++ b/model/utilities/src/main/java/org/onap/policy/apex/model/utilities/json/JSONHandler.java
@@ -0,0 +1,53 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.apex.model.utilities.json;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+/**
+ * This class reads objects of the given class from an input stream.
+ *
+ * @author Liam Fallon (liam.fallon@ericsson.com)
+ * @param <TYPE> the generic type
+ */
+public class JSONHandler<TYPE> {
+
+ /**
+ * This method reads objects of a given class from an input stream.
+ *
+ * @param inputClass The class to read
+ * @param inputStream the input stream to read from
+ * @return the object read
+ */
+ public TYPE read(final Class<TYPE> inputClass, final InputStream inputStream) {
+ // Register the adapters for our carrier technologies and event protocols with GSON
+ final GsonBuilder gsonBuilder = new GsonBuilder();
+
+ final Gson gson = gsonBuilder.serializeNulls().create();
+ final Reader jsonResourceReader = new InputStreamReader(inputStream);
+ return gson.fromJson(jsonResourceReader, inputClass);
+ }
+}
diff --git a/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/json/JSONHandlerTest.java b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/json/JSONHandlerTest.java
new file mode 100644
index 000000000..b8e2cebbc
--- /dev/null
+++ b/model/utilities/src/test/java/org/onap/policy/apex/model/utilities/json/JSONHandlerTest.java
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2016-2018 Ericsson. All rights reserved.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.policy.apex.model.utilities.json;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
+
+import org.junit.Test;
+
+import com.google.gson.GsonBuilder;
+
+public class JSONHandlerTest {
+
+ private static final String VALUE = "value";
+
+ @Test
+ public void testAssertions() throws IOException {
+ final OverTheMoonObject jsonObject = new OverTheMoonObject(VALUE);
+ final String jsonString = new GsonBuilder().create().toJson(jsonObject);
+
+ final byte[] bytes = jsonString.getBytes(StandardCharsets.UTF_8);
+ try (final InputStream inputStream = new ByteArrayInputStream(bytes);) {
+
+ final JSONHandler<OverTheMoonObject> objUnderTest = new JSONHandler<>();
+
+ final OverTheMoonObject actualObject = objUnderTest.read(OverTheMoonObject.class, inputStream);
+ assertEquals(VALUE, actualObject.name);
+ }
+
+ }
+
+ private class OverTheMoonObject {
+ private final String name;
+
+ public OverTheMoonObject(final String name) {
+ this.name = name;
+ }
+ }
+}