aboutsummaryrefslogtreecommitdiffstats
path: root/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java
diff options
context:
space:
mode:
authorJim Hahn <jrh3@att.com>2019-02-28 21:59:33 -0500
committerJim Hahn <jrh3@att.com>2019-03-01 01:08:42 -0500
commitddb5911efe46953200be8965ac65ae9bbc8a36ee (patch)
tree5e328e8205d2076b262943b65ade74584893430d /utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java
parent3849ce18d51e308bbd58b71219472c23b5f3e814 (diff)
Add StandardCoderObject to hide GSON internals
Added StandardCoderObject to hide GSON's JsonElement so that classes are not dependent on the use of JsonElement, making it easier to switch out serialization mechanisms in the future. Added a test for field-not-found. Converted tabs to spaces in json test file. Simplified StandardCoderObject and added methods to Coder for translating to and from StandardCoderObject. Removed a test for a method that no longer exists. Added more tests to a test case. Change-Id: I5123dc3f17c940ded431ef7f9ccd8c4bff6b1c5f Issue-ID: POLICY-1444 Signed-off-by: Jim Hahn <jrh3@att.com>
Diffstat (limited to 'utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java')
-rw-r--r--utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java93
1 files changed, 93 insertions, 0 deletions
diff --git a/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java
new file mode 100644
index 00000000..60c5f4ef
--- /dev/null
+++ b/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java
@@ -0,0 +1,93 @@
+/*
+ * ============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.utils.coder;
+
+import com.google.gson.JsonElement;
+
+/**
+ * Object type used by the {@link StandardCoder}. Different serialization tools have
+ * different "standard objects". For instance, GSON uses {@link JsonElement}. This class
+ * wraps that object so that it can be used without exposing the object, itself.
+ */
+public class StandardCoderObject {
+
+ /**
+ * Data wrapped by this.
+ */
+ private final JsonElement data;
+
+ /**
+ * Constructs the object.
+ */
+ public StandardCoderObject() {
+ data = null;
+ }
+
+ /**
+ * Constructs the object.
+ *
+ * @param data data wrapped by this object.
+ */
+ protected StandardCoderObject(JsonElement data) {
+ this.data = data;
+ }
+
+ /**
+ * Gets the data wrapped by this.
+ *
+ * @return the data wrapped by this
+ */
+ protected JsonElement getData() {
+ return data;
+ }
+
+ /**
+ * Gets a field's value from this object, traversing the object hierarchy.
+ *
+ * @param fields field hierarchy
+ * @return the field value or {@code null} if the field does not exist or is not a
+ * primitive
+ */
+ public String getString(String... fields) {
+
+ /*
+ * This could be relatively easily modified to allow Integer arguments, as well,
+ * which would be used to specify indices within an array.
+ */
+
+ JsonElement jel = data;
+
+ for (String field : fields) {
+ if (jel == null) {
+ return null;
+ }
+
+ if (jel.isJsonObject()) {
+ jel = jel.getAsJsonObject().get(field);
+
+ } else {
+ return null;
+ }
+ }
+
+ return (jel != null && jel.isJsonPrimitive() ? jel.getAsString() : null);
+ }
+}