X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=policy-agent%2Fsrc%2Fmain%2Fjava%2Forg%2Foransc%2Fpolicyagent%2Fconfiguration%2FApplicationConfigParser.java;h=14e836bebe24ffdeed6d09b294e219a87d02813a;hb=6a39814272307d0207222c9229b0d765ac062bf0;hp=dcfbc646b4a4abb745a99640dd679e042510ac58;hpb=7ab83b874b5118ce9bbbbcab2c010c1d5f17ba98;p=nonrtric.git diff --git a/policy-agent/src/main/java/org/oransc/policyagent/configuration/ApplicationConfigParser.java b/policy-agent/src/main/java/org/oransc/policyagent/configuration/ApplicationConfigParser.java index dcfbc646..14e836be 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/configuration/ApplicationConfigParser.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/configuration/ApplicationConfigParser.java @@ -24,8 +24,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.net.MalformedURLException; -import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -33,16 +31,13 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; -import java.util.Properties; import java.util.Set; import javax.validation.constraints.NotNull; import org.immutables.gson.Gson; import org.immutables.value.Value; -import org.onap.dmaap.mr.test.clients.ProtocolTypeConstants; import org.oransc.policyagent.exceptions.ServiceException; -import org.springframework.http.MediaType; /** * Parser for the Json representing of the component configuration. @@ -57,37 +52,42 @@ public class ApplicationConfigParser { public interface ConfigParserResult { List ricConfigs(); - Properties dmaapPublisherConfig(); + Map controllerConfigs(); - Properties dmaapConsumerConfig(); + String dmaapConsumerTopicUrl(); + + String dmaapProducerTopicUrl(); - Map controllerConfigs(); } public ConfigParserResult parse(JsonObject root) throws ServiceException { - Properties dmaapPublisherConfig = new Properties(); - Properties dmaapConsumerConfig = new Properties(); + String dmaapProducerTopicUrl = ""; + String dmaapConsumerTopicUrl = ""; JsonObject agentConfigJson = root.getAsJsonObject(CONFIG); - List ricConfigs = parseRics(agentConfigJson); - Map controllerConfigs = parseControllerConfigs(agentConfigJson); + + if (agentConfigJson == null) { + throw new ServiceException("Missing root configuration \"" + CONFIG + "\" in JSON: " + root); + } JsonObject json = agentConfigJson.getAsJsonObject("streams_publishes"); if (json != null) { - dmaapPublisherConfig = parseDmaapConfig(json); + dmaapProducerTopicUrl = parseDmaapConfig(json); } json = agentConfigJson.getAsJsonObject("streams_subscribes"); if (json != null) { - dmaapConsumerConfig = parseDmaapConfig(json); + dmaapConsumerTopicUrl = parseDmaapConfig(json); } + List ricConfigs = parseRics(agentConfigJson); + Map controllerConfigs = parseControllerConfigs(agentConfigJson); checkConfigurationConsistency(ricConfigs, controllerConfigs); return ImmutableConfigParserResult.builder() // - .dmaapConsumerConfig(dmaapConsumerConfig) // - .dmaapPublisherConfig(dmaapPublisherConfig) // + .dmaapConsumerTopicUrl(dmaapConsumerTopicUrl) // + .dmaapProducerTopicUrl(dmaapProducerTopicUrl) // .ricConfigs(ricConfigs) // .controllerConfigs(controllerConfigs) // .build(); @@ -110,7 +110,6 @@ public class ApplicationConfigParser { } } - } private List parseRics(JsonObject config) throws ServiceException { @@ -119,9 +118,9 @@ public class ApplicationConfigParser { JsonObject ricAsJson = ricElem.getAsJsonObject(); JsonElement controllerNameElement = ricAsJson.get(CONTROLLER); ImmutableRicConfig ricConfig = ImmutableRicConfig.builder() // - .name(ricAsJson.get("name").getAsString()) // - .baseUrl(ricAsJson.get("baseUrl").getAsString()) // - .managedElementIds(parseManagedElementIds(ricAsJson.get("managedElementIds").getAsJsonArray())) // + .name(get(ricAsJson, "name").getAsString()) // + .baseUrl(get(ricAsJson, "baseUrl").getAsString()) // + .managedElementIds(parseManagedElementIds(get(ricAsJson, "managedElementIds").getAsJsonArray())) // .controllerName(controllerNameElement != null ? controllerNameElement.getAsString() : "") // .build(); result.add(ricConfig); @@ -137,10 +136,10 @@ public class ApplicationConfigParser { for (JsonElement element : getAsJsonArray(config, CONTROLLER)) { JsonObject controllerAsJson = element.getAsJsonObject(); ImmutableControllerConfig controllerConfig = ImmutableControllerConfig.builder() // - .name(controllerAsJson.get("name").getAsString()) // - .baseUrl(controllerAsJson.get("baseUrl").getAsString()) // - .password(controllerAsJson.get("password").getAsString()) // - .userName(controllerAsJson.get("userName").getAsString()) // ) + .name(get(controllerAsJson, "name").getAsString()) // + .baseUrl(get(controllerAsJson, "baseUrl").getAsString()) // + .password(get(controllerAsJson, "password").getAsString()) // + .userName(get(controllerAsJson, "userName").getAsString()) // ) .build(); if (result.put(controllerConfig.name(), controllerConfig) != null) { @@ -164,7 +163,7 @@ public class ApplicationConfigParser { private static JsonElement get(JsonObject obj, String memberName) throws ServiceException { JsonElement elem = obj.get(memberName); if (elem == null) { - throw new ServiceException("Could not find member: " + memberName + " in: " + obj); + throw new ServiceException("Could not find member: '" + memberName + "' in: " + obj); } return elem; } @@ -173,7 +172,7 @@ public class ApplicationConfigParser { return get(obj, memberName).getAsJsonArray(); } - private Properties parseDmaapConfig(JsonObject streamCfg) throws ServiceException { + private String parseDmaapConfig(JsonObject streamCfg) throws ServiceException { Set> streamConfigEntries = streamCfg.entrySet(); if (streamConfigEntries.size() != 1) { throw new ServiceException( @@ -181,72 +180,10 @@ public class ApplicationConfigParser { } JsonObject streamConfigEntry = streamConfigEntries.iterator().next().getValue().getAsJsonObject(); JsonObject dmaapInfo = get(streamConfigEntry, "dmaap_info").getAsJsonObject(); - String topicUrl = getAsString(dmaapInfo, "topic_url"); - - try { - Properties dmaapProps = new Properties(); - URL url = new URL(topicUrl); - String passwd = ""; - String userName = ""; - if (url.getUserInfo() != null) { - String[] userInfo = url.getUserInfo().split(":"); - userName = userInfo[0]; - passwd = userInfo[1]; - } - String urlPath = url.getPath(); - DmaapUrlPath path = parseDmaapUrlPath(urlPath); - - dmaapProps.put("ServiceName", url.getHost() + ":" + url.getPort() + "/events"); - dmaapProps.put("topic", path.dmaapTopicName); - dmaapProps.put("host", url.getHost() + ":" + url.getPort()); - dmaapProps.put("contenttype", MediaType.APPLICATION_JSON.toString()); - dmaapProps.put("userName", userName); - dmaapProps.put("password", passwd); - dmaapProps.put("group", path.consumerGroup); - dmaapProps.put("id", path.consumerId); - dmaapProps.put("TransportType", ProtocolTypeConstants.HTTPNOAUTH.toString()); - dmaapProps.put("timeout", 15000); - dmaapProps.put("limit", 100); - dmaapProps.put("maxBatchSize", "10"); - dmaapProps.put("maxAgeMs", "10000"); - dmaapProps.put("compress", true); - dmaapProps.put("MessageSentThreadOccurance", "2"); - return dmaapProps; - } catch (MalformedURLException e) { - throw new ServiceException("Could not parse the URL", e); - } - + return getAsString(dmaapInfo, "topic_url"); } private static @NotNull String getAsString(JsonObject obj, String memberName) throws ServiceException { return get(obj, memberName).getAsString(); } - - private class DmaapUrlPath { - final String dmaapTopicName; - final String consumerGroup; - final String consumerId; - - DmaapUrlPath(String dmaapTopicName, String consumerGroup, String consumerId) { - this.dmaapTopicName = dmaapTopicName; - this.consumerGroup = consumerGroup; - this.consumerId = consumerId; - } - } - - private DmaapUrlPath parseDmaapUrlPath(String urlPath) throws ServiceException { - String[] tokens = urlPath.split("/"); // /events/A1-P/users/sdnc1 - if (!(tokens.length == 3 ^ tokens.length == 5)) { - throw new ServiceException("The path has incorrect syntax: " + urlPath); - } - - final String dmaapTopicName = tokens[2]; // /events/A1-P - String consumerGroup = ""; // users - String consumerId = ""; // sdnc1 - if (tokens.length == 5) { - consumerGroup = tokens[3]; - consumerId = tokens[4]; - } - return new DmaapUrlPath(dmaapTopicName, consumerGroup, consumerId); - } }