diff options
author | Determe, Sebastien (sd378r) <sd378r@intl.att.com> | 2017-09-08 17:48:10 +0200 |
---|---|---|
committer | Determe, Sebastien (sd378r) <sd378r@intl.att.com> | 2017-09-08 17:48:10 +0200 |
commit | 02847bc3889fe3c3a419612ea7a94eca8794bdc6 (patch) | |
tree | 20ac643bcffdb9f5cdecaf2cf242e3b7d710dde7 /src | |
parent | 15383eb639c7b78f21c0a969099642f3518bbf80 (diff) |
Rework some sonar critical and major bugs
Class renamed to AbstractModelELement, exceptions reworked and IT tests
as well
Change-Id: Ief2b09b0e36776519338834e2af61aa6e638ee91
Issue-Id: CLAMP-43
Signed-off-by: Determe, Sebastien (sd378r) <sd378r@intl.att.com>
Diffstat (limited to 'src')
29 files changed, 699 insertions, 351 deletions
diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java index db7b5241b..c42a22c61 100644 --- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDelegate.java @@ -61,7 +61,7 @@ public class HolmesPolicyDelegate implements JavaDelegate { ModelProperties prop = ModelProperties.create(execution); Holmes holmes = prop.getType(Holmes.class); if (holmes.isFound()) { - String responseMessage = policyClient.sendMicroServiceInJson(holmes.getCorrelationLogic(), prop, + String responseMessage = policyClient.sendBasePolicyInOther(holmes.getCorrelationLogic(), prop, holmesPolicyRequestUuid); if (responseMessage != null) { execution.setVariable("holmesPolicyResponseMessage", responseMessage.getBytes()); diff --git a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java index 46b33ffea..c3c91fa88 100644 --- a/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/HolmesPolicyDeleteDelegate.java @@ -55,7 +55,7 @@ public class HolmesPolicyDeleteDelegate implements JavaDelegate { if (holmes.isFound()) { prop.setCurrentModelElementId(holmes.getId()); - policyClient.deleteMicrosService(prop); + policyClient.deleteBasePolicy(prop); } } 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 2b49a8ff5..2bd680af2 100644 --- a/src/main/java/org/onap/clamp/clds/client/PolicyClient.java +++ b/src/main/java/org/onap/clamp/clds/client/PolicyClient.java @@ -31,13 +31,13 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Date; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.UUID; import javax.ws.rs.BadRequestException; +import org.onap.clamp.clds.exception.policy.PolicyClientException; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; import org.onap.clamp.clds.util.LoggingUtils; @@ -47,6 +47,7 @@ import org.onap.policy.api.DeletePolicyCondition; import org.onap.policy.api.DeletePolicyParameters; import org.onap.policy.api.PolicyChangeResponse; import org.onap.policy.api.PolicyConfig; +import org.onap.policy.api.PolicyConfigException; import org.onap.policy.api.PolicyConfigType; import org.onap.policy.api.PolicyEngine; import org.onap.policy.api.PolicyEngineException; @@ -66,11 +67,11 @@ public class PolicyClient { 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 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 metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Value("${org.onap.clamp.config.files.cldsPolicyConfig:'classpath:/clds/clds-policy-config.properties'}") protected String cldsPolicyConfigFile; @@ -91,14 +92,10 @@ public class PolicyClient { * @param policyRequestUuid * PolicyRequest UUID * @return The response message of policy - * @throws IOException - * In case of issues with the Stream - * @throws PolicyEngineException - * In case of issues with the PolicyEngine class * */ public String sendBrmsPolicy(Map<AttributeType, Map<String, String>> attributes, ModelProperties prop, - String policyRequestUuid) throws PolicyEngineException, IOException { + String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); @@ -136,13 +133,8 @@ public class PolicyClient { * @param policyRequestUuid * The policy Request UUID * @return The response message of policy - * @throws PolicyEngineException - * In case of issues with the policy engine class creation - * @throws IOException - * In case of issue with the Stream */ - public String sendMicroServiceInJson(String policyJson, ModelProperties prop, String policyRequestUuid) - throws IOException, PolicyEngineException { + public String sendMicroServiceInJson(String policyJson, ModelProperties prop, String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); @@ -177,14 +169,9 @@ public class PolicyClient { * 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 + * @return The answer from policy call */ - public String sendBasePolicyInOther(String configBody, ModelProperties prop, String policyRequestUuid) - throws IOException, PolicyEngineException { + public String sendBasePolicyInOther(String configBody, ModelProperties prop, String policyRequestUuid) { PolicyParameters policyParameters = new PolicyParameters(); @@ -216,22 +203,15 @@ public class PolicyClient { * The PolicyParameters * @param prop * The ModelProperties - * @return THe response message of Policy - * @throws IOException - * In case of issues with the Stream - * @throws PolicyEngineException - * In case of issue when creating PolicyEngine class + * @return The response message of Policy + * @throws Exception */ - protected String send(PolicyParameters policyParameters, ModelProperties prop, String policyNamePrefix) - throws IOException, PolicyEngineException { + protected String send(PolicyParameters policyParameters, ModelProperties prop, String policyNamePrefix) { // Verify whether it is triggered by Validation Test button from UI if (prop.isTest()) { return "send not executed for test action"; } - PolicyEngine policyEngine = new PolicyEngine( - appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); - // API method to create or update Policy. PolicyChangeResponse response = null; String responseMessage = ""; @@ -241,22 +221,23 @@ public class PolicyClient { if (versions.isEmpty()) { LoggingUtils.setTargetContext("Policy", "createPolicy"); logger.info("Attempting to create policy for action=" + prop.getActionCd()); - response = policyEngine.createPolicy(policyParameters); + response = getPolicyEngine().createPolicy(policyParameters); responseMessage = response.getResponseMessage(); } else { LoggingUtils.setTargetContext("Policy", "updatePolicy"); logger.info("Attempting to update policy for action=" + prop.getActionCd()); - response = policyEngine.updatePolicy(policyParameters); + response = getPolicyEngine().updatePolicy(policyParameters); responseMessage = response.getResponseMessage(); } } catch (Exception e) { logger.error("Exception occurred during policy communication", e); + throw new PolicyClientException("Exception while communicating with Policy", e); } logger.info(LOG_POLICY_PREFIX + responseMessage); LoggingUtils.setTimeContext(startTime, new Date()); - if (response != null && response.getResponseCode() == 200) { + if (response.getResponseCode() == 200) { logger.info("Policy send successful"); metricsLogger.info("Policy send success"); } else { @@ -276,12 +257,8 @@ public class PolicyClient { * @param prop * The ModelProperties * @return The response message of policy - * @throws IOException - * In case of issues with the stream - * @throws PolicyEngineException - * In case of issues with the PolicyEngine creation */ - protected String push(String policyType, ModelProperties prop) throws PolicyEngineException, IOException { + protected String push(String policyType, ModelProperties prop) { // Verify whether it is triggered by Validation Test button from UI if (prop.isTest()) { return "push not executed for test action"; @@ -301,15 +278,12 @@ public class PolicyClient { pushPolicyParameters.setPdpGroup(refProp.getStringValue("policy.pdp.group")); pushPolicyParameters.setRequestID(null); - PolicyEngine policyEngine = new PolicyEngine( - appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); - // API method to create or update Policy. PolicyChangeResponse response = null; String responseMessage = ""; try { logger.info("Attempting to push policy..."); - response = policyEngine.pushPolicy(pushPolicyParameters); + response = getPolicyEngine().pushPolicy(pushPolicyParameters); responseMessage = response.getResponseMessage(); } catch (Exception e) { logger.error("Exception occurred during policy communication", e); @@ -335,13 +309,10 @@ public class PolicyClient { * @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 creation + * @throws PolicyConfigException + * In case of issues with policy engine */ - protected List<Integer> getVersions(String policyNamePrefix, ModelProperties prop) - throws PolicyEngineException, IOException { + protected List<Integer> getVersions(String policyNamePrefix, ModelProperties prop) throws PolicyConfigException { ArrayList<Integer> versions = new ArrayList<>(); ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); @@ -356,46 +327,42 @@ public class PolicyClient { logger.info("policyName=" + policyName); configRequestParameters.setPolicyName(policyName); - PolicyEngine policyEngine = new PolicyEngine( - appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); - - try { - Collection<PolicyConfig> response = policyEngine.getConfig(configRequestParameters); - Iterator<PolicyConfig> itrResp = response.iterator(); - - while (itrResp.hasNext()) { - PolicyConfig policyConfig = itrResp.next(); - try { - Integer version = new Integer(policyConfig.getPolicyVersion()); - versions.add(version); - } catch (Exception e) { - // just print warning - if n;o policies, version may be null - logger.warn("Failed to parse due to an exception policyConfig.getPolicyVersion()=" - + policyConfig.getPolicyVersion(), e); - } - } - Collections.sort(versions); - logger.info("Policy versions.size()=" + versions.size()); - } catch (Exception e) { - // just print warning - if no policy version found - logger.warn("warning: policy not found...policy name - " + policyName, e); + Collection<PolicyConfig> response = getPolicyEngine().getConfig(configRequestParameters); + for (PolicyConfig policyConfig : response) { + Integer version = Integer.valueOf(policyConfig.getPolicyVersion()); + versions.add(version); } + Collections.sort(versions); + logger.info("Policy versions.size()=" + versions.size()); return versions; } /** + * This method create a new policy engine. + * + * @return A new policy engine + */ + private PolicyEngine getPolicyEngine() { + PolicyEngine policyEngine; + try { + policyEngine = new PolicyEngine(appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); + } catch (IOException e1) { + throw new PolicyClientException("Exception when opening policy config file", e1); + } catch (PolicyEngineException e) { + throw new PolicyClientException("Exception when creating a new policy engine", e); + } + return policyEngine; + } + + /** * Format and send delete Micro Service requests to Policy. * * @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 creation */ - public String deleteMicrosService(ModelProperties prop) throws PolicyEngineException, IOException { + public String deleteMicrosService(ModelProperties prop) { String policyType = refProp.getStringValue("policy.ms.type"); return deletePolicy(prop, policyType); } @@ -403,12 +370,11 @@ public class PolicyClient { /** * This method delete the Base policy. * - * @param prop The model Properties + * @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 { + public String deleteBasePolicy(ModelProperties prop) { return deletePolicy(prop, PolicyConfigType.Base.toString()); } @@ -418,12 +384,8 @@ public class PolicyClient { * @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 creation */ - public String deleteBrms(ModelProperties prop) throws PolicyEngineException, IOException { + public String deleteBrms(ModelProperties prop) { String policyType = refProp.getStringValue("policy.op.type"); return deletePolicy(prop, policyType); } @@ -435,12 +397,8 @@ public class PolicyClient { * 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(ModelProperties prop, String policyType) throws PolicyEngineException, IOException { + protected String deletePolicy(ModelProperties prop, String policyType) { DeletePolicyParameters deletePolicyParameters = new DeletePolicyParameters(); if (prop.getPolicyUniqueId() != null && !prop.getPolicyUniqueId().isEmpty()) { @@ -454,16 +412,16 @@ public class PolicyClient { deletePolicyParameters.setPdpGroup(refProp.getStringValue("policy.pdp.group")); deletePolicyParameters.setPolicyType(policyType); // send delete request - String responseMessage = sendDeletePolicy(deletePolicyParameters, prop); + StringBuilder responseMessage = new StringBuilder(sendDeletePolicy(deletePolicyParameters, prop)); logger.info("Deleting policy from PAP..."); deletePolicyParameters.setPolicyComponent("PAP"); deletePolicyParameters.setDeleteCondition(DeletePolicyCondition.ALL); // send delete request - responseMessage = sendDeletePolicy(deletePolicyParameters, prop); + responseMessage.append(sendDeletePolicy(deletePolicyParameters, prop)); - return responseMessage; + return responseMessage.toString(); } /** @@ -474,26 +432,19 @@ public class PolicyClient { * @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 PolicyEngine class creation */ - protected String sendDeletePolicy(DeletePolicyParameters deletePolicyParameters, ModelProperties prop) - throws PolicyEngineException, IOException { + protected String sendDeletePolicy(DeletePolicyParameters deletePolicyParameters, ModelProperties prop) { // Verify whether it is triggered by Validation Test button from UI if (prop.isTest()) { return "delete not executed for test action"; } - PolicyEngine policyEngine = new PolicyEngine( - appContext.getResource(cldsPolicyConfigFile).getFile().getAbsolutePath()); // API method to create or update Policy. PolicyChangeResponse response = null; String responseMessage = ""; try { logger.info("Attempting to delete policy..."); - response = policyEngine.deletePolicy(deletePolicyParameters); + response = getPolicyEngine().deletePolicy(deletePolicyParameters); responseMessage = response.getResponseMessage(); } catch (Exception e) { logger.error("Exception occurred during policy communnication", e); 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 d418ea55b..d31767150 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java @@ -25,7 +25,6 @@ package org.onap.clamp.clds.client; 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.ArrayNode;
@@ -53,6 +52,7 @@ import org.apache.commons.csv.CSVFormat; import org.apache.commons.csv.CSVRecord;
import org.apache.commons.lang3.StringUtils;
import org.onap.clamp.clds.client.req.SdcReq;
+import org.onap.clamp.clds.exception.SdcCommunicationException;
import org.onap.clamp.clds.model.CldsAlarmCondition;
import org.onap.clamp.clds.model.CldsDBServiceCache;
import org.onap.clamp.clds.model.CldsSdcArtifact;
@@ -137,7 +137,7 @@ public class SdcCatalogServices { */
public List<CldsSdcServiceInfo> removeDuplicateServices(List<CldsSdcServiceInfo> rawCldsSdcServiceList) {
List<CldsSdcServiceInfo> cldsSdcServiceInfoList = null;
- if (rawCldsSdcServiceList != null && rawCldsSdcServiceList.size() > 0) {
+ if (rawCldsSdcServiceList != null && !rawCldsSdcServiceList.isEmpty()) {
// sort list
Collections.sort(rawCldsSdcServiceList);
// and then take only the services with the max version (last in the
@@ -165,7 +165,7 @@ public class SdcCatalogServices { */
public List<CldsSdcResource> removeDuplicateSdcResourceInstances(List<CldsSdcResource> rawCldsSdcResourceList) {
List<CldsSdcResource> cldsSdcResourceList = null;
- if (rawCldsSdcResourceList != null && rawCldsSdcResourceList.size() > 0) {
+ if (rawCldsSdcResourceList != null && !rawCldsSdcResourceList.isEmpty()) {
// sort list
Collections.sort(rawCldsSdcResourceList);
// and then take only the resources with the max version (last in
@@ -194,7 +194,7 @@ public class SdcCatalogServices { public List<CldsSdcResourceBasicInfo> removeDuplicateSdcResourceBasicInfo(
List<CldsSdcResourceBasicInfo> rawCldsSdcResourceListBasicList) {
List<CldsSdcResourceBasicInfo> cldsSdcResourceBasicInfoList = null;
- if (rawCldsSdcResourceListBasicList != null && rawCldsSdcResourceListBasicList.size() > 0) {
+ if (rawCldsSdcResourceListBasicList != null && !rawCldsSdcResourceListBasicList.isEmpty()) {
// sort list
Collections.sort(rawCldsSdcResourceListBasicList);
// and then take only the resources with the max version (last in
@@ -221,15 +221,13 @@ public class SdcCatalogServices { * @param invariantId
* The invariant ID
* @return The service UUID
- * @throws IOException
- * In case of issues with the JSON decoder
*/
- public String getServiceUuidFromServiceInvariantId(String invariantId) throws IOException {
+ public String getServiceUuidFromServiceInvariantId(String invariantId) {
String serviceUuid = "";
String responseStr = getSdcServicesInformation(null);
List<CldsSdcServiceInfo> rawCldsSdcServicesList = getCldsSdcServicesListFromJson(responseStr);
List<CldsSdcServiceInfo> cldsSdcServicesList = removeDuplicateServices(rawCldsSdcServicesList);
- if (cldsSdcServicesList != null && cldsSdcServicesList.size() > 0) {
+ if (cldsSdcServicesList != null && !cldsSdcServicesList.isEmpty()) {
for (CldsSdcServiceInfo currCldsSdcServiceInfo : cldsSdcServicesList) {
if (currCldsSdcServiceInfo != null && currCldsSdcServiceInfo.getInvariantUUID() != null
&& currCldsSdcServiceInfo.getInvariantUUID().equalsIgnoreCase(invariantId)) {
@@ -245,32 +243,45 @@ public class SdcCatalogServices { * To get CldsAsdsServiceInfo class by parsing json string.
*
* @param jsonStr
- * @return
- * @throws IOException
+ * The Json string that must be decoded
+ * @return The list of CldsSdcServiceInfo, if there is a failure it return
+ * an empty list
*/
- public List<CldsSdcServiceInfo> getCldsSdcServicesListFromJson(String jsonStr) throws IOException {
+ public List<CldsSdcServiceInfo> getCldsSdcServicesListFromJson(String jsonStr) {
ObjectMapper objectMapper = new ObjectMapper();
if (StringUtils.isBlank(jsonStr)) {
- return null;
+ return new ArrayList<>();
+ }
+ try {
+ return objectMapper.readValue(jsonStr,
+ objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcServiceInfo.class));
+ } catch (IOException e) {
+ logger.error("Error when attempting to decode the JSON containing CldsSdcServiceInfo", e);
+ return new ArrayList<>();
}
- return objectMapper.readValue(jsonStr,
- objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcServiceInfo.class));
}
/**
* To get List of CldsSdcResourceBasicInfo class by parsing json string.
*
* @param jsonStr
- * @return
- * @throws IOException
+ * The JSOn string that must be decoded
+ * @return The list of CldsSdcResourceBasicInfo, an empty list in case of
+ * issues
*/
- public List<CldsSdcResourceBasicInfo> getAllSdcResourcesListFromJson(String jsonStr) throws IOException {
+ public List<CldsSdcResourceBasicInfo> getAllSdcResourcesListFromJson(String jsonStr) {
ObjectMapper objectMapper = new ObjectMapper();
if (StringUtils.isBlank(jsonStr)) {
- return null;
+ return new ArrayList<>();
+ }
+
+ try {
+ return objectMapper.readValue(jsonStr,
+ objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcResourceBasicInfo.class));
+ } catch (IOException e) {
+ logger.error("Exception occurred when attempting to decode the list of CldsSdcResourceBasicInfo JSON", e);
+ return new ArrayList<>();
}
- return objectMapper.readValue(jsonStr,
- objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcResourceBasicInfo.class));
}
/**
@@ -290,76 +301,86 @@ public class SdcCatalogServices { *
* @param jsonStr
* @return
- * @throws IOException
*/
- public CldsSdcServiceDetail getCldsSdcServiceDetailFromJson(String jsonStr) throws IOException {
+ public CldsSdcServiceDetail getCldsSdcServiceDetailFromJson(String jsonStr) {
ObjectMapper objectMapper = new ObjectMapper();
- return objectMapper.readValue(jsonStr, CldsSdcServiceDetail.class);
+ try {
+ return objectMapper.readValue(jsonStr, CldsSdcServiceDetail.class);
+ } catch (IOException e) {
+ logger.error("Exception when attempting to decode the CldsSdcServiceDetail JSON", e);
+ return null;
+ }
}
/**
- * To upload artifact to sdc based on serviceUUID and resourcename on url.
+ * To upload artifact to sdc based on serviceUUID and resource name on url.
*
* @param prop
* @param userid
* @param url
- * @param formatttedSdcReq
+ * @param formattedSdcReq
* @return
- * @throws IOException
*/
- public String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formatttedSdcReq)
- throws IOException {
+ public String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formatttedSdcReq) {
// Verify whether it is triggered by Validation Test button from UI
if (prop.isTest()) {
return "sdc artifact upload not executed for test action";
}
- logger.info("userid=" + userid);
- String md5Text = SdcReq.calculateMD5ByString(formatttedSdcReq);
- byte[] postData = SdcReq.stringToByteArray(formatttedSdcReq);
- int postDataLength = postData.length;
- HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, md5Text);
- try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
- wr.write(postData);
- }
- boolean requestFailed = true;
- int responseCode = conn.getResponseCode();
- logger.info("responseCode=" + responseCode);
- if (responseCode == 200) {
- requestFailed = false;
- }
+ try {
+ logger.info("userid=" + userid);
+ String md5Text = SdcReq.calculateMD5ByString(formatttedSdcReq);
+ byte[] postData = SdcReq.stringToByteArray(formatttedSdcReq);
+ int postDataLength = postData.length;
+ HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, md5Text);
+ try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
+ wr.write(postData);
+ }
+ boolean requestFailed = true;
+ int responseCode = conn.getResponseCode();
+ logger.info("responseCode=" + responseCode);
+ if (responseCode == 200) {
+ requestFailed = false;
+ }
- String responseStr = getResponse(conn);
- if (responseStr != null) {
- if (requestFailed) {
+ String responseStr = getResponse(conn);
+ if (responseStr != null && requestFailed) {
logger.error("requestFailed - responseStr=" + responseStr);
throw new BadRequestException(responseStr);
}
+ return responseStr;
+ } catch (IOException e) {
+ logger.error("Exception when attempting to communicate with SDC", e);
+ throw new SdcCommunicationException("Exception when attempting to communicate with SDC", e);
}
- return responseStr;
+
}
- private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text)
- throws IOException {
- logger.info("userid=" + userid);
- String basicAuth = SdcReq.getSdcBasicAuth(refProp);
- String sdcXonapInstanceId = refProp.getStringValue("sdc.sdcX-InstanceID");
- URL urlObj = new URL(url);
- HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
- conn.setDoOutput(true);
- conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), sdcXonapInstanceId);
- conn.setRequestProperty("Authorization", basicAuth);
- conn.setRequestProperty("Content-Type", "application/json");
- conn.setRequestProperty("Content-MD5", md5Text);
- conn.setRequestProperty("USER_ID", userid);
- conn.setRequestMethod("POST");
- conn.setRequestProperty("charset", "utf-8");
- conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
- conn.setUseCaches(false);
- conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
- return conn;
+ private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text) {
+ try {
+ logger.info("userid=" + userid);
+ String basicAuth = SdcReq.getSdcBasicAuth(refProp);
+ String sdcXonapInstanceId = refProp.getStringValue("sdc.sdcX-InstanceID");
+ URL urlObj = new URL(url);
+ HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
+ conn.setDoOutput(true);
+ conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), sdcXonapInstanceId);
+ conn.setRequestProperty("Authorization", basicAuth);
+ conn.setRequestProperty("Content-Type", "application/json");
+ conn.setRequestProperty("Content-MD5", md5Text);
+ conn.setRequestProperty("USER_ID", userid);
+ conn.setRequestMethod("POST");
+ conn.setRequestProperty("charset", "utf-8");
+ conn.setRequestProperty("Content-Length", Integer.toString(postDataLength));
+ conn.setUseCaches(false);
+ conn.setRequestProperty("X-ECOMP-RequestID", LoggingUtils.getRequestId());
+ return conn;
+ } catch (IOException e) {
+ logger.error("Exception when attempting to open connection with SDC", e);
+ throw new SdcCommunicationException("Exception when attempting to open connection with SDC", e);
+ }
}
- private String getResponse(HttpURLConnection conn) throws IOException {
+ private String getResponse(HttpURLConnection conn) {
try (InputStream is = getInputStream(conn)) {
if (is != null) {
try (BufferedReader in = new BufferedReader(new InputStreamReader(is))) {
@@ -370,29 +391,42 @@ public class SdcCatalogServices { }
return response.toString();
}
+ } else {
+ return null;
}
+ } catch (IOException e) {
+ logger.error("Exception when attempting to open SDC response", e);
+ throw new SdcCommunicationException("Exception when attempting to open SDC response", e);
}
- return null;
}
- private InputStream getInputStream(HttpURLConnection conn) throws IOException {
- InputStream inStream = conn.getErrorStream();
- if (inStream == null) {
- inStream = conn.getInputStream();
+ private InputStream getInputStream(HttpURLConnection conn) {
+ try {
+ InputStream inStream = conn.getErrorStream();
+ if (inStream == null) {
+ inStream = conn.getInputStream();
+ }
+ return inStream;
+ } catch (IOException e) {
+ logger.error("Exception when attempting to open SDC error stream", e);
+ throw new SdcCommunicationException("Exception when attempting to open SDC error stream", e);
}
- return inStream;
}
- public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData)
- throws IOException {
- CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache();
- cldsDbServiceCache.setCldsDataInstream(cldsServiceData);
- cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID());
- cldsDbServiceCache.setServiceId(cldsServiceData.getServiceUUID());
- return cldsDbServiceCache;
+ public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) {
+ try {
+ CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache();
+ cldsDbServiceCache.setCldsDataInstream(cldsServiceData);
+ cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID());
+ cldsDbServiceCache.setServiceId(cldsServiceData.getServiceUUID());
+ return cldsDbServiceCache;
+ } catch (IOException e) {
+ logger.error("Exception when getting service in cache", e);
+ throw new SdcCommunicationException("Exception when getting service in cache", e);
+ }
}
- public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) throws IOException {
+ public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) {
boolean expired = false;
if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) {
String cachedServiceUuid = cldsServiceData.getServiceUUID();
@@ -408,7 +442,7 @@ public class SdcCatalogServices { return expired;
}
- public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUuid) throws IOException {
+ public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUuid) {
String url = refProp.getStringValue("sdc.serviceUrl");
String catalogUrl = refProp.getStringValue("sdc.catalog.url");
String serviceUuid = getServiceUuidFromServiceInvariantId(invariantServiceUuid);
@@ -417,7 +451,13 @@ public class SdcCatalogServices { ObjectMapper objectMapper = new ObjectMapper();
CldsServiceData cldsServiceData = new CldsServiceData();
if (responseStr != null) {
- CldsSdcServiceDetail cldsSdcServiceDetail = objectMapper.readValue(responseStr, CldsSdcServiceDetail.class);
+ CldsSdcServiceDetail cldsSdcServiceDetail;
+ try {
+ cldsSdcServiceDetail = objectMapper.readValue(responseStr, CldsSdcServiceDetail.class);
+ } catch (IOException e) {
+ logger.error("Exception when decoding the CldsServiceData JSON from SDC", e);
+ throw new SdcCommunicationException("Exception when decoding the CldsServiceData JSON from SDC", e);
+ }
cldsServiceData.setServiceUUID(cldsSdcServiceDetail.getUuid());
cldsServiceData.setServiceInvariantUUID(cldsSdcServiceDetail.getInvariantUUID());
@@ -448,11 +488,7 @@ public class SdcCatalogServices { return cldsServiceData;
}
- /**
- * @param cldsVfDataList
- * @throws IOException
- */
- private void getAllVfcForVfList(List<CldsVfData> cldsVfDataList, String catalogUrl) throws IOException {
+ private void getAllVfcForVfList(List<CldsVfData> cldsVfDataList, String catalogUrl) {
// todo : refact this..
if (cldsVfDataList != null && !cldsVfDataList.isEmpty()) {
List<CldsSdcResourceBasicInfo> allVfResources = getAllSdcVForVfcResourcesBasedOnResourceType(
@@ -511,9 +547,15 @@ public class SdcCatalogServices { }
}
- private List<CldsVfcData> getVfcDataListFromVfResponse(String vfResponse) throws IOException {
+ private List<CldsVfcData> getVfcDataListFromVfResponse(String vfResponse) {
ObjectMapper mapper = new ObjectMapper();
- ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
+ ObjectNode vfResponseNode;
+ try {
+ vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
+ } catch (IOException e) {
+ logger.error("Exception when decoding the JSON list of CldsVfcData", e);
+ return new ArrayList<>();
+ }
ArrayNode vfcArrayNode = (ArrayNode) vfResponseNode.get("resources");
List<CldsVfcData> cldsVfcDataList = new ArrayList<>();
if (vfcArrayNode != null) {
@@ -572,10 +614,16 @@ public class SdcCatalogServices { return (id != null) ? id.replaceAll("\"", "") : "";
}
- private List<CldsAlarmCondition> getAlarmCondtionsFromVfc(String vfcResponse) throws IOException {
+ private List<CldsAlarmCondition> getAlarmCondtionsFromVfc(String vfcResponse) {
List<CldsAlarmCondition> cldsAlarmConditionList = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper();
- ObjectNode vfcResponseNode = (ObjectNode) mapper.readTree(vfcResponse);
+ ObjectNode vfcResponseNode;
+ try {
+ vfcResponseNode = (ObjectNode) mapper.readTree(vfcResponse);
+ } catch (IOException e) {
+ logger.error("Exception when decoding the JSON list of CldsAlarmCondition", e);
+ return cldsAlarmConditionList;
+ }
ArrayNode artifactsArrayNode = (ArrayNode) vfcResponseNode.get("artifacts");
if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) {
@@ -592,25 +640,36 @@ public class SdcCatalogServices { return cldsAlarmConditionList;
}
- private List<CldsAlarmCondition> parseCsvToGetAlarmConditions(String allAlarmCondsValues) throws IOException {
- List<CldsAlarmCondition> cldsAlarmConditionList = new ArrayList<>();
- Reader alarmReader = new StringReader(allAlarmCondsValues);
- Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(alarmReader);
- if (records != null) {
- Iterator<CSVRecord> it = records.iterator();
- if (it.hasNext()) {
- it.next();
+ private List<CldsAlarmCondition> parseCsvToGetAlarmConditions(String allAlarmCondsValues) {
+ try {
+ List<CldsAlarmCondition> cldsAlarmConditionList = new ArrayList<>();
+ Reader alarmReader = new StringReader(allAlarmCondsValues);
+ Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(alarmReader);
+ if (records != null) {
+ Iterator<CSVRecord> it = records.iterator();
+ if (it.hasNext()) {
+ it.next();
+ }
+ it.forEachRemaining(record -> processRecord(cldsAlarmConditionList, record));
}
- it.forEachRemaining(record -> processRecord(cldsAlarmConditionList, record));
+ return cldsAlarmConditionList;
+ } catch (IOException e) {
+ logger.error("Exception when attempting to parse the CSV containing the alarm", e);
+ return new ArrayList<>();
}
- return cldsAlarmConditionList;
}
// Method to get the artifact for any particular VF
- private List<CldsVfKPIData> getFieldPathFromVF(String vfResponse) throws JsonProcessingException, IOException {
+ private List<CldsVfKPIData> getFieldPathFromVF(String vfResponse) {
List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper();
- ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
+ ObjectNode vfResponseNode;
+ try {
+ vfResponseNode = (ObjectNode) mapper.readTree(vfResponse);
+ } catch (IOException e) {
+ logger.error("Exception when decoding the JSON list of CldsVfKPIData", e);
+ return cldsVfKPIDataList;
+ }
ArrayNode artifactsArrayNode = (ArrayNode) vfResponseNode.get("artifacts");
if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) {
@@ -621,7 +680,7 @@ public class SdcCatalogServices { String artifactName = "";
if (artifactNameNode != null) {
artifactName = artifactNameNode.textValue();
- artifactName = artifactName.substring(artifactName.lastIndexOf(".") + 1);
+ artifactName = artifactName.substring(artifactName.lastIndexOf('.') + 1);
}
if (artifactUrlNode != null && artifactName != null && !artifactName.isEmpty()
&& artifactName.equalsIgnoreCase("csv")) {
@@ -660,19 +719,24 @@ public class SdcCatalogServices { }
// Method to get the artifactURL Data and set the CldsVfKPIData node
- private List<CldsVfKPIData> parseCsvToGetFieldPath(String allFieldPathValues) throws IOException {
- List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<>();
- Reader alarmReader = new StringReader(allFieldPathValues);
- Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(alarmReader);
- if (records != null) {
- for (CSVRecord record : records) {
- CldsVfKPIData kpiData = this.convertCsvRecordToKpiData(record);
- if (kpiData != null) {
- cldsVfKPIDataList.add(kpiData);
+ private List<CldsVfKPIData> parseCsvToGetFieldPath(String allFieldPathValues) {
+ try {
+ List<CldsVfKPIData> cldsVfKPIDataList = new ArrayList<>();
+ Reader alarmReader = new StringReader(allFieldPathValues);
+ Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(alarmReader);
+ if (records != null) {
+ for (CSVRecord record : records) {
+ CldsVfKPIData kpiData = this.convertCsvRecordToKpiData(record);
+ if (kpiData != null) {
+ cldsVfKPIDataList.add(kpiData);
+ }
}
}
+ return cldsVfKPIDataList;
+ } catch (IOException e) {
+ logger.error("Exception when attempting to parse the CSV containing the alarm kpi data", e);
+ return new ArrayList<>();
}
- return cldsVfKPIDataList;
}
private void processRecord(List<CldsAlarmCondition> cldsAlarmConditionList, CSVRecord record) {
@@ -713,7 +777,6 @@ public class SdcCatalogServices { * @param url
* @param alarmConditions
* @return
- * @throws IOException
*/
public String getCldsServicesOrResourcesBasedOnURL(String url, boolean alarmConditions) {
try {
@@ -736,7 +799,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");
@@ -757,9 +820,8 @@ public class SdcCatalogServices { * @param globalProps
* @param cldsServiceData
* @return
- * @throws IOException
*/
- public String createPropertiesObjectByUUID(String globalProps, CldsServiceData cldsServiceData) throws IOException {
+ public String createPropertiesObjectByUUID(String globalProps, CldsServiceData cldsServiceData) {
String totalPropsStr;
ObjectMapper mapper = new ObjectMapper();
ObjectNode globalPropsJson;
@@ -814,20 +876,29 @@ public class SdcCatalogServices { byIdObjectNode.putPOJO("byAlertDescription", alertDescObjectNodeByAlert);
- globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
+ globalPropsJson = decodeGlobalProp(globalProps, mapper);
globalPropsJson.putPOJO("shared", byIdObjectNode);
- logger.info("valuie of objNode:" + globalPropsJson);
+ logger.info("value of objNode:" + globalPropsJson);
} else {
/**
* to create json with total properties when no serviceUUID passed
*/
- globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
+ globalPropsJson = decodeGlobalProp(globalProps, mapper);
}
totalPropsStr = globalPropsJson.toString();
return totalPropsStr;
}
+ private ObjectNode decodeGlobalProp(String globalProps, ObjectMapper mapper) {
+ try {
+ return (ObjectNode) mapper.readValue(globalProps, JsonNode.class);
+ } catch (IOException e) {
+ logger.error("Exception occurred during decoding of the global props, returning an empty objectNode", e);
+ return mapper.createObjectNode();
+ }
+ }
+
/**
* Method to get alarm conditions/alert description from Service Data.
*
@@ -981,13 +1052,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("", "");
@@ -1050,12 +1121,11 @@ public class SdcCatalogServices { if (currCldsSdcResource != null && currCldsSdcResource.getArtifacts() != null
&& !currCldsSdcResource.getArtifacts().isEmpty()) {
for (CldsSdcArtifact currCldsSdcArtifact : currCldsSdcResource.getArtifacts()) {
- if (currCldsSdcArtifact != null && currCldsSdcArtifact.getArtifactName() != null) {
- if (currCldsSdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) {
- artifactUuid = currCldsSdcArtifact.getArtifactUUID();
- artifactExists = true;
- break;
- }
+ if (currCldsSdcArtifact != null && currCldsSdcArtifact.getArtifactName() != null
+ && currCldsSdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) {
+ artifactUuid = currCldsSdcArtifact.getArtifactUUID();
+ artifactExists = true;
+ break;
}
}
}
@@ -1109,22 +1179,16 @@ public class SdcCatalogServices { * @param resourceType
* The resourceType
* @return The list of CldsSdcResourceBasicInfo
- * @throws IOException
- * In case of issues with the Streams
*/
- private List<CldsSdcResourceBasicInfo> getAllSdcVForVfcResourcesBasedOnResourceType(String resourceType)
- throws IOException {
- List<CldsSdcResourceBasicInfo> allSdcResourceVfcBasicInfo = new ArrayList<CldsSdcResourceBasicInfo>();
+ private List<CldsSdcResourceBasicInfo> getAllSdcVForVfcResourcesBasedOnResourceType(String resourceType) {
String catalogUrl = refProp.getStringValue("sdc.catalog.url");
String resourceUrl = catalogUrl + "resources?resourceType=" + resourceType;
String allSdcVfcResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false);
-
- allSdcResourceVfcBasicInfo = getAllSdcResourcesListFromJson(allSdcVfcResources);
- return removeDuplicateSdcResourceBasicInfo(allSdcResourceVfcBasicInfo);
+ return removeDuplicateSdcResourceBasicInfo(getAllSdcResourcesListFromJson(allSdcVfcResources));
}
private String getResourceUuidFromResourceInvariantUuid(String resourceInvariantUuid,
- List<CldsSdcResourceBasicInfo> resourceInfoList) throws IOException {
+ List<CldsSdcResourceBasicInfo> resourceInfoList) {
String resourceUuid = null;
if (resourceInfoList != null && !resourceInfoList.isEmpty()) {
for (CldsSdcResourceBasicInfo currResource : resourceInfoList) {
@@ -1172,12 +1236,10 @@ public class SdcCatalogServices { * @param locationArtifactName
* The location artifact name from where we can get the Artifact
* UUID
- * @throws IOException
- * In case of issues with the streams
*
*/
public void uploadToSdc(ModelProperties prop, String userid, List<String> sdcReqUrlsList, String formattedSdcReq,
- String formattedSdcLocationReq, String artifactName, String locationArtifactName) throws IOException {
+ String formattedSdcLocationReq, String artifactName, String locationArtifactName) {
logger.info("userid=" + userid);
String serviceInvariantUuid = getServiceInvariantUuidFromProps(prop);
if (sdcReqUrlsList != null && !sdcReqUrlsList.isEmpty()) {
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 2b1762a24..ad466ee7d 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 @@ -139,7 +139,7 @@ public class OperationalPolicyReq { logger.info("notificationTopic=" + notificationTopic); // format yaml - String yaml = tca.isFound() ? formateNodeBYaml(refProp, prop, modelElementId, policyChain) + String yaml = (tca != null && tca.isFound()) ? formateNodeBYaml(refProp, prop, modelElementId, policyChain) : formatYaml(refProp, prop, modelElementId, policyChain); ruleAttributes.put("templateName", templateName); @@ -425,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 93c562601..f8351ca5d 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 @@ -46,7 +46,6 @@ import java.util.Map.Entry; import org.apache.commons.codec.digest.DigestUtils; import org.camunda.bpm.engine.delegate.DelegateExecution; import org.onap.clamp.clds.client.SdcCatalogServices; -import org.onap.clamp.clds.exception.SdcCommunicationException; import org.onap.clamp.clds.model.CldsSdcResource; import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.onap.clamp.clds.model.prop.Global; @@ -251,13 +250,12 @@ public class SdcReq { * @param baseUrl * @param sdcCatalogServices * @return - * @throws Exception */ public static List<String> getSdcReqUrlsList(ModelProperties prop, String baseUrl, SdcCatalogServices sdcCatalogServices, DelegateExecution execution) { // TODO : refact and regroup with very similar code List<String> urlList = new ArrayList<>(); - try { + Global globalProps = prop.getGlobal(); if (globalProps != null) { if (globalProps.getService() != null) { @@ -266,30 +264,28 @@ public class SdcReq { List<String> resourceVfList = globalProps.getResourceVf(); String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); - CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices + CldsSdcServiceDetail cldsSdcServiceDetail = sdcCatalogServices .getCldsSdcServiceDetailFromJson(sdcServicesInformation); - if (CldsSdcServiceDetail != null && resourceVfList != null) { - List<CldsSdcResource> CldsSdcResourcesList = CldsSdcServiceDetail.getResources(); - if (CldsSdcResourcesList != null && !CldsSdcResourcesList.isEmpty()) { - for (CldsSdcResource CldsSdcResource : CldsSdcResourcesList) { + if (cldsSdcServiceDetail != null && resourceVfList != null) { + List<CldsSdcResource> 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); - } + && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF") + && 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); - } + return urlList; } diff --git a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java index 19c916435..eee179111 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsConfiguration.java @@ -23,7 +23,9 @@ package org.onap.clamp.clds.config; -import java.io.IOException; +import com.att.ajsc.common.AjscProvider; +import com.att.ajsc.common.AjscService; + import java.util.ArrayList; import java.util.List; @@ -55,9 +57,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Profile; -import com.att.ajsc.common.AjscProvider; -import com.att.ajsc.common.AjscService; - @Configuration @Profile("clamp-default") public class CldsConfiguration { @@ -99,7 +98,7 @@ public class CldsConfiguration { } @Bean - public RefProp getRefProp() throws IOException { + public RefProp getRefProp() { return new RefProp(); } diff --git a/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java b/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java index 997a20f09..ecfb4aa11 100644 --- a/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java +++ b/src/main/java/org/onap/clamp/clds/config/CldsUserJsonDecoder.java @@ -23,13 +23,13 @@ package org.onap.clamp.clds.config; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.IOException; import java.io.InputStream; import org.onap.clamp.clds.service.CldsUser; -import com.fasterxml.jackson.databind.ObjectMapper; - public class CldsUserJsonDecoder { /** @@ -43,4 +43,8 @@ public class CldsUserJsonDecoder { // the ObjectMapper readValue method closes the stream no need to do it return new ObjectMapper().readValue(cldsUsersFile, CldsUser[].class); } + + private CldsUserJsonDecoder() { + + } } 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 3b69502ae..3cc6a325a 100644 --- a/src/main/java/org/onap/clamp/clds/dao/CldsDao.java +++ b/src/main/java/org/onap/clamp/clds/dao/CldsDao.java @@ -46,7 +46,6 @@ import org.onap.clamp.clds.model.CldsModelInstance; import org.onap.clamp.clds.model.CldsServiceData; import org.onap.clamp.clds.model.CldsTemplate; import org.onap.clamp.clds.model.ValueItem; -import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowMapper; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; @@ -398,8 +397,8 @@ public class CldsDao { * @return model names */ public List<ValueItem> getBpmnNames() { - String SQL = "SELECT model_name FROM model ORDER BY 1;"; - return jdbcTemplateObject.query(SQL, new ValueItemMapper()); + String sql = "SELECT model_name FROM model ORDER BY 1;"; + return jdbcTemplateObject.query(sql, new ValueItemMapper()); } /** @@ -435,8 +434,8 @@ public class CldsDao { * @return template names */ public List<ValueItem> getTemplateNames() { - String SQL = "SELECT template_name FROM template ORDER BY 1;"; - return jdbcTemplateObject.query(SQL, new ValueItemMapper()); + String sql = "SELECT template_name FROM template ORDER BY 1;"; + return jdbcTemplateObject.query(sql, new ValueItemMapper()); } /** @@ -466,14 +465,10 @@ public class CldsDao { public CldsServiceData getCldsServiceCache(String invariantUUID) { CldsServiceData cldsServiceData = null; List<CldsServiceData> cldsServiceDataList = new ArrayList<>(); - try { - String getCldsServiceSQL = "SELECT * , TIMESTAMPDIFF(SECOND, timestamp, CURRENT_TIMESTAMP()) FROM clds_service_cache where invariant_service_id = ? "; - cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] { invariantUUID }, - new CldsServiceDataMapper()); - logger.info("value of cldsServiceDataList: {}", cldsServiceDataList); - } catch (EmptyResultDataAccessException e) { - logger.info("cache row not found for invariantUUID: {}", invariantUUID); - } + String getCldsServiceSQL = "SELECT * , TIMESTAMPDIFF(SECOND, timestamp, CURRENT_TIMESTAMP()) FROM clds_service_cache where invariant_service_id = ? "; + cldsServiceData = jdbcTemplateObject.queryForObject(getCldsServiceSQL, new Object[] { invariantUUID }, + new CldsServiceDataMapper()); + logger.info("value of cldsServiceDataList: {}", cldsServiceDataList); return cldsServiceData; } @@ -499,7 +494,7 @@ public class CldsDao { } } - public void doHealthCheck() throws SQLException, IOException { + public void doHealthCheck() { jdbcTemplateObject.execute(HEALTHCHECK); } diff --git a/src/main/java/org/onap/clamp/clds/exception/policy/PolicyClientException.java b/src/main/java/org/onap/clamp/clds/exception/policy/PolicyClientException.java new file mode 100644 index 000000000..eaeb0b8fe --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/exception/policy/PolicyClientException.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.policy; + +/** + * New exception to Policy Client errors. + * + */ +public class PolicyClientException extends RuntimeException { + + /** + * Serial ID. + */ + private static final long serialVersionUID = -8379167975420213634L; + + /** + * This constructor can be used to create a new PolicyClientException. + * + * @param message + * A string message detailing the problem + * @param e + * The exception sent by the code + */ + public PolicyClientException(String message, Throwable e) { + super(message, e); + } + + /** + * This constructor can be used to create a new PolicyClientException. 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 PolicyClientException(String message) { + super(message); + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java new file mode 100644 index 000000000..a7dd5cbf0 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/prop/AbstractModelElement.java @@ -0,0 +1,280 @@ +/*- + * ============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.model.prop; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.databind.JsonNode; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +/** + * Provide base ModelElement functionality. Perform base parsing of properties + * for a ModelElement (such as, Collector, StringMatch, Policy, Tca, Holmes, + * ...) + */ +public abstract class AbstractModelElement { + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(AbstractModelElement.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + + private final String type; + private final ModelBpmn modelBpmn; + private final String id; + protected String topicPublishes; + protected final JsonNode modelElementJsonNode; + private boolean isFound; + + private final ModelProperties modelProp; + + /** + * Perform base parsing of properties for a ModelElement (such as, + * Collector, StringMatch, Policy and Tca) + * + * @param type + * @param modelProp + * @param modelBpmn + * @param modelJson + */ + protected AbstractModelElement(String type, ModelProperties modelProp, ModelBpmn modelBpmn, JsonNode modelJson) { + this.type = type; + this.modelProp = modelProp; + this.modelBpmn = modelBpmn; + this.id = modelBpmn.getId(type); + this.modelElementJsonNode = modelJson.get(id); + this.isFound = modelBpmn.isModelElementTypeInList(type); + } + + /** + * topicSubscribes is the topicPublishes of the from Model Element (the + * previous one in the chain). + * + * @return the topicSubscribes + */ + public String getTopicSubscribes() { + // get fromId for this type + String fromId = modelBpmn.getFromId(type); + // find the type of the from model element + String fromType = modelBpmn.getType(fromId); + // get the model element for the type + AbstractModelElement me = modelProp.getModelElementByType(fromType); + // get the topic publishes for the model element + return me.topicPublishes; + } + + /** + * @return the topicPublishes + */ + public String getTopicPublishes() { + return topicPublishes; + } + + /** + * Return the value field of the json node element that has a name field + * equals to the given name. + * + * @param nodeIn + * @param name + * @return + */ + public static String getValueByName(JsonNode nodeIn, String name) { + String value = null; + if (nodeIn != null) { + for (JsonNode node : nodeIn) { + if (node.path("name").asText().equals(name)) { + JsonNode vnode = node.path("value"); + if (vnode.isArray()) { + // if array, assume value is in first element + value = vnode.path(0).asText(); + } else { + // otherwise, just return text + value = vnode.asText(); + } + } + } + } + if (value == null || value.length() == 0) { + logger.warn(name + "=" + value); + } else { + logger.debug(name + "=" + value); + } + return value; + } + + /** + * Return the value field of the json node element that has a name field + * that equals the given name. + * + * @param nodeIn + * @param name + * @return + */ + public static String getNodeValueByName(JsonNode nodeIn, String name) { + String value = null; + if (nodeIn != null) { + value = nodeIn.path(name).asText(); + } + if (value == null || value.length() == 0) { + logger.warn(name + "=" + value); + } else { + logger.debug(name + "=" + value); + } + return value; + } + + /** + * Return the value field of the json node element that has a name field + * that equals the given name. + * + * @param nodeIn + * @param name + * @return + */ + public static List<String> getNodeValuesByName(JsonNode nodeIn, String name) { + List<String> values = new ArrayList<>(); + if (nodeIn != null) { + Iterator<JsonNode> i = nodeIn.iterator(); + while (i.hasNext()) { + JsonNode node = i.next(); + if (node.path("name").asText().equals(name)) { + JsonNode vnode = node.path("value"); + if (vnode.isArray()) { + // if array, assume value is in first element + values.add(vnode.path(0).asText()); + } else { + // otherwise, just return text + values.add(vnode.asText()); + } + } + } + } + return values; + } + + /** + * Return the int value field of the json node element that has a name field + * equals to the given name. + * + * @param nodeIn + * @param name + * @return + */ + public static Integer getIntValueByName(JsonNode nodeIn, String name) { + String value = getValueByName(nodeIn, name); + return Integer.valueOf(value); + } + + /** + * Return an array of values for the field of the json node element that has + * a name field equals to the given name. + * + * @param nodeIn + * @param name + * @return + */ + public static List<String> getValuesByName(JsonNode nodeIn, String name) { + List<String> values = null; + if (nodeIn != null) { + Iterator<JsonNode> i = nodeIn.iterator(); + while (i.hasNext()) { + JsonNode node = i.next(); + if (node.path("name").asText().equals(name)) { + values = getValuesList(node); + } + } + } + if (values == null || values.isEmpty()) { + logger.warn(name + "=" + values); + } else { + logger.debug(name + "=" + values); + } + return values; + } + + /** + * Return an array of String values. + * + * @param nodeIn + * @return + */ + public static List<String> getValuesList(JsonNode nodeIn) { + ArrayList<String> al = new ArrayList<>(); + if (nodeIn != null) { + Iterator<JsonNode> itr = nodeIn.path("value").elements(); + while (itr.hasNext()) { + JsonNode node = itr.next(); + al.add(node.asText()); + } + } + return al; + } + + /** + * Return the value field of the json node element that has a name field + * equals to the given name. + * + * @param name + * @return + */ + public String getValueByName(String name) { + return getValueByName(modelElementJsonNode, name); + } + + /** + * Return the int value field of the json node element that has a name field + * equals to the given name. + * + * @param name + * @return + */ + public Integer getIntValueByName(String name) { + return getIntValueByName(modelElementJsonNode, name); + } + + /** + * Return an array of values for the field of the json node element that has + * a name field equals to the given name. + * + * @param name + * @return + */ + public List<String> getValuesByName(String name) { + return getValuesByName(modelElementJsonNode, name); + } + + /** + * @return the id + */ + public String getId() { + return id; + } + + /** + * @return the isFound + */ + public boolean isFound() { + return isFound; + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java b/src/main/java/org/onap/clamp/clds/model/prop/Collector.java index bcb9cf01d..be30f3ec2 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Collector.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Collector.java @@ -30,7 +30,7 @@ import com.fasterxml.jackson.databind.JsonNode; /** * Parse Collector json properties. */ -public class Collector extends ModelElement { +public class Collector extends AbstractModelElement { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Collector.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Global.java b/src/main/java/org/onap/clamp/clds/model/prop/Global.java index 2fb7d5040..48c2fd9fb 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Global.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Global.java @@ -54,11 +54,11 @@ public class Global { */ public Global(JsonNode modelJson) { JsonNode globalNode = modelJson.get("global"); - service = ModelElement.getValueByName(globalNode, "service"); - actionSet = ModelElement.getValueByName(globalNode, "actionSet"); - resourceVf = ModelElement.getValuesByName(globalNode, "vf"); - resourceVfc = ModelElement.getValuesByName(globalNode, "vfc"); - location = ModelElement.getValuesByName(globalNode, "location"); + service = AbstractModelElement.getValueByName(globalNode, "service"); + actionSet = AbstractModelElement.getValueByName(globalNode, "actionSet"); + resourceVf = AbstractModelElement.getValuesByName(globalNode, "vf"); + resourceVfc = AbstractModelElement.getValuesByName(globalNode, "vfc"); + location = AbstractModelElement.getValuesByName(globalNode, "location"); } /** diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java b/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java index 233f656e1..4fa040754 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Holmes.java @@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.JsonNode; * [{"name":"correlationalLogic","value":"vcwx"},{"name":"operationalPolicy","value":"cccc"}] * */ -public class Holmes extends ModelElement { +public class Holmes extends AbstractModelElement { private static final String TYPE_HOLMES = "holmes"; diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java index 9684eea86..ac25400db 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ModelProperties.java @@ -62,13 +62,13 @@ public class ModelProperties { private Global global; - private final Map<String, ModelElement> modelElements = new ConcurrentHashMap<>(); + private final Map<String, AbstractModelElement> modelElements = new ConcurrentHashMap<>(); private String currentModelElementId; private String policyUniqueId; private static final Object lock = new Object(); - private static Map<Class<? extends ModelElement>, String> modelElementClasses = new ConcurrentHashMap<>(); + private static Map<Class<? extends AbstractModelElement>, String> modelElementClasses = new ConcurrentHashMap<>(); static { synchronized (lock) { @@ -119,7 +119,7 @@ public class ModelProperties { // Parse the list of base Model Elements and build up the // ModelElements modelElementClasses.entrySet().stream().parallel() - .filter(entry -> (ModelElement.class.isAssignableFrom(entry.getKey()) + .filter(entry -> (AbstractModelElement.class.isAssignableFrom(entry.getKey()) && missingTypes.contains(entry.getValue()))) .forEach(entry -> { try { @@ -183,8 +183,8 @@ public class ModelProperties { * @param type * @return */ - public ModelElement getModelElementByType(String type) { - ModelElement modelElement = modelElements.get(type); + public AbstractModelElement getModelElementByType(String type) { + AbstractModelElement modelElement = modelElements.get(type); if (modelElement == null) { throw new IllegalArgumentException("Invalid or not found ModelElement type: " + type); } @@ -338,14 +338,14 @@ public class ModelProperties { return global; } - public static final synchronized void registerModelElement(Class<? extends ModelElement> modelElementClass, + public static final synchronized void registerModelElement(Class<? extends AbstractModelElement> modelElementClass, String type) { if (!modelElementClasses.containsKey(modelElementClass.getClass())) { modelElementClasses.put(modelElementClass, type); } } - public <T extends ModelElement> T getType(Class<T> clazz) { + public <T extends AbstractModelElement> T getType(Class<T> clazz) { instantiateMissingModelElements(); String type = modelElementClasses.get(clazz); return (type != null ? (T) modelElements.get(type) : null); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Policy.java b/src/main/java/org/onap/clamp/clds/model/prop/Policy.java index 452af20cd..80d12aaba 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Policy.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Policy.java @@ -48,7 +48,7 @@ import java.util.List; * ""]},{"name":"onOtherFailure","value":[""]},{"name":"policy_parent","value":[ * "vf3RtPi"]}]]}] */ -public class Policy extends ModelElement { +public class Policy extends AbstractModelElement { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Policy.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java index 6142e9e63..c8c2ef461 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyChain.java @@ -63,13 +63,13 @@ public class PolicyChain { public PolicyChain(JsonNode node) { - policyId = ModelElement.getValueByName(node, "pid"); - timeout = ModelElement.getIntValueByName(node, "timeout"); + policyId = AbstractModelElement.getValueByName(node, "pid"); + timeout = AbstractModelElement.getIntValueByName(node, "timeout"); // process policy configurations JsonNode policyNode = node.get(node.size() - 1).get("policyConfigurations"); Iterator<JsonNode> itr = policyNode.elements(); - policyItems = new ArrayList<PolicyItem>(); + policyItems = new ArrayList<>(); while (itr.hasNext()) { policyItems.add(new PolicyItem(itr.next())); } diff --git a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java index d1729cda1..c84affefe 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/PolicyItem.java @@ -64,12 +64,12 @@ public class PolicyItem implements Cloneable { * @param node */ public PolicyItem(JsonNode node) { - id = ModelElement.getValueByName(node, "_id"); - recipe = ModelElement.getValueByName(node, "recipe"); - maxRetries = ModelElement.getIntValueByName(node, "maxRetries"); - retryTimeLimit = ModelElement.getIntValueByName(node, "retryTimeLimit"); - parentPolicy = ModelElement.getValueByName(node, "parentPolicy"); - parentPolicyConditions = ModelElement.getValuesByName(node, "parentPolicyConditions"); + id = AbstractModelElement.getValueByName(node, "_id"); + recipe = AbstractModelElement.getValueByName(node, "recipe"); + maxRetries = AbstractModelElement.getIntValueByName(node, "maxRetries"); + retryTimeLimit = AbstractModelElement.getIntValueByName(node, "retryTimeLimit"); + parentPolicy = AbstractModelElement.getValueByName(node, "parentPolicy"); + parentPolicyConditions = AbstractModelElement.getValuesByName(node, "parentPolicyConditions"); } diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java index 6e986bb0e..7395ced00 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ResourceGroup.java @@ -78,8 +78,8 @@ public class ResourceGroup { */ public ResourceGroup(JsonNode node) { - groupNumber = ModelElement.getValueByName(node, "rgname"); - policyId = ModelElement.getValueByName(node, "policyId"); + groupNumber = AbstractModelElement.getValueByName(node, "rgname"); + policyId = AbstractModelElement.getValueByName(node, "policyId"); // process Server_Configurations JsonNode serviceConfigurationsNode = node.get(node.size() - 1).get("serviceConfigurations"); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java index 186cc2192..f15d70196 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/ServiceConfiguration.java @@ -84,15 +84,15 @@ public class ServiceConfiguration { * @param node */ public ServiceConfiguration(JsonNode node) { - aaiMatchingFields = ModelElement.getValuesByName(node, "aaiMatchingFields"); - aaiSendFields = ModelElement.getValuesByName(node, "aaiSendFields"); + aaiMatchingFields = AbstractModelElement.getValuesByName(node, "aaiMatchingFields"); + aaiSendFields = AbstractModelElement.getValuesByName(node, "aaiSendFields"); // groupNumber = ModelElement.getValueByName(node, "groupNumber"); - resourceVf = ModelElement.getValuesByName(node, "vf"); - resourceVfc = ModelElement.getValuesByName(node, "vfc"); - timeWindow = ModelElement.getValueByName(node, "timeWindow"); - ageLimit = ModelElement.getValueByName(node, "ageLimit"); - createClosedLoopEventId = ModelElement.getValueByName(node, "createClosedLoopEventId"); - outputEventName = ModelElement.getValueByName(node, "outputEventName"); + resourceVf = AbstractModelElement.getValuesByName(node, "vf"); + resourceVfc = AbstractModelElement.getValuesByName(node, "vfc"); + timeWindow = AbstractModelElement.getValueByName(node, "timeWindow"); + ageLimit = AbstractModelElement.getValueByName(node, "ageLimit"); + createClosedLoopEventId = AbstractModelElement.getValueByName(node, "createClosedLoopEventId"); + outputEventName = AbstractModelElement.getValueByName(node, "outputEventName"); // process the stringSet fields JsonNode ssNodes = node.findPath("stringSet"); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java b/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java index 7fcc1b1b9..b74e7d134 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/StringMatch.java @@ -59,7 +59,7 @@ import java.util.List; * "outputEventName","value":["ABATED"]}]]}]}} * */ -public class StringMatch extends ModelElement { +public class StringMatch extends AbstractModelElement { private List<ResourceGroup> resourceGroups; diff --git a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java index 6bc68e23d..f7bbac0de 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/Tca.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/Tca.java @@ -48,7 +48,7 @@ import java.util.List; * * */ -public class Tca extends ModelElement { +public class Tca extends AbstractModelElement { protected static final EELFLogger logger = EELFManager.getInstance().getLogger(Tca.class); protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); diff --git a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java index aa1abde17..f104b0917 100644 --- a/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java +++ b/src/main/java/org/onap/clamp/clds/model/prop/TcaItem.java @@ -70,17 +70,17 @@ public class TcaItem { */ public TcaItem(JsonNode node) { - tcaName = ModelElement.getValueByName(node, "tname"); - tcaUuId = ModelElement.getValueByName(node, "tuuid"); - nfNamingCode = ModelElement.getValueByName(node, "tnfc"); - tcaEnable = ModelElement.getValueByName(node, "tcaEnab"); - policyId = ModelElement.getValueByName(node, "tcaPolId"); - if (ModelElement.getValueByName(node, "tcaInt") != null) { - interval = Integer.valueOf(ModelElement.getValueByName(node, "tcaInt")); + tcaName = AbstractModelElement.getValueByName(node, "tname"); + tcaUuId = AbstractModelElement.getValueByName(node, "tuuid"); + nfNamingCode = AbstractModelElement.getValueByName(node, "tnfc"); + tcaEnable = AbstractModelElement.getValueByName(node, "tcaEnab"); + policyId = AbstractModelElement.getValueByName(node, "tcaPolId"); + if (AbstractModelElement.getValueByName(node, "tcaInt") != null) { + interval = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaInt")); } - severity = ModelElement.getValueByName(node, "tcaSev"); - if (ModelElement.getValueByName(node, "tcaVio") != null) { - violations = Integer.valueOf(ModelElement.getValueByName(node, "tcaVio")); + severity = AbstractModelElement.getValueByName(node, "tcaSev"); + if (AbstractModelElement.getValueByName(node, "tcaVio") != null) { + violations = Integer.valueOf(AbstractModelElement.getValueByName(node, "tcaVio")); } // process service Configurations 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 ff4cfda17..920bce181 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsService.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsService.java @@ -500,9 +500,6 @@ public class CldsService extends SecureServiceBase { if (test != null && test.equalsIgnoreCase("true")) { isTest = true; } else { - // if action.test.override is true, then any action will be marked - // as test=true (even if incoming action request had test=false); - // otherwise, test flag will be unchanged on the action request String actionTestOverride = refProp.getStringValue("action.test.override"); if (actionTestOverride != null && actionTestOverride.equalsIgnoreCase("true")) { logger.info("PUT actionTestOverride={}", actionTestOverride); @@ -666,8 +663,7 @@ public class CldsService extends SecureServiceBase { /** * REST service that retrieves total properties by using invariantUUID based * on refresh and non refresh - * - * @throws Exception + * */ @ApiOperation(value = "Retrieves total properties by using invariantUUID based on refresh and non refresh", notes = "", response = String.class) @GET @@ -675,7 +671,7 @@ public class CldsService extends SecureServiceBase { @Produces(MediaType.APPLICATION_JSON) public String getSdcPropertiesByServiceUUIDForRefresh( @PathParam("serviceInvariantUUID") String serviceInvariantUUID, - @DefaultValue("false") @QueryParam("refresh") String refresh) throws Exception { + @DefaultValue("false") @QueryParam("refresh") String refresh) { Date startTime = new Date(); LoggingUtils.setRequestContext("CldsService: GET sdc properties by uuid", getPrincipalName()); CldsServiceData cldsServiceData = new CldsServiceData(); @@ -901,7 +897,7 @@ public class CldsService extends SecureServiceBase { @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public CldsModel deployModel(@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: Deploy model", getPrincipalName()); String deploymentId = "closedLoop_" + UUID.randomUUID() + "_deploymentId"; diff --git a/src/main/java/org/onap/clamp/clds/service/CldsUser.java b/src/main/java/org/onap/clamp/clds/service/CldsUser.java index 9db1e6078..34a3f8ea2 100644 --- a/src/main/java/org/onap/clamp/clds/service/CldsUser.java +++ b/src/main/java/org/onap/clamp/clds/service/CldsUser.java @@ -71,7 +71,7 @@ public class CldsUser { } public String[] getPermissionsString() { - return Arrays.stream(getPermissions()).map(perm -> perm.getKey()).toArray(String[]::new); + return Arrays.stream(getPermissions()).map(SecureServicePermission::getKey).toArray(String[]::new); } /** diff --git a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java index 20b85d6f6..a283f43d4 100644 --- a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java +++ b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java @@ -40,11 +40,11 @@ import org.onap.clamp.clds.model.prop.ModelProperties; public class SdcReqTest { - String baseUrl = "AYBABTU"; + String baseUrl = "AYBABTU"; String serviceInvariantUUID = "serviceInvariantUUID"; @Test - public void getSdcReqUrlsListNoGlobalPropTest() throws Exception { + public void getSdcReqUrlsListNoGlobalPropTest() { ModelProperties prop = mock(ModelProperties.class); SdcCatalogServices sdcCatalogServices = mock(SdcCatalogServices.class); DelegateExecution delegateExecution = mock(DelegateExecution.class); diff --git a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java index 19fad4805..69df97212 100644 --- a/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java +++ b/src/test/java/org/onap/clamp/clds/it/PolicyClientIT.java @@ -119,7 +119,7 @@ public class PolicyClientIT extends AbstractIT { try { responseMessage = policyClient.sendMicroServiceInJson(policyJson, prop, tcaPolicyRequestUuid); } catch (Exception e) { - assertTrue(e.getMessage().contains("Policy send failed: PE500 ")); + assertTrue(e.getMessage().contains("Exception while communicating with Policy")); } System.out.println(responseMessage); } diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java index 5d08e5ec0..a12d6b7d5 100644 --- a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java +++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java @@ -202,9 +202,10 @@ public class SdcCatalogServicesIT extends AbstractIT { @Test public void getServiceUuidFromServiceInvariantIdTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.when(spy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString( - SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")); + Mockito.doReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")) + .when(spy).getSdcServicesInformation(null); // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it // should not exist, returning empty string String resUuidVcts4Null = spy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b"); @@ -228,8 +229,10 @@ public class SdcCatalogServicesIT extends AbstractIT { @Test public void getCldsServiceDataWithAlarmConditionsTest() throws Exception { SdcCatalogServices spy = Mockito.spy(sdcCatalogWired); - Mockito.when(spy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString( - SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")); + + Mockito.doReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")) + .when(spy).getSdcServicesInformation(null); // This invariant uuid is the one from vcts4 v1.1 String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl") @@ -286,7 +289,8 @@ public class SdcCatalogServicesIT extends AbstractIT { assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID())); assertTrue(cldsServiceData.getCldsVfs().size() == 1); - List<CldsAlarmCondition> alarmsList = spy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData, "alarmCondition"); + List<CldsAlarmCondition> alarmsList = spy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData, + "alarmCondition"); assertTrue(alarmsList.size() == 6); } diff --git a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java index c6b19d0f9..03d7d65da 100644 --- a/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java +++ b/src/test/java/org/onap/clamp/clds/model/prop/CustomModelElement.java @@ -28,7 +28,7 @@ import com.fasterxml.jackson.databind.JsonNode; /**
* A CustomModelElement to test the capability to add new elements on the fly.
*/
-public class CustomModelElement extends ModelElement {
+public class CustomModelElement extends AbstractModelElement {
private static final String CUSTOM_TYPE = "customType";
|