aboutsummaryrefslogtreecommitdiffstats
path: root/gson/src/test/java/org/onap/policy/common/gson/internal
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-02-12 11:20:13 -0500
committerJim Hahn <jrh3@att.com>2019-02-12 12:32:22 -0500
commitd7df51a00c9ec3eca4fa5e6f784ba4d52d4f9f89 (patch)
treea84f1d42935f7144d32552eae5943ab065d2cf10 /gson/src/test/java/org/onap/policy/common/gson/internal
parent13ca63c40a379f95539cb4882ec2b645cd0c2a48 (diff)
Add jackson behavior for fields
Added classes to make gson treat fields as jackson does. Added check for input OR output fields. Corrected comment about annotation names. Removed trailing spaces. Extracted some string constants. Fixed checkstyle issue. Change-Id: I665b31774086d72a5a95bee6cf3486a019b72402 Issue-ID: POLICY-1428 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'gson/src/test/java/org/onap/policy/common/gson/internal')
-rw-r--r--gson/src/test/java/org/onap/policy/common/gson/internal/FieldDeserializerTest.java109
-rw-r--r--gson/src/test/java/org/onap/policy/common/gson/internal/FieldSerializerTest.java96
2 files changed, 205 insertions, 0 deletions
diff --git a/gson/src/test/java/org/onap/policy/common/gson/internal/FieldDeserializerTest.java b/gson/src/test/java/org/onap/policy/common/gson/internal/FieldDeserializerTest.java
new file mode 100644
index 00000000..62bab231
--- /dev/null
+++ b/gson/src/test/java/org/onap/policy/common/gson/internal/FieldDeserializerTest.java
@@ -0,0 +1,109 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.gson.internal;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonNull;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.common.gson.JacksonExclusionStrategy;
+import org.onap.policy.common.gson.internal.DataAdapterFactory.Data;
+import org.onap.policy.common.gson.internal.FieldDeserializer;
+
+public class FieldDeserializerTest {
+ private static final String TEXT_FIELD_NAME = "text";
+ private static final String LIST_FIELD_NAME = "listField";
+ private static final String INITIAL_VALUE = "initial value";
+ private static final String NEW_VALUE = "new value";
+
+ private static DataAdapterFactory dataAdapter = new DataAdapterFactory();
+
+ private static Gson gson = new GsonBuilder().registerTypeAdapterFactory(dataAdapter)
+ .setExclusionStrategies(new JacksonExclusionStrategy()).create();
+
+ private FieldDeserializer deser;
+
+ private String text;
+
+ private List<Data> listField;
+
+ @Test
+ public void testGetFromTree() throws Exception {
+ deser = new FieldDeserializer(gson, FieldDeserializerTest.class.getDeclaredField(TEXT_FIELD_NAME));
+
+ JsonObject json = new JsonObject();
+
+ // no value in tree - text remains unchanged
+ text = INITIAL_VALUE;
+ deser.getFromTree(json, this);
+ assertEquals(text, INITIAL_VALUE);
+
+ // null value in tree - text remains unchanged
+ json.add(TEXT_FIELD_NAME, JsonNull.INSTANCE);
+ deser.getFromTree(json, this);
+ assertEquals(text, INITIAL_VALUE);
+
+ // now assign a value - text should be changed now
+ json.addProperty(TEXT_FIELD_NAME, NEW_VALUE);
+
+ deser.getFromTree(json, this);
+ assertEquals(text, NEW_VALUE);
+
+ /*
+ * check list field
+ */
+ deser = new FieldDeserializer(gson, FieldDeserializerTest.class.getDeclaredField(LIST_FIELD_NAME));
+
+ json.add(LIST_FIELD_NAME, DataAdapterFactory.makeArray());
+
+ dataAdapter.reset();
+ listField = null;
+ deser.getFromTree(json, this);
+
+ assertTrue(dataAdapter.isDataRead());
+ assertEquals(DataAdapterFactory.makeList().toString(), listField.toString());
+ }
+
+ @Test
+ public void testGetFromTree_SetEx() throws Exception {
+ deser = new FieldDeserializer(gson, FieldDeserializerTest.class.getDeclaredField(TEXT_FIELD_NAME)) {
+ @Override
+ public Object fromJsonTree(JsonElement tree) {
+ // return an int, which won't fit in a String - cause an exception
+ return 10;
+ }
+ };
+
+ JsonObject json = new JsonObject();
+ json.addProperty(TEXT_FIELD_NAME, NEW_VALUE);
+
+ assertThatThrownBy(() -> deser.getFromTree(json, this)).isInstanceOf(JsonParseException.class)
+ .hasMessage(FieldDeserializer.SET_ERR + FieldDeserializerTest.class.getName() + ".text");
+ }
+}
diff --git a/gson/src/test/java/org/onap/policy/common/gson/internal/FieldSerializerTest.java b/gson/src/test/java/org/onap/policy/common/gson/internal/FieldSerializerTest.java
new file mode 100644
index 00000000..18167fc0
--- /dev/null
+++ b/gson/src/test/java/org/onap/policy/common/gson/internal/FieldSerializerTest.java
@@ -0,0 +1,96 @@
+/*
+ * ============LICENSE_START=======================================================
+ * ONAP
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.common.gson.internal;
+
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import java.util.List;
+import org.junit.Test;
+import org.onap.policy.common.gson.JacksonExclusionStrategy;
+import org.onap.policy.common.gson.internal.DataAdapterFactory.Data;
+import org.onap.policy.common.gson.internal.FieldSerializer;
+
+public class FieldSerializerTest {
+ private static final String TEXT_FIELD_NAME = "text";
+ private static final String LIST_FIELD_NAME = "listField";
+
+ private static DataAdapterFactory dataAdapter = new DataAdapterFactory();
+
+ private static Gson gson = new GsonBuilder().registerTypeAdapterFactory(dataAdapter)
+ .setExclusionStrategies(new JacksonExclusionStrategy()).create();
+
+ private FieldSerializer ser;
+
+ protected String text;
+
+ private List<Data> listField;
+
+ @Test
+ public void testAddToTree() throws Exception {
+ ser = new FieldSerializer(gson, FieldSerializerTest.class.getDeclaredField(TEXT_FIELD_NAME));
+
+ // serialize null value first
+ text = null;
+
+ JsonObject json = new JsonObject();
+ ser.addToTree(this, json);
+ assertTrue(json.get(TEXT_FIELD_NAME).isJsonNull());
+
+ // serialize an actual value
+ text = "hello";
+ ser.addToTree(this, json);
+ assertEquals("hello", json.get(TEXT_FIELD_NAME).getAsString());
+
+ /*
+ * check list field
+ */
+ listField = DataAdapterFactory.makeList();
+
+ ser = new FieldSerializer(gson, FieldSerializerTest.class.getDeclaredField(LIST_FIELD_NAME));
+
+ dataAdapter.reset();
+ JsonElement tree = ser.toJsonTree(listField);
+ assertTrue(dataAdapter.isDataWritten());
+ assertEquals(DataAdapterFactory.ENCODED_LIST, tree.toString());
+ }
+
+ @Test
+ public void testAddToTree_GetEx() throws Exception {
+ ser = new FieldSerializer(gson, FieldSerializerTest.class.getDeclaredField(TEXT_FIELD_NAME)) {
+ @Override
+ protected Object getFromObject(Object source) throws IllegalAccessException {
+ throw new IllegalAccessException("expected exception");
+ }
+ };
+
+ text = "world";
+
+ assertThatThrownBy(() -> ser.addToTree(this, new JsonObject())).isInstanceOf(JsonParseException.class)
+ .hasMessage(FieldSerializer.GET_ERR + FieldSerializerTest.class.getName() + ".text");
+ }
+}