X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Frest%2Futil%2FPolicyValidationRequestWrapper.java;h=8fdc1e1d2aeeb9a71bd794460b9503f788be5332;hp=779c5227aeea1915a49b25560d662012c5c62a78;hb=779125e31adbcc59a9864843b523bd6ed2751cbb;hpb=7614ce4634486cea3898ff9328626f69196687cc diff --git a/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidationRequestWrapper.java b/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidationRequestWrapper.java index 779c5227a..8fdc1e1d2 100644 --- a/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidationRequestWrapper.java +++ b/ONAP-REST/src/main/java/org/onap/policy/rest/util/PolicyValidationRequestWrapper.java @@ -3,20 +3,28 @@ * ONAP Policy Engine * ================================================================================ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019 Nordix Foundation. * ================================================================================ * 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========================================================= - */package org.onap.policy.rest.util; + */ + +package org.onap.policy.rest.util; + +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.base.Strings; import java.io.IOException; import java.io.StringReader; @@ -43,29 +51,29 @@ import org.onap.policy.rest.adapter.RainyDayParams; import org.onap.policy.rest.adapter.YAMLParams; import org.onap.policy.xacml.api.XACMLErrorConstants; -import com.fasterxml.jackson.databind.DeserializationFeature; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.base.Strings; - public class PolicyValidationRequestWrapper { - - private static final Logger LOGGER = FlexLogger.getLogger(PolicyValidationRequestWrapper.class); - public static final String CONFIG_NAME="configName"; - public static final String INVALIDJSON = " improper JSON format: "; - public static final String ONAPNAME = "onapname"; - public static final String CONTENT = "content"; - public static final String GUARD = "guard"; - public static final String LOCATION = "location"; - public static final String POLICYSCOPE = "policyScope"; - public static final String PRIORITY = "priority"; - public static final String RISKLEVEL = "riskLevel"; - public static final String RISKTYPE = "riskType"; - public static final String SERVICE = "service"; - public static final String VERSION = "version"; - - public static final String SERVICETYPE_POLICY_NAME = "serviceTypePolicyName"; - + private static final Logger LOGGER = FlexLogger.getLogger(PolicyValidationRequestWrapper.class); + + private static final String CONFIG_NAME = "configName"; + private static final String CONTENT = "content"; + private static final String GUARD = "guard"; + private static final String INVALIDJSON = " improper JSON format: "; + private static final String LOCATION = "location"; + private static final String ONAPNAME = "onapname"; + private static final String POLICYSCOPE = "policyScope"; + private static final String PRIORITY = "priority"; + private static final String RISKLEVEL = "riskLevel"; + private static final String RISKTYPE = "riskType"; + private static final String SERVICE = "service"; + private static final String SERVICETYPE_POLICY_NAME = "serviceTypePolicyName"; + private static final String VERSION = "version"; + + /** + * Populate request parameters. + * + * @param request the request + * @return the policy rest adapter + */ public PolicyRestAdapter populateRequestParameters(HttpServletRequest request) { PolicyRestAdapter policyData = null; @@ -76,11 +84,11 @@ public class PolicyValidationRequestWrapper { mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); JsonNode root = mapper.readTree(request.getReader()); policyData = mapper.readValue(root.get("policyData").toString(), PolicyRestAdapter.class); - if(root.get("trapData") != null){ + if (root.get("trapData") != null) { trapDatas = mapper.readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); policyData.setTrapDatas(trapDatas); } - if(root.get("faultData") != null){ + if (root.get("faultData") != null) { faultDatas = mapper.readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); policyData.setFaultDatas(faultDatas); } @@ -88,74 +96,80 @@ public class PolicyValidationRequestWrapper { JsonObject json; json = stringToJsonObject(root.toString()); - if(json != null){ - if(json.containsKey("policyJSON")){ + if (json != null) { + if (json.containsKey("policyJSON")) { policyData.setPolicyJSON(root.get("policyJSON")); - }else{ + } else { String jsonBodyData = json.getJsonObject("policyData").get("jsonBodyData").toString(); policyData.setJsonBody(jsonBodyData); } } } catch (Exception e) { - LOGGER.error("Exception Occured while populating request parameters: " +e); + LOGGER.error("Exception Occured while populating request parameters: " + e); } return policyData; } + /** + * Populate request parameters. + * + * @param parameters the parameters + * @return the policy rest adapter + */ public PolicyRestAdapter populateRequestParameters(PolicyParameters parameters) { PolicyRestAdapter policyData = new PolicyRestAdapter(); - + /* * set policy adapter values for Building JSON object containing policy data */ - //Common Policy Fields + // Common Policy Fields policyData.setPolicyName(parameters.getPolicyName()); policyData.setOnapName(parameters.getOnapName()); - policyData.setPriority(parameters.getPriority()); //Micro Service - policyData.setConfigName(parameters.getConfigName()); //Base and Firewall - policyData.setRiskType(parameters.getRiskType()); //Safe parameters Attributes - policyData.setRiskLevel(parameters.getRiskLevel());//Safe parameters Attributes - policyData.setGuard(String.valueOf(parameters.getGuard()));//Safe parameters Attributes - policyData.setTtlDate(convertDate(parameters.getTtlDate()));//Safe parameters Attributes + policyData.setPriority(parameters.getPriority()); // Micro Service + policyData.setConfigName(parameters.getConfigName()); // Base and Firewall + policyData.setRiskType(parameters.getRiskType()); // Safe parameters Attributes + policyData.setRiskLevel(parameters.getRiskLevel());// Safe parameters Attributes + policyData.setGuard(String.valueOf(parameters.getGuard()));// Safe parameters Attributes + policyData.setTtlDate(convertDate(parameters.getTtlDate()));// Safe parameters Attributes policyData.setApiflag("API"); - //Some policies require jsonObject conversion from String for configBody (i.e. MicroService and Firewall) + // Some policies require jsonObject conversion from String for configBody (i.e. MicroService and Firewall) JsonObject json = null; - try{ - if(parameters.getConfigBody()!= null){ + try { + if (parameters.getConfigBody() != null) { json = stringToJsonObject(parameters.getConfigBody()); } - } catch(JsonException| IllegalStateException e){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + } catch (JsonException | IllegalStateException e) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + INVALIDJSON + parameters.getConfigBody(); LOGGER.error(message, e); return null; } - - if(parameters.getPolicyClass()!=null && !"Config".equals(parameters.getPolicyClass().toString())){ + + if (parameters.getPolicyClass() != null && !"Config".equals(parameters.getPolicyClass().toString())) { policyData.setPolicyType(parameters.getPolicyClass().toString()); - //Get Matching attribute values + // Get Matching attribute values Map> attributes = parameters.getAttributes(); Map matching = null; - if(attributes != null){ + if (attributes != null) { matching = attributes.get(AttributeType.MATCHING); } - if("Decision".equals(parameters.getPolicyClass().toString())){ + if ("Decision".equals(parameters.getPolicyClass().toString())) { String ruleProvider = parameters.getRuleProvider().toString(); policyData.setRuleProvider(ruleProvider); - if("Rainy_Day".equals(ruleProvider)){ + if ("Rainy_Day".equals(ruleProvider)) { // Set Matching attributes in RainyDayParams in adapter RainyDayParams rainyday = new RainyDayParams(); - if(matching != null) { + if (matching != null) { rainyday.setServiceType(matching.get("ServiceType")); rainyday.setVnfType(matching.get("VNFType")); rainyday.setBbid(matching.get("BB_ID")); @@ -177,7 +191,7 @@ public class PolicyValidationRequestWrapper { policyData.setRainyday(rainyday); } else if ("GUARD_YAML".equals(ruleProvider) || "GUARD_BL_YAML".equals(ruleProvider) - || "GUARD_MIN_MAX".equals(ruleProvider)) { + || "GUARD_MIN_MAX".equals(ruleProvider)) { // Set Matching attributes in YAMLParams in adapter YAMLParams yamlparams = new YAMLParams(); @@ -188,20 +202,20 @@ public class PolicyValidationRequestWrapper { yamlparams.setGuardActiveStart(matching.get("guardActiveStart")); yamlparams.setGuardActiveEnd(matching.get("guardActiveEnd")); - if("GUARD_YAML".equals(ruleProvider)){ + if ("GUARD_YAML".equals(ruleProvider)) { yamlparams.setLimit(matching.get("limit")); yamlparams.setTimeWindow(matching.get("timeWindow")); yamlparams.setTimeUnits(matching.get("timeUnits")); } else if ("GUARD_MIN_MAX".equals(ruleProvider)) { yamlparams.setMin(matching.get("min")); yamlparams.setMax(matching.get("max")); - }else{ + } else { List blackList = new ArrayList<>(); - if(!Strings.isNullOrEmpty(matching.get("blackList"))){ + if (!Strings.isNullOrEmpty(matching.get("blackList"))) { String[] blackListArray = matching.get("blackList").split(","); - for(String element : blackListArray){ + for (String element : blackListArray) { blackList.add(element); } } @@ -213,7 +227,7 @@ public class PolicyValidationRequestWrapper { policyData.setYamlparams(yamlparams); } - } else if("Action".equals(parameters.getPolicyClass().toString())){ + } else if ("Action".equals(parameters.getPolicyClass().toString())) { ArrayList ruleAlgorithmChoices = new ArrayList<>(); @@ -223,9 +237,8 @@ public class PolicyValidationRequestWrapper { List dyrnamicFieldTwoRuleAlgorithms = parameters.getDynamicRuleAlgorithmField2(); if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) { - int i = dynamicLabelRuleAlgorithms.size() - 1; - for (String labelAttr : dynamicLabelRuleAlgorithms) { + for (int i = dynamicLabelRuleAlgorithms.size() - 1; i >= 0; i--) { LinkedHashMap ruleAlgorithm = new LinkedHashMap<>(); String id = dynamicLabelRuleAlgorithms.get(i); @@ -239,9 +252,6 @@ public class PolicyValidationRequestWrapper { ruleAlgorithm.put("dynamicRuleAlgorithmField2", dynamicRuleAlgorithmField2); ruleAlgorithmChoices.add(ruleAlgorithm); - - i--; - } } @@ -264,189 +274,193 @@ public class PolicyValidationRequestWrapper { policyData.setActionPerformer(parameters.getActionPerformer()); } - }else { + } else { policyData.setPolicyType("Config"); policyData.setConfigPolicyType(parameters.getPolicyConfigType().toString()); - //Config Specific - policyData.setConfigBodyData(parameters.getConfigBody()); //Base - policyData.setConfigType((parameters.getConfigBodyType()!=null) ? parameters.getConfigBodyType().toString().toUpperCase(): null); //Base + // Config Specific + policyData.setConfigBodyData(parameters.getConfigBody()); // Base + policyData.setConfigType((parameters.getConfigBodyType() != null) + ? parameters.getConfigBodyType().toString().toUpperCase() + : null); // Base - if("FW".equalsIgnoreCase(parameters.getPolicyConfigType().toString())){ + if ("FW".equalsIgnoreCase(parameters.getPolicyConfigType().toString())) { policyData.setConfigPolicyType("Firewall Config"); // get values and attributes from the JsonObject - if(json != null){ - if (json.get("securityZoneId")!=null){ + if (json != null) { + if (json.get("securityZoneId") != null) { String securityZone = json.get("securityZoneId").toString().replace("\"", ""); policyData.setSecurityZone(securityZone); } - if (json.get(CONFIG_NAME)!=null){ + if (json.get(CONFIG_NAME) != null) { String configName = json.get(CONFIG_NAME).toString().replace("\"", ""); policyData.setConfigName(configName); } } - }else if("MS".equals(parameters.getPolicyConfigType().toString())){ + } else if ("MS".equals(parameters.getPolicyConfigType().toString())) { policyData.setConfigPolicyType("Micro Service"); // get values and attributes from the JsonObject - if(json != null){ - if (json.containsKey(CONTENT)){ + if (json != null) { + if (json.containsKey(CONTENT)) { String content = json.get(CONTENT).toString(); ObjectMapper mapper = new ObjectMapper(); - JsonNode policyJSON = null; + JsonNode policyJson = null; try { - policyJSON = mapper.readTree(content); + policyJson = mapper.readTree(content); } catch (IOException e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + INVALIDJSON + + parameters.getConfigBody(); LOGGER.error(message, e); return null; } - policyData.setPolicyJSON(policyJSON); + policyData.setPolicyJSON(policyJson); } - if (json.containsKey(SERVICE)){ + if (json.containsKey(SERVICE)) { String serviceType = json.get(SERVICE).toString().replace("\"", ""); policyData.setServiceType(serviceType); } - if (json.containsKey("uuid")){ + if (json.containsKey("uuid")) { String uuid = json.get("uuid").toString().replace("\"", ""); policyData.setUuid(uuid); } - if (json.containsKey(LOCATION)){ + if (json.containsKey(LOCATION)) { String msLocation = json.get(LOCATION).toString().replace("\"", ""); policyData.setLocation(msLocation); } - if (json.containsKey(CONFIG_NAME)){ + if (json.containsKey(CONFIG_NAME)) { String configName = json.get(CONFIG_NAME).toString().replace("\"", ""); policyData.setConfigName(configName); } - if(json.containsKey(PRIORITY)){ + if (json.containsKey(PRIORITY)) { String priority = json.get(PRIORITY).toString().replace("\"", ""); policyData.setPriority(priority); } - if(json.containsKey(VERSION)){ + if (json.containsKey(VERSION)) { String version = json.get(VERSION).toString().replace("\"", ""); policyData.setVersion(version); } - if(json.containsKey(POLICYSCOPE)){ + if (json.containsKey(POLICYSCOPE)) { String policyScope = json.get(POLICYSCOPE).toString().replace("\"", ""); policyData.setPolicyScope(policyScope); } - if(json.containsKey(RISKTYPE)){ + if (json.containsKey(RISKTYPE)) { String riskType = json.get(RISKTYPE).toString().replace("\"", ""); policyData.setRiskType(riskType); } - if(json.containsKey(RISKLEVEL)){ + if (json.containsKey(RISKLEVEL)) { String riskLevel = json.get(RISKLEVEL).toString().replace("\"", ""); policyData.setRiskLevel(riskLevel); } - if(json.containsKey(GUARD)){ + if (json.containsKey(GUARD)) { String guard = json.get(GUARD).toString().replace("\"", ""); policyData.setGuard(guard); } } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + INVALIDJSON + parameters.getConfigBody(); LOGGER.error(message); return null; } - }else if("Optimization".equals(parameters.getPolicyConfigType().toString())){ + } else if ("Optimization".equals(parameters.getPolicyConfigType().toString())) { policyData.setConfigPolicyType("Optimization"); // get values and attributes from the JsonObject - if(json != null){ - if (json.containsKey(CONTENT)){ + if (json != null) { + if (json.containsKey(CONTENT)) { String content = json.get(CONTENT).toString(); ObjectMapper mapper = new ObjectMapper(); - JsonNode policyJSON = null; + JsonNode policyJson = null; try { - policyJSON = mapper.readTree(content); + policyJson = mapper.readTree(content); } catch (IOException e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + String message = XACMLErrorConstants.ERROR_DATA_ISSUE + INVALIDJSON + + parameters.getConfigBody(); LOGGER.error(message, e); return null; } - policyData.setPolicyJSON(policyJSON); + policyData.setPolicyJSON(policyJson); } - if (json.containsKey(SERVICE)){ + if (json.containsKey(SERVICE)) { String serviceType = json.get(SERVICE).toString().replace("\"", ""); policyData.setServiceType(serviceType); } - if (json.containsKey("uuid")){ + if (json.containsKey("uuid")) { String uuid = json.get("uuid").toString().replace("\"", ""); policyData.setUuid(uuid); } - if (json.containsKey(LOCATION)){ + if (json.containsKey(LOCATION)) { String msLocation = json.get(LOCATION).toString().replace("\"", ""); policyData.setLocation(msLocation); } - if (json.containsKey(CONFIG_NAME)){ + if (json.containsKey(CONFIG_NAME)) { String configName = json.get(CONFIG_NAME).toString().replace("\"", ""); policyData.setConfigName(configName); } - if(json.containsKey(PRIORITY)){ + if (json.containsKey(PRIORITY)) { String priority = json.get(PRIORITY).toString().replace("\"", ""); policyData.setPriority(priority); } - if(json.containsKey(VERSION)){ + if (json.containsKey(VERSION)) { String version = json.get(VERSION).toString().replace("\"", ""); policyData.setVersion(version); } - if(json.containsKey(POLICYSCOPE)){ + if (json.containsKey(POLICYSCOPE)) { String policyScope = json.get(POLICYSCOPE).toString().replace("\"", ""); policyData.setPolicyScope(policyScope); } - if(json.containsKey(RISKTYPE)){ + if (json.containsKey(RISKTYPE)) { String riskType = json.get(RISKTYPE).toString().replace("\"", ""); policyData.setRiskType(riskType); } - if(json.containsKey(RISKLEVEL)){ + if (json.containsKey(RISKLEVEL)) { String riskLevel = json.get(RISKLEVEL).toString().replace("\"", ""); policyData.setRiskLevel(riskLevel); } - if(json.containsKey(GUARD)){ + if (json.containsKey(GUARD)) { String guard = json.get(GUARD).toString().replace("\"", ""); policyData.setGuard(guard); } } - } else if("Fault".equals(parameters.getPolicyConfigType().toString())){ + } else if ("Fault".equals(parameters.getPolicyConfigType().toString())) { policyData.setConfigPolicyType("ClosedLoop_Fault"); - if(json != null){ + if (json != null) { policyData.setJsonBody(json.toString()); - if (json.get(ONAPNAME)!=null){ + if (json.get(ONAPNAME) != null) { String onapName = json.get(ONAPNAME).toString().replace("\"", ""); policyData.setOnapName(onapName); } } - } else if("PM".equals(parameters.getPolicyConfigType().toString())){ + } else if ("PM".equals(parameters.getPolicyConfigType().toString())) { policyData.setConfigPolicyType("ClosedLoop_PM"); - if(json != null){ + if (json != null) { policyData.setJsonBody(json.toString()); - if (json.get(ONAPNAME)!=null){ + if (json.get(ONAPNAME) != null) { String onapName = json.get(ONAPNAME).toString().replace("\"", ""); policyData.setOnapName(onapName); } - if (json.get(SERVICETYPE_POLICY_NAME)!=null){ + if (json.get(SERVICETYPE_POLICY_NAME) != null) { String serviceType = json.get(SERVICETYPE_POLICY_NAME).toString().replace("\"", ""); LinkedHashMap serviceTypePolicyName = new LinkedHashMap<>(); serviceTypePolicyName.put(SERVICETYPE_POLICY_NAME, serviceType); policyData.setServiceTypePolicyName(serviceTypePolicyName); } } - } else if("BRMS_Param".equals(parameters.getPolicyConfigType().toString())){ - Map> drlRuleAndUIParams = parameters.getAttributes(); - Map rule = drlRuleAndUIParams.get(AttributeType.RULE); + } else if ("BRMS_Param".equals(parameters.getPolicyConfigType().toString())) { + Map> drlRuleAndUiParams = parameters.getAttributes(); + Map rule = drlRuleAndUiParams.get(AttributeType.RULE); policyData.setRuleName(rule.get("templateName")); } @@ -455,23 +469,25 @@ public class PolicyValidationRequestWrapper { return policyData; } - + private JsonObject stringToJsonObject(String value) { - try(JsonReader jsonReader = Json.createReader(new StringReader(value))){ + try (JsonReader jsonReader = Json.createReader(new StringReader(value))) { return jsonReader.readObject(); - } catch(JsonException| IllegalStateException e){ - LOGGER.info(XACMLErrorConstants.ERROR_DATA_ISSUE+ "Improper JSON format... may or may not cause issues in validating the policy: " + value, e); + } catch (JsonException | IllegalStateException e) { + LOGGER.info(XACMLErrorConstants.ERROR_DATA_ISSUE + + "Improper JSON format... may or may not cause issues in validating the policy: " + value, + e); return null; } } - + private String convertDate(Date date) { String strDate = null; - if (date!=null) { + if (date != null) { SimpleDateFormat dateformatJava = new SimpleDateFormat("dd-MM-yyyy"); strDate = dateformatJava.format(date); } - return (strDate==null) ? "NA": strDate; + return (strDate == null) ? "NA" : strDate; } }