diff options
author | Dan Timoney <dtimoney@att.com> | 2020-02-27 16:27:37 -0500 |
---|---|---|
committer | Dan Timoney <dtimoney@att.com> | 2020-02-28 16:30:33 +0000 |
commit | ce993645564e2ba43c80fdc80a7265dc4032ceae (patch) | |
tree | 08e7b53a4969a1429589cc002390d7234506c746 /sli/common/src/main/java/org/onap/ccsdk/sli | |
parent | de26ce8cdf4a64e690e7409319c6d738e8666135 (diff) |
Support merge JSON to SvcLogicContext
Add support for merging JSON into SvcLogicContext
Change-Id: If13fd6328a36ccff6393d0829319bbd99cd2a1f0
Issue-ID: CCSDK-2096
Signed-off-by: Dan Timoney <dtimoney@att.com>
Diffstat (limited to 'sli/common/src/main/java/org/onap/ccsdk/sli')
-rw-r--r-- | sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java b/sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java index 3681e1e1..fcd51d14 100644 --- a/sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java +++ b/sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java @@ -25,6 +25,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; import java.util.Set; + +import com.google.gson.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -207,6 +209,38 @@ public class SvcLogicContext { } + public void mergeJson(String pfx, String jsonString) { + JsonParser jp = new JsonParser(); + JsonElement element = jp.parse(jsonString); + + mergeJsonObject(element.getAsJsonObject(), pfx+"."); + } + + public void mergeJsonObject(JsonObject jsonObject, String pfx) { + for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) { + if (entry.getValue().isJsonObject()) { + mergeJsonObject(entry.getValue().getAsJsonObject(), pfx + entry.getKey() + "."); + } else if (entry.getValue().isJsonArray()) { + JsonArray array = entry.getValue().getAsJsonArray(); + this.setAttribute(pfx + entry.getKey() + "_length", String.valueOf(array.size())); + Integer arrayIdx = 0; + for (JsonElement element : array) { + if (element.isJsonObject()) { + mergeJsonObject(element.getAsJsonObject(), pfx + entry.getKey() + "[" + arrayIdx + "]."); + } + arrayIdx++; + } + } else { + if (entry.getValue() instanceof JsonNull) { + LOG.debug("Skipping parameter {} with null value",entry.getKey()); + + } else { + this.setAttribute(pfx + entry.getKey(), entry.getValue().getAsString()); + } + } + } + } + public String resolve(String ctxVarName) { if (ctxVarName.indexOf('[') == -1) { |