diff options
Diffstat (limited to 'sli/common/src/main/java/org/onap/ccsdk/sli/core/sli/SvcLogicContext.java')
-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) { |