X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fcontroller%2FCreateClosedLoopFaultController.java;h=062ed2afacf15ef1cc9348763ef63c3fa18e8654;hp=4c3249311f51d3d644e18874bcfe1daf487eaab6;hb=f36e53a3637e1204a42491ec0eeed7b3c763f681;hpb=5ae1ce7a3ffeb37836ef97ad3da554036da780bc diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java index 4c3249311..062ed2afa 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/controller/CreateClosedLoopFaultController.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved. * Modifications Copyright (C) 2019 Bell Canada * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,6 +21,10 @@ package org.onap.policy.controller; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.ArrayList; @@ -29,9 +33,17 @@ import java.util.Collection; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; - import java.util.Objects; import java.util.stream.IntStream; +import lombok.Getter; +import lombok.Setter; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; +import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; + import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; import org.onap.policy.rest.adapter.ClosedLoopFaultBody; @@ -48,18 +60,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; - -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; -import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType; - @Controller @RequestMapping("/") public class CreateClosedLoopFaultController extends RestrictedBaseController { @@ -90,19 +90,25 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { // Empty constructor } + /** + * setDataToPolicyRestAdapter. + * + * @param policyData PolicyRestAdapter + * @param root JsonNode + * @return PolicyRestAdapter + */ public PolicyRestAdapter setDataToPolicyRestAdapter(PolicyRestAdapter policyData, JsonNode root) { try { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - ClosedLoopFaultTrapDatas trapDatas = mapper - .readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); - ClosedLoopFaultTrapDatas faultDatas = mapper - .readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); - ClosedLoopGridJSONData policyJsonData = mapper - .readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJSONData.class); - ClosedLoopFaultBody jsonBody = mapper - .readValue(root.get("policyData").get("policy").get("jsonBodyData").toString(), - ClosedLoopFaultBody.class); + final ClosedLoopFaultTrapDatas trapDatas = + mapper.readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); + final ClosedLoopFaultTrapDatas faultDatas = + mapper.readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); + final ClosedLoopGridJsonData policyJsonData = + mapper.readValue(root.get("policyData").get("policy").toString(), ClosedLoopGridJsonData.class); + final ClosedLoopFaultBody jsonBody = mapper.readValue( + root.get("policyData").get("policy").get("jsonBodyData").toString(), ClosedLoopFaultBody.class); // Build trapSignatureDatas list from faultData List trapSignatureDatas = new ArrayList<>(); @@ -118,10 +124,10 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { triggerSignatures.setTrapMaxAge(Integer.parseInt(policyData.getTrapMaxAge())); ClosedLoopFaultTriggerUISignatures uiTriggerSignatures = new ClosedLoopFaultTriggerUISignatures(); if (!trapSignatureDatas.isEmpty()) { - uiTriggerSignatures.setSignatures(getUITriggerSignature(TRAP, trapSignatureDatas.get(0))); + uiTriggerSignatures.setSignatures(getUiTriggerSignature(TRAP, trapSignatureDatas.get(0))); if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) { uiTriggerSignatures - .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnecttriggerSignatures())); + .setConnectSignatures(getUiConnectTraps(policyJsonData.getConnecttriggerSignatures())); } } jsonBody.setTriggerSignaturesUsedForUI(uiTriggerSignatures); @@ -144,19 +150,17 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { faultSignatures.setTimeWindow(Integer.parseInt(policyData.getVerificationclearTimeOut())); ClosedLoopFaultTriggerUISignatures uifaultSignatures = new ClosedLoopFaultTriggerUISignatures(); if (!faultSignatureDatas.isEmpty()) { - uifaultSignatures.setSignatures(getUITriggerSignature(FAULT, faultSignatureDatas.get(0))); + uifaultSignatures.setSignatures(getUiTriggerSignature(FAULT, faultSignatureDatas.get(0))); if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) { - uifaultSignatures - .setConnectSignatures(getUIConnectTraps(policyJsonData.getConnectVerificationSignatures())); + uifaultSignatures.setConnectSignatures( + getUiConnectTraps(policyJsonData.getConnectVerificationSignatures())); } } jsonBody.setVerificationSignaturesUsedForUI(uifaultSignatures); jsonBody.setVerificationTimeWindowUsedForUI(Integer.parseInt(policyData.getVerificationclearTimeOut())); } jsonBody.setVerificationSignatures(faultSignatures); - ObjectWriter om = new ObjectMapper().writer(); - String json = om.writeValueAsString(jsonBody); - policyData.setJsonBody(json); + policyData.setJsonBody(new ObjectMapper().writer().writeValueAsString(jsonBody)); } catch (Exception e) { policyLogger.error("Exception Occured while setting data to Adapter", e); @@ -165,13 +169,14 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } // TODO: Can getResultBody() and getFaultBody() be merged? - private String getResultBody(final ClosedLoopGridJSONData policyJsonData, final List trapSignatureDatas) { + private String getResultBody(final ClosedLoopGridJsonData policyJsonData, final List trapSignatureDatas) { StringBuilder resultBody = new StringBuilder(); if (!policyJsonData.getConnecttriggerSignatures().isEmpty()) { resultBody.append("("); IntStream.range(0, policyJsonData.getConnecttriggerSignatures().size()) - .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(), - trapSignatureDatas.get(0))).forEach(resultBody::append); + .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnecttriggerSignatures(), + trapSignatureDatas.get(0))) + .forEach(resultBody::append); resultBody.append(resultBody).append(")"); } else { if (!trapSignatureDatas.isEmpty()) { @@ -181,13 +186,14 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { return resultBody.toString(); } - private String getFaultBody(final ClosedLoopGridJSONData policyJsonData, final List faultSignatureDatas) { + private String getFaultBody(final ClosedLoopGridJsonData policyJsonData, final List faultSignatureDatas) { StringBuilder faultBody = new StringBuilder(); if (!policyJsonData.getConnectVerificationSignatures().isEmpty()) { faultBody.append("("); IntStream.range(0, policyJsonData.getConnectVerificationSignatures().size()) - .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(), - faultSignatureDatas.get(0))).forEach(faultBody::append); + .mapToObj(i -> connectTriggerSignature(i, policyJsonData.getConnectVerificationSignatures(), + faultSignatureDatas.get(0))) + .forEach(faultBody::append); faultBody.append(")"); } else { if (!faultSignatureDatas.isEmpty()) { @@ -237,7 +243,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } private void appendTrapToResultBody(List triggerSignatures, Object object, StringBuilder resultBody, - Map connectTraps, String connectTrapName) { + Map connectTraps, String connectTrapName) { String connectTrap = connectTraps.get(connectTrapName); if (connectTrap.startsWith(TRAP) || connectTrap.startsWith(FAULT)) { String trapBody = callTrap(connectTrap, object); @@ -339,7 +345,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { attributesStr = attributesStr + "(" + readAttributes(objectList, iy) + ")"; } catch (NumberFormatException e) { try { - trap1Attrib = getVarbindOID(trap1Attrib); + trap1Attrib = getVarbindOid(trap1Attrib); attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")"; } catch (UnsupportedEncodingException e1) { policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e1); @@ -347,7 +353,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } } else { try { - trap1Attrib = getVarbindOID(trap1Attrib); + trap1Attrib = getVarbindOid(trap1Attrib); attributesStr = attributesStr + "(" + URLEncoder.encode(trap1Attrib, ENC_UTF_8) + ")"; } catch (UnsupportedEncodingException e) { policyLogger.error("Caused Exception while Encoding Varbind Dictionary Values", e); @@ -356,11 +362,11 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { return attributesStr; } - private String getVarbindOID(String attrib) { + private String getVarbindOid(String attrib) { VarbindDictionary varbindId; try { - varbindId = (VarbindDictionary) commonclassdao - .getEntityItem(VarbindDictionary.class, "varbindName", attrib); + varbindId = + (VarbindDictionary) commonclassdao.getEntityItem(VarbindDictionary.class, "varbindName", attrib); return varbindId.getVarbindOID(); } catch (Exception e) { policyLogger.error("Error during retrieving varbindName " + attrib, e); @@ -368,9 +374,9 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } } - //connect traps data set to JSON Body as String + // connect traps data set to JSON Body as String @SuppressWarnings({"unchecked", "rawtypes"}) - private String getUIConnectTraps(List connectTrapSignatures) { + private String getUiConnectTraps(List connectTrapSignatures) { StringBuilder resultBody = new StringBuilder(); String connectMainBody = ""; for (Object connectTrapSignature : connectTrapSignatures) { @@ -401,9 +407,8 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { if (((LinkedHashMap) connectTraps).get(TRAP_COUNT_2) != null) { trapCount2 = ((LinkedHashMap) connectTraps).get(TRAP_COUNT_2).toString(); } - connectBody = - notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + connectTrap2 + "@!" - + trapCount2 + "#!?!"; + connectBody = notBox + "@!" + connectTrap1 + "@!" + trapCount1 + "@!" + operatorBox + "@!" + + connectTrap2 + "@!" + trapCount2 + "#!?!"; } resultBody.append(connectBody); } @@ -412,7 +417,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } // get Trigger signature from JSON body - private String getUITriggerSignature(String trap, Object object2) { + private String getUiTriggerSignature(String trap, Object object2) { ClosedLoopFaultTrapDatas trapDatas = (ClosedLoopFaultTrapDatas) object2; List attributeList = new ArrayList<>(); // Read the Trap @@ -473,6 +478,12 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { return triggerBody.toString(); } + /** + * prePopulateClosedLoopFaultPolicyData. + * + * @param policyAdapter PolicyRestAdapter + * @param entity PolicyEntity + */ public void prePopulateClosedLoopFaultPolicyData(PolicyRestAdapter policyAdapter, PolicyEntity entity) { if (policyAdapter.getPolicyData() instanceof PolicyType) { PolicyType policy = (PolicyType) policyAdapter.getPolicyData(); @@ -481,7 +492,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { setPolicyAdapterPolicyNameAndDescription(policyAdapter, policy); // Set PolicyAdapter JsonBodyData, timeout settings - setClosedLoopJSONFile(policyAdapter, entity); + setClosedLoopJsonFile(policyAdapter, entity); // Get the target data under policy. TargetType target = policy.getTarget(); @@ -502,60 +513,58 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { private void setPolicyAdapterMatchAttributes(PolicyRestAdapter policyAdapter, List anyOfList) { anyOfList.stream() - //Extract nonNull list of AllOfType objs from each AnyOfType obj - .map(AnyOfType::getAllOf).filter(Objects::nonNull) - .forEach(allOfList -> - //Extract nonNull list of MatchType objs from each AllOFType obj - allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull) - .flatMap(Collection::stream) - .forEach(match -> { - // Under the match we have attribute value and - // attributeDesignator. So,finally down to the actual attribute. - AttributeValueType attributeValue = match.getAttributeValue(); - String value = (String) attributeValue.getContent().get(0); - AttributeDesignatorType designator = match.getAttributeDesignator(); - String attributeId = designator.getAttributeId(); - // First match in the target is OnapName, so set that value. - if ("ONAPName".equals(attributeId)) { - policyAdapter.setOnapName(value); - OnapName onapName = new OnapName(); - onapName.setOnapName(value); - policyAdapter.setOnapNameField(onapName); - } else if ("RiskType".equals(attributeId)) { - policyAdapter.setRiskType(value); - } else if ("RiskLevel".equals(attributeId)) { - policyAdapter.setRiskLevel(value); - } else if ("guard".equals(attributeId)) { - policyAdapter.setGuard(value); - } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) { - PolicyController controller = new PolicyController(); - String newDate = controller.convertDate(value); - policyAdapter.setTtlDate(newDate); - } - })); + // Extract nonNull list of AllOfType objs from each AnyOfType obj + .map(AnyOfType::getAllOf).filter(Objects::nonNull).forEach(allOfList -> + // Extract nonNull list of MatchType objs from each AllOFType obj + allOfList.stream().map(AllOfType::getMatch).filter(Objects::nonNull).flatMap(Collection::stream) + .forEach(match -> { + // Under the match we have attribute value and + // attributeDesignator. So,finally down to the actual attribute. + AttributeValueType attributeValue = match.getAttributeValue(); + String value = (String) attributeValue.getContent().get(0); + AttributeDesignatorType designator = match.getAttributeDesignator(); + String attributeId = designator.getAttributeId(); + // First match in the target is OnapName, so set that value. + if ("ONAPName".equals(attributeId)) { + policyAdapter.setOnapName(value); + OnapName onapName = new OnapName(); + onapName.setOnapName(value); + policyAdapter.setOnapNameField(onapName); + } else if ("RiskType".equals(attributeId)) { + policyAdapter.setRiskType(value); + } else if ("RiskLevel".equals(attributeId)) { + policyAdapter.setRiskLevel(value); + } else if ("guard".equals(attributeId)) { + policyAdapter.setGuard(value); + } else if ("TTLDate".equals(attributeId) && !value.contains("NA")) { + PolicyController controller = new PolicyController(); + String newDate = controller.convertDate(value); + policyAdapter.setTtlDate(newDate); + } + })); } private void setPolicyAdapterPolicyNameAndDescription(PolicyRestAdapter policyAdapter, PolicyType policy) { policyAdapter.setOldPolicyFileName(policyAdapter.getPolicyName()); - String policyNameValue = policyAdapter.getPolicyName() - .substring(policyAdapter.getPolicyName().indexOf("Fault_") + 6); + String policyNameValue = + policyAdapter.getPolicyName().substring(policyAdapter.getPolicyName().indexOf("Fault_") + 6); policyAdapter.setPolicyName(policyNameValue); String description; try { description = policy.getDescription().substring(0, policy.getDescription().indexOf("@CreatedBy:")); } catch (Exception e) { policyLogger.error( - "Error during collecting the description tag info for createClosedLoopFault " + policyNameValue, e); + "Error during collecting the description tag info for createClosedLoopFault " + policyNameValue, e); description = policy.getDescription(); } policyAdapter.setPolicyDescription(description); } - private void setClosedLoopJSONFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { - ObjectMapper mapper = new ObjectMapper(); + private void setClosedLoopJsonFile(PolicyRestAdapter policyAdapter, PolicyEntity entity) { try { - ClosedLoopFaultBody closedLoopBody = mapper - .readValue(entity.getConfigurationData().getConfigBody(), ClosedLoopFaultBody.class); + ClosedLoopFaultBody closedLoopBody = + new ObjectMapper().readValue(entity.getConfigurationData().getConfigBody(), + ClosedLoopFaultBody.class); if ("ACTIVE".equalsIgnoreCase(closedLoopBody.getClosedLoopPolicyStatus())) { closedLoopBody.setClosedLoopPolicyStatus("Active"); } else { @@ -570,7 +579,7 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } if (closedLoopBody.getVerificationTimeWindowUsedForUI() != null) { policyAdapter - .setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString()); + .setVerificationclearTimeOut(closedLoopBody.getVerificationTimeWindowUsedForUI().toString()); } } catch (Exception e) { policyLogger.error("Exception Occured" + e); @@ -578,7 +587,10 @@ public class CreateClosedLoopFaultController extends RestrictedBaseController { } } -class ClosedLoopGridJSONData { + +@Getter +@Setter +class ClosedLoopGridJsonData { private String clearTimeOut; private String trapMaxAge; @@ -586,44 +598,4 @@ class ClosedLoopGridJSONData { private List connecttriggerSignatures; private List connectVerificationSignatures; - public String getClearTimeOut() { - return clearTimeOut; - } - - public void setClearTimeOut(String clearTimeOut) { - this.clearTimeOut = clearTimeOut; - } - - public String getTrapMaxAge() { - return trapMaxAge; - } - - public void setTrapMaxAge(String trapMaxAge) { - this.trapMaxAge = trapMaxAge; - } - - public String getVerificationclearTimeOut() { - return verificationclearTimeOut; - } - - public void setVerificationclearTimeOut(String verificationclearTimeOut) { - this.verificationclearTimeOut = verificationclearTimeOut; - } - - - public List getConnecttriggerSignatures() { - return connecttriggerSignatures; - } - - public void setConnecttriggerSignatures(List connecttriggerSignatures) { - this.connecttriggerSignatures = connecttriggerSignatures; - } - - public List getConnectVerificationSignatures() { - return connectVerificationSignatures; - } - - public void setConnectVerificationSignatures(List connectVerificationSignatures) { - this.connectVerificationSignatures = connectVerificationSignatures; - } }