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=377debb1e28ed58869ed0c3d300b273ea1660813;hb=ce0b806a18d8f370e1245c480836d18a04afa243;hp=260b26a918beac8da5e97028499403964806c612;hpb=0cfd77aa83f4e3e314d125fbaef461e32099c0bc;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 260b26a..377debb 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,104 @@ * 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; + +import static org.onap.holmes.common.utils.GsonUtil.getAsString; + 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 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.get("aaf_username").equals("null")) { - securityInfo.setAafUsername(entity.getString("aaf_username")); + 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) { + SecurityInfo securityInfo = new SecurityInfo(); + securityInfo.setType(getAsString(entity, "type")); + securityInfo.setAafPassword(getAsString(entity, "aaf_password")); + securityInfo.setAafUsername(getAsString(entity, "aaf_username")); 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.get("client_role").equals("null")) { - dmaapInfo.setClientRole(jsonDmaapInfo.getString("client_role")); - } + dmaapInfo.setLocation(getAsString(jsonDmaapInfo, "location")); + dmaapInfo.setTopicUrl(getAsString(jsonDmaapInfo, "topic_url")); + dmaapInfo.setClientId(getAsString(jsonDmaapInfo, "client_id")); + dmaapInfo.setClientRole(getAsString(jsonDmaapInfo, "client_role")); + dmaapInfo.setType(getAsString(jsonDmaapInfo, "type")); } - 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())); + String value = entry.getValue().getAsString(); + String[] contents = value.split(RULE_CONTENT_SPLIT); + ret.addDefaultRule(new Rule(entry.getKey(), contents[0], contents[1], 1)); } } }