X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=holmes-actions%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fholmes%2Fcommon%2Fdcae%2Futils%2FDcaeConfigurationParser.java;h=c1eede7087dd490def90fc6ff72c4a906a5c3cb2;hb=490fc3c1fafe50d5fb0e23db5cfd10730be96866;hp=e4899d3018da99da2c199b5effc9000a7223ef23;hpb=d8dd1b86833125a348c274b9dd62b0ff2ca64f19;p=holmes%2Fcommon.git diff --git a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java index e4899d3..c1eede7 100644 --- a/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java +++ b/holmes-actions/src/main/java/org/onap/holmes/common/dcae/utils/DcaeConfigurationParser.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 ZTE Corporation. + * Copyright 2017-2020 ZTE Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -13,96 +13,118 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - package org.onap.holmes.common.dcae.utils; -import java.util.Arrays; -import java.util.List; -import java.util.Map.Entry; -import java.util.Set; -import java.util.stream.Stream; -import net.sf.json.JSONObject; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; import org.apache.commons.lang3.StringUtils; import org.onap.holmes.common.dcae.entity.DcaeConfigurations; import org.onap.holmes.common.dcae.entity.Rule; import org.onap.holmes.common.dcae.entity.SecurityInfo; import org.onap.holmes.common.exception.CorrelationException; +import java.util.Arrays; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Stream; + public class DcaeConfigurationParser { + private static final String RULE_CONTENT_SPLIT = "\\$\\$\\$"; + private static final List OBJECT_ATTRS = Arrays .asList(new String[]{"streams_subscribes", "streams_publishes", "services_calls", "services_provides"}); public static DcaeConfigurations parse(String jsonStr) throws CorrelationException { if (StringUtils.isEmpty(jsonStr)) { throw new CorrelationException( - "Can not resolve configurations from DCAE. The configuration string is empty"); + "Can not resolve configurations from DCAE. The configuration string is empty."); } DcaeConfigurations ret = new DcaeConfigurations(); - JSONObject jsonObject = null; + JsonObject jsonObject = null; try { - jsonObject = JSONObject.fromObject(jsonStr); + jsonObject = JsonParser.parseString(jsonStr).getAsJsonObject(); } catch (Exception e) { throw new CorrelationException(e.getMessage(), e); } fillInRules(ret, jsonObject); fillInPublishesInfo(ret, jsonObject); + fillInSubscribesInfo(ret, jsonObject); - if (jsonObject.containsKey("streams_subscribes")) { - - } - - JSONObject finalJsonObject = jsonObject; + JsonObject finalJsonObject = jsonObject; Stream.of(jsonObject.keySet().toArray(new String[0])) .filter(key -> !OBJECT_ATTRS.contains(key)) - .forEach(key -> ret.put(key.toString(), finalJsonObject.getString(String.valueOf(key)))); + .forEach(key -> ret.put(key, finalJsonObject.get(String.valueOf(key)).getAsString())); return ret; } - private static void fillInPublishesInfo(DcaeConfigurations ret, JSONObject jsonObject) { - if (jsonObject.containsKey("streams_publishes")) { - JSONObject publishes = jsonObject.getJSONObject("streams_publishes"); + private static void fillInPublishesInfo(DcaeConfigurations ret, JsonObject jsonObject) { + if (jsonObject.has("streams_publishes")) { + JsonObject publishes = jsonObject.get("streams_publishes").getAsJsonObject(); for (Object key : publishes.keySet()) { ret.addPubSecInfo((String) key, - createSecurityInfo((String) key, publishes.getJSONObject((String) key))); + createSecurityInfo((String) key, publishes.get((String) key).getAsJsonObject())); + } + } + } + + private static void fillInSubscribesInfo(DcaeConfigurations ret, JsonObject jsonObject) { + if (jsonObject.has("streams_subscribes")) { + JsonObject subscribes = jsonObject.get("streams_subscribes").getAsJsonObject(); + for (Object key : subscribes.keySet()) { + ret.addSubSecInfo((String) key, + createSecurityInfo((String) key, subscribes.get((String) key).getAsJsonObject())); } } } - private static SecurityInfo createSecurityInfo(String key, JSONObject entity) { + private static SecurityInfo createSecurityInfo(String key, JsonObject entity) { SecurityInfo securityInfo = new SecurityInfo(); - securityInfo.setType(entity.getString("type")); - if (!entity.get("aaf_password").equals("null")) { - securityInfo.setAafPassword(entity.getString("aaf_password")); + if (entity.has("type") && !entity.get("type").isJsonNull()) { + securityInfo.setType(entity.get("type").getAsString()); + } + if (entity.has("aaf_password") && !entity.get("aaf_password").isJsonNull()) { + securityInfo.setAafPassword(entity.get("aaf_password").getAsString()); } - if (!entity.get("aaf_username").equals("null")) { - securityInfo.setAafUsername(entity.getString("aaf_username")); + if (entity.has("aaf_username") && !entity.get("aaf_username").isJsonNull()) { + securityInfo.setAafUsername(entity.get("aaf_username").getAsString()); } securityInfo.setSecureTopic(!key.endsWith("unsecure")); - fillInDmaapInfo(securityInfo, entity.getJSONObject("dmaap_info")); + fillInDmaapInfo(securityInfo, entity.get("dmaap_info").getAsJsonObject()); return securityInfo; } - private static void fillInDmaapInfo(SecurityInfo securityInfo, JSONObject jsonDmaapInfo) { + private static void fillInDmaapInfo(SecurityInfo securityInfo, JsonObject jsonDmaapInfo) { SecurityInfo.DmaapInfo dmaapInfo = securityInfo.getDmaapInfo(); - dmaapInfo.setLocation(jsonDmaapInfo.getString("location")); - dmaapInfo.setTopicUrl(jsonDmaapInfo.getString("topic_url")); - if (!jsonDmaapInfo.get("client_id").equals("null")) { - dmaapInfo.setClientId(jsonDmaapInfo.getString("client_id")); + if (jsonDmaapInfo.has("location") && !jsonDmaapInfo.get("location").isJsonNull()){ + dmaapInfo.setLocation(jsonDmaapInfo.get("location").getAsString()); + } + if (jsonDmaapInfo.has("topic_url") && !jsonDmaapInfo.get("topic_url").isJsonNull()) { + dmaapInfo.setTopicUrl(jsonDmaapInfo.get("topic_url").getAsString()); + } + if (jsonDmaapInfo.has("client_id") && !jsonDmaapInfo.get("client_id").isJsonNull()) { + dmaapInfo.setClientId(jsonDmaapInfo.get("client_id").getAsString()); + } + if (jsonDmaapInfo.has("client_role") && !jsonDmaapInfo.get("client_role").isJsonNull()) { + dmaapInfo.setClientRole(jsonDmaapInfo.get("client_role").getAsString()); } - if (!jsonDmaapInfo.get("client_role").equals("null")) { - dmaapInfo.setClientRole(jsonDmaapInfo.getString("client_role")); + if (jsonDmaapInfo.has("type") && !jsonDmaapInfo.get("type").isJsonNull()) { + dmaapInfo.setType(jsonDmaapInfo.get("type").getAsString()); } } - private static void fillInRules(DcaeConfigurations ret, JSONObject jsonObject) { - Set> entries = jsonObject.entrySet(); - for (Entry entry : entries) { + private static void fillInRules(DcaeConfigurations ret, JsonObject jsonObject) { + Set> entries = jsonObject.entrySet(); + for (Entry entry : entries) { if (entry.getKey().startsWith("holmes.default.rule")) { - ret.addDefaultRule(new Rule(entry.getKey(), (String) entry.getValue(), 1)); + String value = entry.getValue().getAsString(); + String[] contents = value.split(RULE_CONTENT_SPLIT); + ret.addDefaultRule(new Rule(entry.getKey(), contents[0], contents[1], 1)); } } }