From 7104181e0ebd97bbd034b5c221561d42e4241fe5 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Fri, 8 Sep 2017 12:23:49 +0200 Subject: Sonar improvements and class renaming Some sonar improvements and class renaming in different files Change-Id: I8d8eff1e3fedee1d1c31e62edb80e1bb9ce75362 Issue-Id: CLAMP-43 Signed-off-by: Determe, Sebastien (sd378r) --- .../clamp/clds/client/DcaeInventoryServices.java | 2 +- .../clds/client/OperationalPolicyDelegate.java | 5 +- .../org/onap/clamp/clds/client/PolicyClient.java | 86 +++++++++-- .../onap/clamp/clds/client/SdcCatalogServices.java | 13 +- .../onap/clamp/clds/client/SdcSendReqDelegate.java | 8 +- .../clds/client/StringMatchPolicyDelegate.java | 2 +- .../onap/clamp/clds/client/TcaPolicyDelegate.java | 2 +- .../clds/client/req/OperationalPolicyReq.java | 40 ++--- .../org/onap/clamp/clds/client/req/SdcReq.java | 48 +++--- src/main/java/org/onap/clamp/clds/dao/CldsDao.java | 39 +++-- .../clamp/clds/exception/CldsConfigException.java | 61 ++++++++ .../onap/clamp/clds/model/CldsDBServiceCache.java | 2 +- .../org/onap/clamp/clds/model/CldsSdcResource.java | 53 +++++-- .../clamp/clds/model/CldsSdcResourceBasicInfo.java | 60 +++++-- .../onap/clamp/clds/model/CldsSdcServiceInfo.java | 57 +++++-- .../org/onap/clamp/clds/model/CldsServiceData.java | 24 +-- .../org/onap/clamp/clds/model/refprop/RefProp.java | 26 ++-- .../org/onap/clamp/clds/service/CldsService.java | 172 ++++++++++----------- .../clamp/clds/service/CldsTemplateService.java | 41 +++-- .../onap/clamp/clds/transform/TransformUtil.java | 64 -------- .../org/onap/clamp/clds/util/ResourceFileUtil.java | 71 +++++++++ 21 files changed, 530 insertions(+), 346 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/exception/CldsConfigException.java delete mode 100644 src/main/java/org/onap/clamp/clds/transform/TransformUtil.java create mode 100644 src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java (limited to 'src/main') diff --git a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java index c35eb0da..192dcdb9 100644 --- a/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java +++ b/src/main/java/org/onap/clamp/clds/client/DcaeInventoryServices.java @@ -100,7 +100,7 @@ public class DcaeInventoryServices { List resourceUuidList = global.getResourceVf(); String serviceUuid = sdcCatalogServices.getServiceUuidFromServiceInvariantId(invariantServiceUuid); String resourceUuid = ""; - if (resourceUuidList != null && resourceUuidList.size() > 0) { + if (resourceUuidList != null && !resourceUuidList.isEmpty()) { resourceUuid = resourceUuidList.get(0).toString(); } /* Invemtory service url is called in this method */ diff --git a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java index 566d11a2..493b3b3c 100644 --- a/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/OperationalPolicyDelegate.java @@ -78,9 +78,6 @@ public class OperationalPolicyDelegate implements JavaDelegate { */ @Override public void execute(DelegateExecution execution) throws IOException, BuilderException, PolicyEngineException { - - // execution.setVariable("operationalPolicyRequestUuid", - // operationalPolicyRequestUuid); String responseMessage = null; String operationalPolicyRequestUuid = null; ModelProperties prop = ModelProperties.create(execution); @@ -90,7 +87,7 @@ public class OperationalPolicyDelegate implements JavaDelegate { operationalPolicyRequestUuid = LoggingUtils.getRequestId(); Map> attributes = OperationalPolicyReq.formatAttributes(refProp, prop, prop.getType(Policy.class).getId(), policyChain); - responseMessage = policyClient.sendBrms(attributes, prop, operationalPolicyRequestUuid); + responseMessage = policyClient.sendBrmsPolicy(attributes, prop, operationalPolicyRequestUuid); } if (responseMessage != null) { execution.setVariable("operationalPolicyResponseMessage", responseMessage.getBytes()); diff --git a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java index 22f215cc..2b49a8ff 100644 --- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java @@ -62,10 +62,15 @@ import org.springframework.context.ApplicationContext; */ public class PolicyClient { + protected static final String POLICY_PREFIX_BASE = "Config_"; + protected static final String POLICY_PREFIX_BRMS_PARAM = "Config_BRMS_Param_"; + protected static final String POLICY_PREFIX_MICROSERVICE = "Config_MS_"; + protected static final String LOG_POLICY_PREFIX = "Response is "; - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(PolicyClient.class); - protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + protected static final EELFLogger logger = EELFManager.getInstance() + .getLogger(PolicyClient.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Value("${org.onap.clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}") protected String cldsPolicyConfigFile; @@ -77,7 +82,7 @@ public class PolicyClient { protected RefProp refProp; /** - * Perform send of microservice policy. + * Perform BRMS policy type. * * @param attributes * A map of attributes @@ -92,7 +97,7 @@ public class PolicyClient { * In case of issues with the PolicyEngine class * */ - public String sendBrms(Map> attributes, ModelProperties prop, + public String sendBrmsPolicy(Map> attributes, ModelProperties prop, String policyRequestUuid) throws PolicyEngineException, IOException { PolicyParameters policyParameters = new PolicyParameters(); @@ -122,7 +127,7 @@ public class PolicyClient { } /** - * Perform send of microservice policy. + * Perform send of microservice policy in JSON. * * @param policyJson * The policy JSON @@ -136,7 +141,7 @@ public class PolicyClient { * @throws IOException * In case of issue with the Stream */ - public String sendMicroService(String policyJson, ModelProperties prop, String policyRequestUuid) + public String sendMicroServiceInJson(String policyJson, ModelProperties prop, String policyRequestUuid) throws IOException, PolicyEngineException { PolicyParameters policyParameters = new PolicyParameters(); @@ -163,6 +168,47 @@ public class PolicyClient { return rtnMsg; } + /** + * Perform send of base policy in OTHER type. + * + * @param configBody + * The config policy string body + * @param prop + * The ModelProperties + * @param policyRequestUuid + * The policy request UUID + * @return + * @throws IOException + * In case of issues with the policy engine class creation + * @throws PolicyEngineException + * In case of issue with the Stream + */ + public String sendBasePolicyInOther(String configBody, ModelProperties prop, String policyRequestUuid) + throws IOException, PolicyEngineException { + + PolicyParameters policyParameters = new PolicyParameters(); + + // Set Policy Type + policyParameters.setPolicyConfigType(PolicyConfigType.Base); + policyParameters.setEcompName(refProp.getStringValue("policy.ecomp.name")); + policyParameters.setPolicyName(prop.getCurrentPolicyScopeAndPolicyName()); + + policyParameters.setConfigBody(configBody); + policyParameters.setConfigBodyType(PolicyType.OTHER); + policyParameters.setConfigName("HolmesPolicy"); + + policyParameters.setRequestID(UUID.fromString(policyRequestUuid)); + + // Adding this line to clear the policy id from policy name while + // pushing to policy engine + prop.setPolicyUniqueId(""); + + String rtnMsg = send(policyParameters, prop, POLICY_PREFIX_BASE); + push(PolicyConfigType.Base.toString(), prop); + + return rtnMsg; + } + /** * Perform send of policy. * @@ -204,7 +250,7 @@ public class PolicyClient { responseMessage = response.getResponseMessage(); } } catch (Exception e) { - logger.error("Exception occurred during policy communnication", e); + logger.error("Exception occurred during policy communication", e); } logger.info(LOG_POLICY_PREFIX + responseMessage); @@ -266,7 +312,7 @@ public class PolicyClient { response = policyEngine.pushPolicy(pushPolicyParameters); responseMessage = response.getResponseMessage(); } catch (Exception e) { - logger.error("Exception occurred during policy communnication", e); + logger.error("Exception occurred during policy communication", e); } logger.info(LOG_POLICY_PREFIX + responseMessage); @@ -350,9 +396,20 @@ public class PolicyClient { * In case of issues with the PolicyEngine creation */ public String deleteMicrosService(ModelProperties prop) throws PolicyEngineException, IOException { - String policyNamePrefix = refProp.getStringValue("policy.ms.policyNamePrefix"); String policyType = refProp.getStringValue("policy.ms.type"); - return deletePolicy(policyNamePrefix, prop, policyType); + return deletePolicy(prop, policyType); + } + + /** + * This method delete the Base policy. + * + * @param prop The model Properties + * @return A string with the answer from policy + * @throws PolicyEngineException In case of issues with the policy engine + * @throws IOException In case of issues with the stream + */ + public String deleteBasePolicy(ModelProperties prop) throws PolicyEngineException, IOException { + return deletePolicy(prop, PolicyConfigType.Base.toString()); } /** @@ -367,26 +424,23 @@ public class PolicyClient { * In case of issues with the PolicyEngine creation */ public String deleteBrms(ModelProperties prop) throws PolicyEngineException, IOException { - String policyNamePrefix = refProp.getStringValue("policy.op.policyNamePrefix"); String policyType = refProp.getStringValue("policy.op.type"); - return deletePolicy(policyNamePrefix, prop, policyType); + return deletePolicy(prop, policyType); } /** * Format and send delete PAP and PDP requests to Policy. * - * @param policyNamePrefix - * The String policyNamePrefix * @param prop * The ModelProperties + * * @return The response message from policy * @throws IOException * in case of issues with the Stream * @throws PolicyEngineException * In case of issues with the PolicyEngine class creation */ - protected String deletePolicy(String policyNamePrefix, ModelProperties prop, String policyType) - throws PolicyEngineException, IOException { + protected String deletePolicy(ModelProperties prop, String policyType) throws PolicyEngineException, IOException { DeletePolicyParameters deletePolicyParameters = new DeletePolicyParameters(); if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) { diff --git a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java index 24a3d3c4..d418ea55 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java @@ -569,11 +569,7 @@ public class SdcCatalogServices { } private String removeUnwantedBracesFromString(String id) { - String idReworked = ""; - if (id != null && id.contains("\"")) { - idReworked = id.replaceAll("\"", ""); - } - return idReworked; + return (id != null) ? id.replaceAll("\"", "") : ""; } private List getAlarmCondtionsFromVfc(String vfcResponse) throws IOException { @@ -740,7 +736,7 @@ public class SdcCatalogServices { String inputLine; while ((inputLine = in.readLine()) != null) { if (!inputLine.isEmpty()) { - response.append(inputLine); + response.append(inputLine); } if (alarmConditions) { response.append("\n"); @@ -985,12 +981,13 @@ public class SdcCatalogServices { alertDescNode.put(currCldsAlarmCondition.getAlarmConditionKey(), currCldsAlarmCondition.getAlarmConditionKey()); } + } } - } + vfcObjectNode.putPOJO("alarmCondition", alarmCondNode); vfcObjectNode.putPOJO("alertDescription", alertDescNode); vfcResourceUuidObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(), vfcObjectNode); - } + } } } else { alarmCondNode.put("", ""); diff --git a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java index ee233686..0ffde932 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java @@ -70,9 +70,9 @@ public class SdcSendReqDelegate implements JavaDelegate { getSdcAttributes((String) execution.getVariable("controlName")); ModelProperties prop = ModelProperties.create(execution); String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText); - String formatttedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType); - if (formatttedSdcReq != null) { - execution.setVariable("formattedArtifactReq", formatttedSdcReq.getBytes()); + String formattedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType); + if (formattedSdcReq != null) { + execution.setVariable("formattedArtifactReq", formattedSdcReq.getBytes()); } List sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution); @@ -83,7 +83,7 @@ public class SdcSendReqDelegate implements JavaDelegate { if (formattedSdcLocationReq != null) { execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes()); } - sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formatttedSdcReq, formattedSdcLocationReq, + sdcCatalogServices.uploadToSdc(prop, userid, sdcReqUrlsList, formattedSdcReq, formattedSdcLocationReq, artifactName, locationArtifactName); } diff --git a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java index 50126d55..d149137b 100644 --- a/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/StringMatchPolicyDelegate.java @@ -64,7 +64,7 @@ public class StringMatchPolicyDelegate implements JavaDelegate { StringMatch stringMatch = prop.getType(StringMatch.class); if (stringMatch.isFound()) { String policyJson = StringMatchPolicyReq.format(refProp, prop); - String responseMessage = policyClient.sendMicroService(policyJson, prop, stringMatchPolicyRequestUuid); + String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, stringMatchPolicyRequestUuid); if (responseMessage != null) { execution.setVariable("stringMatchPolicyResponseMessage", responseMessage.getBytes()); } diff --git a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java index e8b92a42..9debcc2a 100644 --- a/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/TcaPolicyDelegate.java @@ -65,7 +65,7 @@ public class TcaPolicyDelegate implements JavaDelegate { Tca tca = prop.getType(Tca.class); if (tca.isFound()) { String policyJson = TcaMPolicyReq.formatTca(refProp, prop); - String responseMessage = policyClient.sendMicroService(policyJson, prop, tcaPolicyRequestUuid); + String responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid); if (responseMessage != null) { execution.setVariable("tcaPolicyResponseMessage", responseMessage.getBytes()); } diff --git a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java index e7f956d3..2b1762a2 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/OperationalPolicyReq.java @@ -85,8 +85,8 @@ public class OperationalPolicyReq { String operationTopic = ""; String notificationTopic = ""; String controller = ""; - Tca tca = prop.getTca(); - if (tca.isFound()) { + Tca tca = prop.getType(Tca.class); + if (tca != null && tca.isFound()) { if (!global.getActionSet().equalsIgnoreCase("enbRecipe")) { throw new BadRequestException( "Operation Policy validation problem: action set is not selected properly."); @@ -108,9 +108,9 @@ public class OperationalPolicyReq { String recipeTopic = refProp.getStringValue("op.recipeTopic", global.getService()); // ruleAttributes - Map ruleAttributes = new HashMap(); + Map ruleAttributes = new HashMap<>(); - if (operationTopic == null || operationTopic.length() == 0) { + if (operationTopic == null || operationTopic.isEmpty()) { logger.info("templateName=" + templateName); logger.info("recipeTopic=" + recipeTopic); logger.info("notificationTopic=" + notificationTopic); @@ -151,10 +151,10 @@ public class OperationalPolicyReq { } // matchingAttributes - Map matchingAttributes = new HashMap(); + Map matchingAttributes = new HashMap<>(); matchingAttributes.put("controller", controller); - Map> attributes = new HashMap>(); + Map> attributes = new HashMap<>(); attributes.put(AttributeType.RULE, ruleAttributes); attributes.put(AttributeType.MATCHING, matchingAttributes); @@ -189,7 +189,7 @@ public class OperationalPolicyReq { builder.addResource(vfcResources); // process each policy - HashMap policyObjMap = new HashMap(); + HashMap policyObjMap = new HashMap<>(); List policyItemList = orderParentFirst(policyChain.getPolicyItems()); Target target = new Target(); target.setType(TargetType.VM); @@ -227,7 +227,7 @@ public class OperationalPolicyReq { logger.info("results.getSpecification()=" + results.getSpecification()); } else { // throw exception with error info - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append("Operation Policy validation problem: ControlLoopPolicyBuilder failed with following messages: "); for (Message message : results.getMessages()) { sb.append(message.getMessage()); @@ -235,10 +235,7 @@ public class OperationalPolicyReq { } throw new BadRequestException(sb.toString()); } - - String encodedYaml = URLEncoder.encode(results.getSpecification(), "UTF-8"); - - return encodedYaml; + return URLEncoder.encode(results.getSpecification(), "UTF-8"); } /** @@ -269,7 +266,7 @@ public class OperationalPolicyReq { builder.addResource(vfcResources); // process each policy - HashMap policyObjMap = new HashMap(); + HashMap policyObjMap = new HashMap<>(); List policyItemList = addAOTSActorRecipe(refProp, global.getService(), policyChain.getPolicyItems()); Target target = new Target(); @@ -281,7 +278,7 @@ public class OperationalPolicyReq { String policyName = policyItem.getRecipe() + " Policy"; if (i == 0) { // To set up time window payload for trigger policy - Map payloadMap = new HashMap(); + Map payloadMap = new HashMap<>(); payloadMap.put("timeWindow", refProp.getStringValue("op.eNodeB.timeWindow")); String policyDescription = policyItem.getRecipe() + " Policy - the trigger (no parent) policy - created by CLDS"; @@ -314,7 +311,7 @@ public class OperationalPolicyReq { logger.info("results.getSpecification()=" + results.getSpecification()); } else { // throw exception with error info - StringBuffer sb = new StringBuffer(); + StringBuilder sb = new StringBuilder(); sb.append("Operation Policy validation problem: ControlLoopPolicyBuilder failed with following messages: "); for (Message message : results.getMessages()) { sb.append(message.getMessage()); @@ -322,10 +319,7 @@ public class OperationalPolicyReq { } throw new BadRequestException(sb.toString()); } - - String encodedYaml = URLEncoder.encode(results.getSpecification(), "UTF-8"); - - return encodedYaml; + return URLEncoder.encode(results.getSpecification(), "UTF-8"); } /** @@ -335,7 +329,7 @@ public class OperationalPolicyReq { * @return */ private static List addAOTSActorRecipe(RefProp refProp, String service, List inOrigList) { - List outList = new ArrayList(); + List outList = new ArrayList<>(); try { PolicyItem policyItem = inOrigList.get(0); ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("op.eNodeB.recipe", service); @@ -354,7 +348,7 @@ public class OperationalPolicyReq { policyItemObj.setRetryTimeLimit(Integer.parseInt(recipeNode.path("TimeLimit").asText())); } if (!recipeNode.path("PPConditions").asText().isEmpty()) { - List parentPolicyConditions = new ArrayList(); + List parentPolicyConditions = new ArrayList<>(); for (String ppCondition : recipeNode.path("PPConditions").asText().split(",")) { parentPolicyConditions.add(ppCondition); } @@ -395,7 +389,7 @@ public class OperationalPolicyReq { // check for trigger policy (no parent) String parent = inItem.getParentPolicy(); if (parent == null || parent.length() == 0) { - if (outList.size() > 0) { + if (!outList.isEmpty()) { throw new BadRequestException( "Operation Policy validation problem: more than one trigger policy"); } else { @@ -431,7 +425,7 @@ public class OperationalPolicyReq { return new Resource[0]; } return stringList.stream().map(stringElem -> new Resource(stringElem, resourceType)).toArray(Resource[]::new); - } + } /** * Convert a List of policy result strings to an array of PolicyResult diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java index 9c2ebcda..93c56260 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java @@ -233,7 +233,7 @@ public class SdcReq { String resourceInstanceName = ""; if (globalProps != null) { List resourceVf = globalProps.getResourceVf(); - if (resourceVf != null && resourceVf.size() > 0) { + if (resourceVf != null && !resourceVf.isEmpty()) { resourceInstanceName = resourceVf.get(0); } if (globalProps.getService() != null) { @@ -258,35 +258,35 @@ public class SdcReq { // TODO : refact and regroup with very similar code List urlList = new ArrayList<>(); try { - Global globalProps = prop.getGlobal(); - if (globalProps != null) { - if (globalProps.getService() != null) { - String serviceInvariantUUID = globalProps.getService(); - execution.setVariable("serviceInvariantUUID", serviceInvariantUUID); - List resourceVfList = globalProps.getResourceVf(); - String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); - String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); - CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices - .getCldsSdcServiceDetailFromJson(sdcServicesInformation); - if (CldsSdcServiceDetail != null && resourceVfList != null) { - List CldsSdcResourcesList = CldsSdcServiceDetail.getResources(); - if (CldsSdcResourcesList != null && CldsSdcResourcesList.size() > 0) { - for (CldsSdcResource CldsSdcResource : CldsSdcResourcesList) { - if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null - && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { - if (resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) { - String normalizedResourceInstanceName = normalizeResourceInstanceName( - CldsSdcResource.getResourceInstanceName()); - String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" - + normalizedResourceInstanceName + "/artifacts"; - urlList.add(svcUrl); - } + Global globalProps = prop.getGlobal(); + if (globalProps != null) { + if (globalProps.getService() != null) { + String serviceInvariantUUID = globalProps.getService(); + execution.setVariable("serviceInvariantUUID", serviceInvariantUUID); + List resourceVfList = globalProps.getResourceVf(); + String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); + String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); + CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices + .getCldsSdcServiceDetailFromJson(sdcServicesInformation); + if (CldsSdcServiceDetail != null && resourceVfList != null) { + List CldsSdcResourcesList = CldsSdcServiceDetail.getResources(); + if (CldsSdcResourcesList != null && !CldsSdcResourcesList.isEmpty()) { + for (CldsSdcResource CldsSdcResource : CldsSdcResourcesList) { + if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null + && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { + if (resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) { + String normalizedResourceInstanceName = normalizeResourceInstanceName( + CldsSdcResource.getResourceInstanceName()); + String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + + normalizedResourceInstanceName + "/artifacts"; + urlList.add(svcUrl); } } } } } } + } } catch (IOException e) { throw new SdcCommunicationException("Exception occurred during the SDC communication",e); } diff --git a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java index d54976b8..3b69502a 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java @@ -23,6 +23,9 @@ package org.onap.clamp.clds.dao; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + import java.io.IOException; import java.io.InputStream; import java.io.ObjectInputStream; @@ -51,9 +54,6 @@ import org.springframework.jdbc.core.namedparam.SqlParameterSource; import org.springframework.jdbc.core.simple.SimpleJdbcCall; import org.springframework.stereotype.Repository; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - /** * Data Access for CLDS Model tables. */ @@ -63,19 +63,19 @@ public class CldsDao { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsDao.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private JdbcTemplate jdbcTemplateObject; - private SimpleJdbcCall procGetModel; - private SimpleJdbcCall procGetModelTemplate; - private SimpleJdbcCall procSetModel; - private SimpleJdbcCall procInsEvent; - private SimpleJdbcCall procUpdEvent; - private SimpleJdbcCall procSetTemplate; - private SimpleJdbcCall procGetTemplate; - private SimpleJdbcCall procDelAllModelInstances; - private SimpleJdbcCall procInsModelInstance; - private SimpleJdbcCall procDelModelInstance; + private JdbcTemplate jdbcTemplateObject; + private SimpleJdbcCall procGetModel; + private SimpleJdbcCall procGetModelTemplate; + private SimpleJdbcCall procSetModel; + private SimpleJdbcCall procInsEvent; + private SimpleJdbcCall procUpdEvent; + private SimpleJdbcCall procSetTemplate; + private SimpleJdbcCall procGetTemplate; + private SimpleJdbcCall procDelAllModelInstances; + private SimpleJdbcCall procInsModelInstance; + private SimpleJdbcCall procDelModelInstance; - private static final String healthcheck = "Select 1"; + private static final String HEALTHCHECK = "Select 1"; /** * Log message when instantiating @@ -386,7 +386,7 @@ public class CldsDao { cldsServiceData = (CldsServiceData) oip.readObject(); cldsServiceData.setAgeOfRecord(age); } catch (IOException | ClassNotFoundException e) { - logger.error("Error caught while retrieving cldsServiceData from database"); + logger.error("Error caught while retrieving cldsServiceData from database", e); } return cldsServiceData; } @@ -463,8 +463,7 @@ public class CldsDao { return template; } - public CldsServiceData getCldsServiceCache(String invariantUUID) - throws SQLException, IOException, ClassNotFoundException { + public CldsServiceData getCldsServiceCache(String invariantUUID) { CldsServiceData cldsServiceData = null; List cldsServiceDataList = new ArrayList<>(); try { @@ -478,7 +477,7 @@ public class CldsDao { return cldsServiceData; } - public void setCldsServiceCache(CldsDBServiceCache cldsDBServiceCache) throws SQLException, IOException { + public void setCldsServiceCache(CldsDBServiceCache cldsDBServiceCache) { if (cldsDBServiceCache != null && cldsDBServiceCache.getInvariantId() != null && cldsDBServiceCache.getServiceId() != null) { String invariantUuid = cldsDBServiceCache.getInvariantId(); @@ -501,7 +500,7 @@ public class CldsDao { } public void doHealthCheck() throws SQLException, IOException { - jdbcTemplateObject.execute(healthcheck); + jdbcTemplateObject.execute(HEALTHCHECK); } } diff --git a/src/main/java/org/onap/clamp/clds/exception/CldsConfigException.java b/src/main/java/org/onap/clamp/clds/exception/CldsConfigException.java new file mode 100644 index 00000000..3122fbaa --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/exception/CldsConfigException.java @@ -0,0 +1,61 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.exception; + +/** + * New exception to CldsUser errors. + * + */ +public class CldsConfigException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 5958873136187918505L; + + /** + * This constructor can be used to create a new CldsConfigException. + * + * @param message + * A string message detailing the problem + * @param e + * The exception sent by the code + */ + public CldsConfigException(String message, Throwable e) { + super(message, e); + } + + /** + * This constructor can be used to create a new CldsConfigException. Use + * this constructor only if you are creating a new exception stack, not if + * an exception was already raised by another code. + * + * @param message + * A string message detailing the problem + */ + public CldsConfigException(String message) { + super(message); + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java b/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java index 4b2a2e30..f9a760b7 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsDBServiceCache.java @@ -51,7 +51,7 @@ public class CldsDBServiceCache { this.serviceId = serviceId; } - public InputStream getCldsDataInstream() throws IOException { + public InputStream getCldsDataInstream() { return cldsDataInstream; } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java index 7fa741c8..9c47f450 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java @@ -23,26 +23,26 @@ package org.onap.clamp.clds.model; -import java.math.BigDecimal; -import java.util.List; - import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.math.BigDecimal; +import java.util.List; + @JsonIgnoreProperties(ignoreUnknown = true) public class CldsSdcResource implements Comparable { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcResource.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private String resourceInstanceName; - private String resourceName; - private String resourceInvariantUuid; - private String resourceVersion; - private String resoucreType; - private String resourceUuid; - private List artifacts; + private String resourceInstanceName; + private String resourceName; + private String resourceInvariantUuid; + private String resourceVersion; + private String resoucreType; + private String resourceUuid; + private List artifacts; public String getResourceInstanceName() { return resourceInstanceName; @@ -117,6 +117,37 @@ public class CldsSdcResource implements Comparable { return rtn; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((resourceInstanceName == null) ? 0 : resourceInstanceName.hashCode()); + result = prime * result + ((resourceVersion == null) ? 0 : resourceVersion.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CldsSdcResource other = (CldsSdcResource) obj; + if (resourceInstanceName == null) { + if (other.resourceInstanceName != null) + return false; + } else if (!resourceInstanceName.equals(other.resourceInstanceName)) + return false; + if (resourceVersion == null) { + if (other.resourceVersion != null) + return false; + } else if (!resourceVersion.equals(other.resourceVersion)) + return false; + return true; + } + /** * Convert version String into a BigDecimal * @@ -124,7 +155,7 @@ public class CldsSdcResource implements Comparable { * @return */ private BigDecimal convertVersion(String versionText) { - BigDecimal rtn = new BigDecimal(0.0); + BigDecimal rtn = BigDecimal.valueOf(0.0); try { rtn = new BigDecimal(versionText); } catch (NumberFormatException nfe) { diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java index 80fa787e..f91e36a8 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java @@ -23,28 +23,29 @@ package org.onap.clamp.clds.model; -import java.math.BigDecimal; - import com.att.eelf.configuration.EELFLogger; import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.math.BigDecimal; + @JsonIgnoreProperties(ignoreUnknown = true) public class CldsSdcResourceBasicInfo implements Comparable { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcResourceBasicInfo.class); + protected static final EELFLogger logger = EELFManager.getInstance() + .getLogger(CldsSdcResourceBasicInfo.class); protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); - private String uuid; - private String invariantUUID; - private String name; - private String version; - private String toscaModelURL; - private String category; - private String subCategory; - private String resourceType; - private String lifecycleState; - private String lastUpdaterUserId; + private String uuid; + private String invariantUUID; + private String name; + private String version; + private String toscaModelURL; + private String category; + private String subCategory; + private String resourceType; + private String lifecycleState; + private String lastUpdaterUserId; @Override public int compareTo(CldsSdcResourceBasicInfo in) { @@ -62,6 +63,37 @@ public class CldsSdcResourceBasicInfo implements Comparable { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcServiceInfo.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcServiceInfo.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private String uuid; - private String invariantUUID; - private String name; - private String version; - private String toscaModelURL; - private String category; - private String lifecycleState; - private String lastUpdaterUserId; - private String distributionStatus; + private String uuid; + private String invariantUUID; + private String name; + private String version; + private String toscaModelURL; + private String category; + private String lifecycleState; + private String lastUpdaterUserId; + private String distributionStatus; public String getUuid() { return uuid; @@ -135,6 +135,37 @@ public class CldsSdcServiceInfo implements Comparable { return rtn; } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((name == null) ? 0 : name.hashCode()); + result = prime * result + ((version == null) ? 0 : version.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + CldsSdcServiceInfo other = (CldsSdcServiceInfo) obj; + if (name == null) { + if (other.name != null) + return false; + } else if (!name.equals(other.name)) + return false; + if (version == null) { + if (other.version != null) + return false; + } else if (!version.equals(other.version)) + return false; + return true; + } + /** * Convert version String into a BigDecimal * @@ -147,7 +178,7 @@ public class CldsSdcServiceInfo implements Comparable { } catch (NumberFormatException nfe) { logger.warn("SDC version=" + versionText + " is not decimal for name=" + name); } - return new BigDecimal(0.0); + return BigDecimal.valueOf(0.0); } } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java b/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java index dad7cb61..943532f0 100644 --- a/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java +++ b/src/main/java/org/onap/clamp/clds/model/CldsServiceData.java @@ -23,6 +23,9 @@ package org.onap.clamp.clds.model; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + import java.io.Serializable; import java.util.ArrayList; import java.util.List; @@ -32,20 +35,17 @@ import javax.ws.rs.NotAuthorizedException; import org.onap.clamp.clds.dao.CldsDao; import org.onap.clamp.clds.service.CldsService; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; - public class CldsServiceData implements Serializable { - private static final long serialVersionUID = -9153372664377279423L; + private static final long serialVersionUID = -9153372664377279423L; - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsServiceData.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsServiceData.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - private String serviceInvariantUUID; - private String serviceUUID; - private Long ageOfRecord; - private List cldsVfs; + private String serviceInvariantUUID; + private String serviceUUID; + private Long ageOfRecord; + private List cldsVfs; public String getServiceInvariantUUID() { return serviceInvariantUUID; @@ -71,11 +71,11 @@ public class CldsServiceData implements Serializable { this.serviceUUID = serviceUUID; } - public CldsServiceData getCldsServiceCache(CldsDao cldsDao, String invariantServiceUUID) throws Exception { + public CldsServiceData getCldsServiceCache(CldsDao cldsDao, String invariantServiceUUID) { return cldsDao.getCldsServiceCache(invariantServiceUUID); } - public void setCldsServiceCache(CldsDao cldsDao, CldsDBServiceCache cldsDBServiceCache) throws Exception { + public void setCldsServiceCache(CldsDao cldsDao, CldsDBServiceCache cldsDBServiceCache) { cldsDao.setCldsServiceCache(cldsDBServiceCache); } @@ -106,7 +106,7 @@ public class CldsServiceData implements Serializable { filteredCldsVfs.add(vf); } } catch (NotAuthorizedException e) { - logger.debug("user not authorized for {}", vf.getVfInvariantResourceUUID()); + logger.error("user not authorized for {}" + vf.getVfInvariantResourceUUID(), e); // when not NotAuthorizedException - don't add to // filteredCldsVfs list } diff --git a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java index 3b1f9682..4b26bc05 100644 --- a/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java +++ b/src/main/java/org/onap/clamp/clds/model/refprop/RefProp.java @@ -23,6 +23,11 @@ package org.onap.clamp.clds.model.refprop; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; @@ -36,33 +41,20 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.core.io.Resource; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - /** * Holds reference properties. */ public class RefProp { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(RefProp.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(RefProp.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); @Autowired - private ApplicationContext appContext; + private ApplicationContext appContext; - private Properties prop; + private Properties prop; @Value("${org.onap.clamp.config.files.cldsReference:'classpath:/clds/clds-reference.properties'}") - private String cldsReferenceValuesFile; - - /** - * Load reference properties via null constructor - * - * @throws IOException - */ - public RefProp() throws IOException { - } + private String cldsReferenceValuesFile; @PostConstruct public void loadConfig() throws IOException { diff --git a/src/main/java/org/onap/clamp/clds/service/CldsService.java b/src/main/java/org/onap/clamp/clds/service/CldsService.java index 3d6d54a1..ff4cfda1 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -24,16 +24,12 @@ package org.onap.clamp.clds.service; import com.att.ajsc.common.AjscService; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.IOException; import java.io.InputStream; -import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.List; @@ -54,16 +50,18 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import org.apache.commons.lang3.StringUtils; import org.camunda.bpm.engine.RuntimeService; import org.camunda.bpm.engine.runtime.ProcessInstance; +import org.json.simple.parser.ParseException; import org.onap.clamp.clds.client.DcaeDispatcherServices; import org.onap.clamp.clds.client.DcaeInventoryServices; import org.onap.clamp.clds.client.SdcCatalogServices; import org.onap.clamp.clds.dao.CldsDao; +import org.onap.clamp.clds.exception.CldsConfigException; +import org.onap.clamp.clds.exception.SdcCommunicationException; import org.onap.clamp.clds.model.CldsDBServiceCache; import org.onap.clamp.clds.model.CldsEvent; import org.onap.clamp.clds.model.CldsHealthCheck; @@ -93,43 +91,40 @@ import io.swagger.annotations.ApiOperation; * Service to save and retrieve the CLDS model attributes. */ @AjscService -@Api(value = "/clds", description = "Clds operations") +@Api(value = "/clds") @Path("/clds") public class CldsService extends SecureServiceBase { @Autowired - private ApplicationContext appContext; + private ApplicationContext appContext; - private static final String RESOURCE_NAME = "clds-version.properties"; - - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsService.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + private static final String RESOURCE_NAME = "clds-version.properties"; @Value("${CLDS_PERMISSION_TYPE_CL:permission-type-cl}") - private String cldsPersmissionTypeCl; + private String cldsPersmissionTypeCl; @Value("${CLDS_PERMISSION_TYPE_CL_MANAGE:permission-type-cl-manage}") - private String cldsPermissionTypeClManage; + private String cldsPermissionTypeClManage; @Value("${CLDS_PERMISSION_TYPE_CL_EVENT:permission-type-cl-event}") - private String cldsPermissionTypeClEvent; + private String cldsPermissionTypeClEvent; @Value("${CLDS_PERMISSION_TYPE_FILTER_VF:permission-type-filter-vf}") - private String cldsPermissionTypeFilterVf; + private String cldsPermissionTypeFilterVf; @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}") - private String cldsPermissionTypeTemplate; + private String cldsPermissionTypeTemplate; @Value("${CLDS_PERMISSION_INSTANCE:dev}") - private String cldsPermissionInstance; + private String cldsPermissionInstance; - private SecureServicePermission permissionReadCl; + private SecureServicePermission permissionReadCl; - private SecureServicePermission permissionUpdateCl; + private SecureServicePermission permissionUpdateCl; - private SecureServicePermission permissionReadTemplate; + private SecureServicePermission permissionReadTemplate; - private SecureServicePermission permissionUpdateTemplate; + private SecureServicePermission permissionUpdateTemplate; @PostConstruct private final void afterConstruction() { @@ -192,23 +187,14 @@ public class CldsService extends SecureServiceBase { // Get CLDS application version String cldsVersion = ""; Properties props = new Properties(); - InputStream resourceStream = null; - try { - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - resourceStream = loader.getResourceAsStream(RESOURCE_NAME); + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + + try (InputStream resourceStream = loader.getResourceAsStream(RESOURCE_NAME)) { props.load(resourceStream); cldsVersion = props.getProperty("clds.version"); } catch (Exception ex) { - ex.printStackTrace(); - } finally { - if (resourceStream != null) { - try { - resourceStream.close(); - } catch (IOException e) { - e.printStackTrace(); - } - } + logger.error("Exception caught during the clds.version reading", ex); } cldsInfo.setCldsVersion(cldsVersion); @@ -232,22 +218,12 @@ public class CldsService extends SecureServiceBase { cldsHealthCheck.setHealthCheckComponent("CLDS-APP"); cldsHealthCheck.setHealthCheckStatus("UP"); cldsHealthCheck.setDescription("OK"); - } catch (SQLException e) { - logger.error("CLAMP application DB Error" + e); - cldsHealthCheck.setHealthCheckComponent("CLDS-APP"); - cldsHealthCheck.setHealthCheckStatus("DOWN"); - cldsHealthCheck.setDescription("NOT-OK"); - // return Response.status(500).entity("Database down for CLDS - // application").build(); } catch (Exception e) { - logger.error("CLAMP application DB Error" + e); + logger.error("CLAMP application DB Error", e); cldsHealthCheck.setHealthCheckComponent("CLDS-APP"); cldsHealthCheck.setHealthCheckStatus("DOWN"); cldsHealthCheck.setDescription("NOT-OK"); - // return Response.status(500).entity("Database down for CLDS - // application").build(); } - return cldsHealthCheck; } @@ -360,13 +336,12 @@ public class CldsService extends SecureServiceBase { * * @param modelName * @return clds model - clds model for the given model name - * @throws NotAuthorizedException */ @ApiOperation(value = "Retrieves a CLDS model by name from the database", notes = "", response = String.class) @GET @Path("/model/{modelName}") @Produces(MediaType.APPLICATION_JSON) - public CldsModel getModel(@PathParam("modelName") String modelName) throws NotAuthorizedException { + public CldsModel getModel(@PathParam("modelName") String modelName) { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: GET model", getPrincipalName()); isAuthorized(permissionReadCl); @@ -376,7 +351,7 @@ public class CldsService extends SecureServiceBase { cldsModel.setUserAuthorizedToUpdate(isAuthorizedNoException(permissionUpdateCl)); /** - * Checking condtion whether our CLDS model can call INventory Method + * Checking condition whether our CLDS model can call INventory Method */ if (cldsModel.canInventoryCall()) { try { @@ -401,16 +376,13 @@ public class CldsService extends SecureServiceBase { * REST service that saves a CLDS model by name in the database. * * @param modelName - * @throws TransformerException - * @throws TransformerConfigurationException */ @ApiOperation(value = "Saves a CLDS model by name in the database", notes = "", response = String.class) @PUT @Path("/model/{modelName}") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) - public CldsModel putModel(@PathParam("modelName") String modelName, CldsModel cldsModel) - throws TransformerException { + public CldsModel putModel(@PathParam("modelName") String modelName, CldsModel cldsModel) { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: PUT model", getPrincipalName()); isAuthorized(permissionUpdateCl); @@ -468,9 +440,8 @@ public class CldsService extends SecureServiceBase { * @param test * @param model * @return - * @throws Exception - * @throws JsonProcessingException - * @throws NotAuthorizedException + * @throws TransformerException + * @throws ParseException */ @ApiOperation(value = "Saves and processes an action for a CLDS model by name", notes = "", response = String.class) @PUT @@ -479,7 +450,7 @@ public class CldsService extends SecureServiceBase { @Produces(MediaType.APPLICATION_JSON) public CldsModel putModelAndProcessAction(@PathParam("action") String action, @PathParam("modelName") String modelName, @QueryParam("test") String test, CldsModel model) - throws Exception { + throws TransformerException, ParseException { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: Process model action", getPrincipalName()); String actionCd = action.toUpperCase(); @@ -656,17 +627,19 @@ public class CldsService extends SecureServiceBase { @GET @Path("/sdc/services") @Produces(MediaType.APPLICATION_JSON) - public String getSdcServices() throws Exception { + public String getSdcServices() { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: GET sdc services", getPrincipalName()); String retStr; + + String responseStr = sdcCatalogServices.getSdcServicesInformation(null); try { - String responseStr = sdcCatalogServices.getSdcServicesInformation(null); retStr = createUiServiceFormatJson(responseStr); - } catch (Exception e) { - logger.info("{} {}", e.getClass().getName(), e.getMessage()); - throw e; + } catch (IOException e) { + logger.error("IOException during SDC communication", e); + throw new SdcCommunicationException("IOException during SDC communication", e); } + logger.info("value of sdcServices : {}", retStr); // audit log LoggingUtils.setTimeContext(startTime, new Date()); @@ -677,14 +650,16 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves total properties required by UI + * + * @throws IOException + * In case of issues * - * @throws Exception */ @ApiOperation(value = "Retrieves total properties required by UI", notes = "", response = String.class) @GET @Path("/properties") @Produces(MediaType.APPLICATION_JSON) - public String getSdcProperties() throws Exception { + public String getSdcProperties() throws IOException { return createPropertiesObjectByUUID(getGlobalCldsString(), "{}"); } @@ -749,8 +724,8 @@ public class CldsService extends SecureServiceBase { * @throws NotAuthorizedException * @return */ - public boolean isAuthorizedForVf(String vfInvariantUuid) throws NotAuthorizedException { - if (cldsPermissionTypeFilterVf != null && cldsPermissionTypeFilterVf.length() > 0) { + public boolean isAuthorizedForVf(String vfInvariantUuid) { + if (cldsPermissionTypeFilterVf != null && !cldsPermissionTypeFilterVf.isEmpty()) { SecureServicePermission permission = SecureServicePermission.create(cldsPermissionTypeFilterVf, cldsPermissionInstance, vfInvariantUuid); return isAuthorized(permission); @@ -769,7 +744,7 @@ public class CldsService extends SecureServiceBase { * @param model * @return */ - private boolean isAuthorizedForVf(CldsModel model) throws NotAuthorizedException { + private boolean isAuthorizedForVf(CldsModel model) { String vf = ModelProperties.getVf(model); if (vf == null || vf.length() == 0) { logger.info("VF not found in model"); @@ -789,7 +764,7 @@ public class CldsService extends SecureServiceBase { ObjectNode invariantIdServiceNode = objectMapper.createObjectNode(); ObjectNode serviceNode = objectMapper.createObjectNode(); logger.info("value of cldsserviceiNfolist: {}", rawList); - if (rawList != null && rawList.size() > 0) { + if (rawList != null && !rawList.isEmpty()) { List cldsSdcServiceInfoList = sdcCatalogServices.removeDuplicateServices(rawList); for (CldsSdcServiceInfo currCldsSdcServiceInfo : cldsSdcServiceInfoList) { @@ -852,40 +827,55 @@ public class CldsService extends SecureServiceBase { } private void createVfObjectNode(ObjectNode vfObjectNode2, ObjectMapper mapper, - List rawCldsSdcResourceList) throws IOException { + List rawCldsSdcResourceList) { ObjectNode vfNode = mapper.createObjectNode(); vfNode.put("", ""); - // To remove repeated resource instance name from resourceInstanceList + // To remove repeated resource instance name from + // resourceInstanceList List cldsSdcResourceList = sdcCatalogServices .removeDuplicateSdcResourceInstances(rawCldsSdcResourceList); /** * Creating vf resource node using cldsSdcResource Object */ - if (cldsSdcResourceList != null && cldsSdcResourceList.size() > 0) { + if (cldsSdcResourceList != null && !cldsSdcResourceList.isEmpty()) { for (CldsSdcResource cldsSdcResource : cldsSdcResourceList) { - if (cldsSdcResource != null && cldsSdcResource.getResoucreType() != null - && cldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { + if (cldsSdcResource != null && "VF".equalsIgnoreCase(cldsSdcResource.getResoucreType())) { vfNode.put(cldsSdcResource.getResourceUUID(), cldsSdcResource.getResourceName()); } } } vfObjectNode2.putPOJO("vf", vfNode); - String locationStringValue = refProp.getStringValue("ui.location.default"); - String alarmStringValue = refProp.getStringValue("ui.alarm.default"); /** * creating location json object using properties file value */ - ObjectNode locationJsonNode = (ObjectNode) mapper.readValue(locationStringValue, JsonNode.class); + ObjectNode locationJsonNode; + try { + locationJsonNode = (ObjectNode) mapper.readValue(refProp.getStringValue("ui.location.default"), + JsonNode.class); + } catch (IOException e) { + logger.error("Unable to load ui.location.default JSON in clds-references.properties properly", e); + throw new CldsConfigException( + "Unable to load ui.location.default JSON in clds-references.properties properly", e); + } vfObjectNode2.putPOJO("location", locationJsonNode); /** * creating alarm json object using properties file value */ + String alarmStringValue = refProp.getStringValue("ui.alarm.default"); logger.info("value of alarm: {}", alarmStringValue); - ObjectNode alarmStringJsonNode = (ObjectNode) mapper.readValue(alarmStringValue, JsonNode.class); + ObjectNode alarmStringJsonNode; + try { + alarmStringJsonNode = (ObjectNode) mapper.readValue(alarmStringValue, JsonNode.class); + } catch (IOException e) { + logger.error("Unable to ui.alarm.default JSON in clds-references.properties properly", e); + throw new CldsConfigException("Unable to load ui.alarm.default JSON in clds-references.properties properly", + e); + } vfObjectNode2.putPOJO("alarmCondition", alarmStringJsonNode); + } private ObjectNode createByVFCObjectNode(ObjectMapper mapper, List cldsSdcResourceList) { @@ -895,10 +885,9 @@ public class CldsService extends SecureServiceBase { vfCObjectNode.putPOJO("vfC", emptyObjectNode); ObjectNode subVfCObjectNode = mapper.createObjectNode(); subVfCObjectNode.putPOJO("vfc", emptyObjectNode); - if (cldsSdcResourceList != null && cldsSdcResourceList.size() > 0) { + if (cldsSdcResourceList != null && !cldsSdcResourceList.isEmpty()) { for (CldsSdcResource cldsSdcResource : cldsSdcResourceList) { - if (cldsSdcResource != null && cldsSdcResource.getResoucreType() != null - && cldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { + if (cldsSdcResource != null && "VF".equalsIgnoreCase(cldsSdcResource.getResoucreType())) { vfCObjectNode.putPOJO(cldsSdcResource.getResourceUUID(), subVfCObjectNode); } } @@ -920,14 +909,14 @@ public class CldsService extends SecureServiceBase { model.getTypeId()); String operationStatus = "processing"; long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); - while (operationStatus.equalsIgnoreCase("processing")) { + while ("processing".equalsIgnoreCase(operationStatus)) { // Break the loop if waiting for more than 10 mins if (waitingTime < System.nanoTime()) { break; } operationStatus = dcaeDispatcherServices.getOperationStatus(createNewDeploymentStatusUrl); } - if (operationStatus.equalsIgnoreCase("succeeded")) { + if ("succeeded".equalsIgnoreCase(operationStatus)) { String artifactName = model.getControlName(); if (artifactName != null) { artifactName = artifactName + ".yml"; @@ -958,20 +947,20 @@ public class CldsService extends SecureServiceBase { @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public CldsModel unDeployModel(@PathParam("action") String action, @PathParam("modelName") String modelName, - @QueryParam("test") String test, CldsModel model) throws Exception { + @QueryParam("test") String test, CldsModel model) throws IOException { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: Undeploy model", getPrincipalName()); String operationStatusUndeployUrl = dcaeDispatcherServices.deleteExistingDeployment(model.getDeploymentId(), model.getTypeId()); String operationStatus = "processing"; long waitingTime = System.nanoTime() + TimeUnit.MINUTES.toNanos(10); - while (operationStatus.equalsIgnoreCase("processing")) { + while ("processing".equalsIgnoreCase(operationStatus)) { if (waitingTime < System.nanoTime()) { break; } operationStatus = dcaeDispatcherServices.getOperationStatus(operationStatusUndeployUrl); } - if (operationStatus.equalsIgnoreCase("succeeded")) { + if ("succeeded".equalsIgnoreCase(operationStatus)) { String artifactName = model.getControlName(); if (artifactName != null) { artifactName = artifactName + ".yml"; @@ -997,11 +986,16 @@ public class CldsService extends SecureServiceBase { return model; } - private String getGlobalCldsString() throws Exception { - if (null == globalCldsProperties) { - globalCldsProperties = new Properties(); - globalCldsProperties.load(appContext.getResource(globalClds).getInputStream()); + private String getGlobalCldsString() { + try { + if (null == globalCldsProperties) { + globalCldsProperties = new Properties(); + globalCldsProperties.load(appContext.getResource(globalClds).getInputStream()); + } + return (String) globalCldsProperties.get("globalCldsProps"); + } catch (IOException e) { + logger.error("Unable to load the globalClds due to an exception", e); + throw new CldsConfigException("Unable to load the globalClds due to an exception", e); } - return (String) globalCldsProperties.get("globalCldsProps"); } } diff --git a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java index 07b9bb98..87f9c0c4 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsTemplateService.java @@ -23,6 +23,14 @@ package org.onap.clamp.clds.service; +import com.att.ajsc.common.AjscService; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.ArrayNode; +import com.fasterxml.jackson.databind.node.ObjectNode; + import java.io.IOException; import java.util.Date; import java.util.HashMap; @@ -51,16 +59,6 @@ import org.onap.clamp.clds.util.LoggingUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import com.att.ajsc.common.AjscService; -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.fasterxml.jackson.core.JsonParseException; -import com.fasterxml.jackson.databind.JsonMappingException; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.ArrayNode; -import com.fasterxml.jackson.databind.node.ObjectNode; - /** * Service to save and retrieve the CLDS model attributes. */ @@ -68,12 +66,9 @@ import com.fasterxml.jackson.databind.node.ObjectNode; @Path("/cldsTempate") public class CldsTemplateService extends SecureServiceBase { - protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsTemplateService.class); - protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); - - private static final String collectorKey = "Collector"; - private static final String stringMatchKey = "StringMatch"; - private static final String policyKey = "Policy"; + private static final String COLLECTOR_KEY = "Collector"; + private static final String STRING_MATCH_KEY = "StringMatch"; + private static final String POLICY_KEY = "Policy"; @Value("${CLDS_PERMISSION_TYPE_TEMPLATE:permission-type-template}") private String cldsPermissionTypeTemplate; @@ -309,7 +304,7 @@ public class CldsTemplateService extends SecureServiceBase { logger.info("value of elementIds:" + bpmnElementIds); logger.info("value of prop text:" + propText); Map bpmnIoIdsMap = new HashMap<>(); - if (bpmnElementIds != null && bpmnElementIds.size() > 0) { + if (bpmnElementIds != null && !bpmnElementIds.isEmpty()) { ObjectMapper objectMapper = new ObjectMapper(); ObjectNode root = objectMapper.readValue(propText, ObjectNode.class); Iterator> entryItr = root.fields(); @@ -326,12 +321,12 @@ public class CldsTemplateService extends SecureServiceBase { ObjectNode node = (ObjectNode) anArrayNode; String valueNode = node.get("value").asText(); logger.info("value of node:" + valueNode); - if (keyPropName.startsWith(collectorKey)) { - valueNode = collectorKey + "_" + valueNode; - } else if (keyPropName.startsWith(stringMatchKey)) { - valueNode = stringMatchKey + "_" + valueNode; - } else if (keyPropName.startsWith(policyKey)) { - valueNode = policyKey + "_" + valueNode; + if (keyPropName.startsWith(COLLECTOR_KEY)) { + valueNode = COLLECTOR_KEY + "_" + valueNode; + } else if (keyPropName.startsWith(STRING_MATCH_KEY)) { + valueNode = STRING_MATCH_KEY + "_" + valueNode; + } else if (keyPropName.startsWith(POLICY_KEY)) { + valueNode = POLICY_KEY + "_" + valueNode; } bpmnIoIdsMap.put(keyPropName, valueNode); } diff --git a/src/main/java/org/onap/clamp/clds/transform/TransformUtil.java b/src/main/java/org/onap/clamp/clds/transform/TransformUtil.java deleted file mode 100644 index 2c152c5a..00000000 --- a/src/main/java/org/onap/clamp/clds/transform/TransformUtil.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP CLAMP - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights - * reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END============================================ - * =================================================================== - * ECOMP is a trademark and service mark of AT&T Intellectual Property. - */ - -package org.onap.clamp.clds.transform; - -import java.io.IOException; -import java.io.InputStream; - -/** - * Utility methods supporting transforms. - */ -public class TransformUtil { - - /** - * Return resource as a Stream. - * - * @param name - * @return resource - resource as stream - */ - public static InputStream getResourceAsStream(String name) { - InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(name); - if (is == null) { - throw new IllegalArgumentException("Unable to find resource: " + name); - } - return is; - } - - /** - * Return resource as a Stream. - * - * @param name - * @throws IOException - */ - public static String getResourceAsString(String name) throws IOException { - InputStream is = getResourceAsStream(name); - java.util.Scanner scanner = new java.util.Scanner(is); - java.util.Scanner delimitedScanner = scanner.useDelimiter("\\A"); - String text = delimitedScanner.hasNext() ? delimitedScanner.next() : ""; - delimitedScanner.close(); - scanner.close(); - is.close(); - return text; - } -} diff --git a/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java b/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java new file mode 100644 index 00000000..0aaa09ac --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/util/ResourceFileUtil.java @@ -0,0 +1,71 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.util; + +import java.io.IOException; +import java.io.InputStream; + +/** + * Utility methods supporting transforms. + */ +public class ResourceFileUtil { + + /** + * Disable the ResourceFileUtil constructor. + */ + private ResourceFileUtil() { + + } + + /** + * Return resource as a Stream. + * + * @param name + * @return resource - resource as stream + */ + public static InputStream getResourceAsStream(String name) { + InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(name); + if (is == null) { + throw new IllegalArgumentException("Unable to find resource: " + name); + } + return is; + } + + /** + * Return resource as a Stream. + * + * @param name + * @throws IOException + */ + public static String getResourceAsString(String name) throws IOException { + InputStream is = getResourceAsStream(name); + java.util.Scanner scanner = new java.util.Scanner(is); + java.util.Scanner delimitedScanner = scanner.useDelimiter("\\A"); + String text = delimitedScanner.hasNext() ? delimitedScanner.next() : ""; + delimitedScanner.close(); + scanner.close(); + is.close(); + return text; + } +} -- cgit 1.2.3-korg