aboutsummaryrefslogtreecommitdiffstats
path: root/utils/src/main/java/org/onap/policy/common/utils/coder/StandardCoderObject.java
diff options
context:
space:
mode:
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);
+ }
+}