X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=ONAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Frest%2Futil%2FPolicyValidationRequestWrapper.java;h=c80e5bb3b331ec3983f6bf98bc915faa91dfdbce;hb=a65d684a684105c39a64181bbd44f1debb80fb06;hp=07246229768a343e99dc12571fae5b25f9db08e3;hpb=775f45908025e46a40c9c147fca2066af5c8c5b8;p=policy%2Fengine.git 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 072462297..c80e5bb3b 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 @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017-2018 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. @@ -37,6 +37,7 @@ import org.onap.policy.api.AttributeType; import org.onap.policy.api.PolicyParameters; import org.onap.policy.common.logging.flexlogger.FlexLogger; import org.onap.policy.common.logging.flexlogger.Logger; +import org.onap.policy.rest.adapter.ClosedLoopFaultTrapDatas; import org.onap.policy.rest.adapter.PolicyRestAdapter; import org.onap.policy.rest.adapter.RainyDayParams; import org.onap.policy.rest.adapter.YAMLParams; @@ -51,28 +52,48 @@ 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"; + public PolicyRestAdapter populateRequestParameters(HttpServletRequest request) { PolicyRestAdapter policyData = null; - + ClosedLoopFaultTrapDatas trapDatas = null; + ClosedLoopFaultTrapDatas faultDatas = null; try { ObjectMapper mapper = new ObjectMapper(); 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){ + trapDatas = mapper.readValue(root.get("trapData").toString(), ClosedLoopFaultTrapDatas.class); + policyData.setTrapDatas(trapDatas); + } + if(root.get("faultData") != null){ + faultDatas = mapper.readValue(root.get("faultData").toString(), ClosedLoopFaultTrapDatas.class); + policyData.setFaultDatas(faultDatas); + } - JsonObject json = null; - if(root != null){ - json = stringToJsonObject(root.toString()); - - if(json != null){ - if(json.containsKey("policyJSON")){ - policyData.setPolicyJSON(root.get("policyJSON")); - }else{ - String jsonBodyData = json.getJsonObject("policyData").get("jsonBodyData").toString(); - policyData.setJsonBody(jsonBodyData); - } + JsonObject json; + json = stringToJsonObject(root.toString()); + + if(json != null){ + if(json.containsKey("policyJSON")){ + policyData.setPolicyJSON(root.get("policyJSON")); + }else{ + String jsonBodyData = json.getJsonObject("policyData").get("jsonBodyData").toString(); + policyData.setJsonBody(jsonBodyData); } } @@ -90,9 +111,16 @@ public class PolicyValidationRequestWrapper { /* * set policy adapter values for Building JSON object containing policy data */ - //Common among policy types + //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.setApiflag("API"); //Some policies require jsonObject conversion from String for configBody (i.e. MicroService and Firewall) JsonObject json = null; @@ -101,7 +129,7 @@ public class PolicyValidationRequestWrapper { json = stringToJsonObject(parameters.getConfigBody()); } } catch(JsonException| IllegalStateException e){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + parameters.getConfigBody(); + String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); LOGGER.error(message, e); return null; } @@ -127,13 +155,13 @@ public class PolicyValidationRequestWrapper { // Set Matching attributes in RainyDayParams in adapter RainyDayParams rainyday = new RainyDayParams(); - rainyday.setServiceType(matching.get("ServiceType")); - rainyday.setVnfType(matching.get("VNFType")); - rainyday.setBbid(matching.get("BB_ID")); - rainyday.setWorkstep(matching.get("WorkStep")); - - - + if(matching != null) { + rainyday.setServiceType(matching.get("ServiceType")); + rainyday.setVnfType(matching.get("VNFType")); + rainyday.setBbid(matching.get("BB_ID")); + rainyday.setWorkstep(matching.get("WorkStep")); + } + Map treatments = parameters.getTreatments(); ArrayList treatmentsTableChoices = new ArrayList<>(); @@ -153,44 +181,44 @@ public class PolicyValidationRequestWrapper { // Set Matching attributes in YAMLParams in adapter YAMLParams yamlparams = new YAMLParams(); - yamlparams.setActor(matching.get("actor")); - yamlparams.setRecipe(matching.get("recipe")); - yamlparams.setGuardActiveStart(matching.get("guardActiveStart")); - yamlparams.setGuardActiveEnd(matching.get("guardActiveEnd")); - - if("GUARD_YAML".equals(ruleProvider)){ - yamlparams.setLimit(matching.get("limit")); - yamlparams.setTimeWindow(matching.get("timeWindow")); - yamlparams.setTimeUnits(matching.get("timeUnits")); - }else{ + if (matching != null) { + yamlparams.setActor(matching.get("actor")); + yamlparams.setRecipe(matching.get("recipe")); + yamlparams.setGuardActiveStart(matching.get("guardActiveStart")); + yamlparams.setGuardActiveEnd(matching.get("guardActiveEnd")); - List blackList = new ArrayList<>(); + if("GUARD_YAML".equals(ruleProvider)){ + yamlparams.setLimit(matching.get("limit")); + yamlparams.setTimeWindow(matching.get("timeWindow")); + yamlparams.setTimeUnits(matching.get("timeUnits")); + }else{ + + List blackList = new ArrayList<>(); - if(!Strings.isNullOrEmpty(matching.get("blackList"))){ - String[] blackListArray = matching.get("blackList").split(","); - for(String element : blackListArray){ - blackList.add(element); - } - } - - yamlparams.setBlackList(blackList); + if(!Strings.isNullOrEmpty(matching.get("blackList"))){ + String[] blackListArray = matching.get("blackList").split(","); + for(String element : blackListArray){ + blackList.add(element); + } + } + + yamlparams.setBlackList(blackList); - } - + } + } policyData.setYamlparams(yamlparams); -; } } else if("Action".equals(parameters.getPolicyClass().toString())){ - ArrayList ruleAlgorithmChoices = new ArrayList(); + ArrayList ruleAlgorithmChoices = new ArrayList<>(); List dynamicLabelRuleAlgorithms = parameters.getDynamicRuleAlgorithmLabels(); List dynamicFieldFunctionRuleAlgorithms = parameters.getDynamicRuleAlgorithmFunctions(); List dynamicFieldOneRuleAlgorithms = parameters.getDynamicRuleAlgorithmField1(); List dyrnamicFieldTwoRuleAlgorithms = parameters.getDynamicRuleAlgorithmField2(); - if (dynamicLabelRuleAlgorithms != null && dynamicLabelRuleAlgorithms.size() > 0) { + if (dynamicLabelRuleAlgorithms != null && !dynamicLabelRuleAlgorithms.isEmpty()) { int i = dynamicLabelRuleAlgorithms.size() - 1; for (String labelAttr : dynamicLabelRuleAlgorithms) { @@ -216,15 +244,16 @@ public class PolicyValidationRequestWrapper { policyData.setRuleAlgorithmschoices(ruleAlgorithmChoices); ArrayList attributeList = new ArrayList<>(); - - for (String keyField : matching.keySet()) { - LinkedHashMap attributeMap = new LinkedHashMap<>(); - String key = keyField; - String value = matching.get(keyField); - attributeMap.put("key", key); - attributeMap.put("value", value); - attributeList.add(attributeMap); - } + if (matching != null) { + for (Map.Entry entry : matching.entrySet()) { + LinkedHashMap attributeMap = new LinkedHashMap<>(); + String key = entry.getKey(); + String value = entry.getValue(); + attributeMap.put("key", key); + attributeMap.put("value", value); + attributeList.add(attributeMap); + } + } policyData.setAttributes(attributeList); policyData.setActionAttributeValue(parameters.getActionAttribute()); @@ -262,54 +291,134 @@ public class PolicyValidationRequestWrapper { // get values and attributes from the JsonObject if(json != null){ - if (json.containsKey("content")){ - String content = json.get("content").toString(); + if (json.containsKey(CONTENT)){ + String content = json.get(CONTENT).toString(); ObjectMapper mapper = new ObjectMapper(); JsonNode policyJSON = null; try { policyJSON = mapper.readTree(content); } catch (IOException e) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + parameters.getConfigBody(); + String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); LOGGER.error(message, e); return null; } policyData.setPolicyJSON(policyJSON); } - if (json.containsKey("service")){ - String serviceType = json.get("service").toString().replace("\"", ""); + if (json.containsKey(SERVICE)){ + String serviceType = json.get(SERVICE).toString().replace("\"", ""); policyData.setServiceType(serviceType); } if (json.containsKey("uuid")){ String uuid = json.get("uuid").toString().replace("\"", ""); policyData.setUuid(uuid); } - if (json.containsKey("location")){ - String msLocation = json.get("location").toString().replace("\"", ""); - policyData.setMsLocation(msLocation); + if (json.containsKey(LOCATION)){ + String msLocation = json.get(LOCATION).toString().replace("\"", ""); + policyData.setLocation(msLocation); } if (json.containsKey(CONFIG_NAME)){ String configName = json.get(CONFIG_NAME).toString().replace("\"", ""); policyData.setConfigName(configName); } - if(json.containsKey("priority")){ - String priority = json.get("priority").toString().replace("\"", ""); + if(json.containsKey(PRIORITY)){ + String priority = json.get(PRIORITY).toString().replace("\"", ""); policyData.setPriority(priority); } - if(json.containsKey("version")){ - String version = json.get("version").toString().replace("\"", ""); + if(json.containsKey(VERSION)){ + String version = json.get(VERSION).toString().replace("\"", ""); policyData.setVersion(version); } + if(json.containsKey(POLICYSCOPE)){ + String policyScope = json.get(POLICYSCOPE).toString().replace("\"", ""); + policyData.setPolicyScope(policyScope); + } + if(json.containsKey(RISKTYPE)){ + String riskType = json.get(RISKTYPE).toString().replace("\"", ""); + policyData.setRiskType(riskType); + } + if(json.containsKey(RISKLEVEL)){ + String riskLevel = json.get(RISKLEVEL).toString().replace("\"", ""); + policyData.setRiskLevel(riskLevel); + } + if(json.containsKey(GUARD)){ + String guard = json.get(GUARD).toString().replace("\"", ""); + policyData.setGuard(guard); + } + } else { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + LOGGER.error(message); + return null; + } + + }else if("Optimization".equals(parameters.getPolicyConfigType().toString())){ + + policyData.setConfigPolicyType("Optimization"); + + // get values and attributes from the JsonObject + if(json != null){ + if (json.containsKey(CONTENT)){ + String content = json.get(CONTENT).toString(); + ObjectMapper mapper = new ObjectMapper(); + JsonNode policyJSON = null; + try { + policyJSON = mapper.readTree(content); + } catch (IOException e) { + String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ INVALIDJSON + parameters.getConfigBody(); + LOGGER.error(message, e); + return null; + } + policyData.setPolicyJSON(policyJSON); + } + if (json.containsKey(SERVICE)){ + String serviceType = json.get(SERVICE).toString().replace("\"", ""); + policyData.setServiceType(serviceType); + } + if (json.containsKey("uuid")){ + String uuid = json.get("uuid").toString().replace("\"", ""); + policyData.setUuid(uuid); + } + if (json.containsKey(LOCATION)){ + String msLocation = json.get(LOCATION).toString().replace("\"", ""); + policyData.setLocation(msLocation); + } + if (json.containsKey(CONFIG_NAME)){ + String configName = json.get(CONFIG_NAME).toString().replace("\"", ""); + policyData.setConfigName(configName); + } + if(json.containsKey(PRIORITY)){ + String priority = json.get(PRIORITY).toString().replace("\"", ""); + policyData.setPriority(priority); + } + if(json.containsKey(VERSION)){ + String version = json.get(VERSION).toString().replace("\"", ""); + policyData.setVersion(version); + } + if(json.containsKey(POLICYSCOPE)){ + String policyScope = json.get(POLICYSCOPE).toString().replace("\"", ""); + policyData.setPolicyScope(policyScope); + } + if(json.containsKey(RISKTYPE)){ + String riskType = json.get(RISKTYPE).toString().replace("\"", ""); + policyData.setRiskType(riskType); + } + if(json.containsKey(RISKLEVEL)){ + String riskLevel = json.get(RISKLEVEL).toString().replace("\"", ""); + policyData.setRiskLevel(riskLevel); + } + if(json.containsKey(GUARD)){ + String guard = json.get(GUARD).toString().replace("\"", ""); + policyData.setGuard(guard); + } } } else if("Fault".equals(parameters.getPolicyConfigType().toString())){ policyData.setConfigPolicyType("ClosedLoop_Fault"); - policyData.setApiflag("API"); if(json != null){ policyData.setJsonBody(json.toString()); - if (json.get("onapname")!=null){ - String onapName = json.get("onapname").toString().replace("\"", ""); + if (json.get(ONAPNAME)!=null){ + String onapName = json.get(ONAPNAME).toString().replace("\"", ""); policyData.setOnapName(onapName); } } @@ -320,14 +429,14 @@ public class PolicyValidationRequestWrapper { if(json != null){ policyData.setJsonBody(json.toString()); - if (json.get("onapname")!=null){ - String onapName = json.get("onapname").toString().replace("\"", ""); + if (json.get(ONAPNAME)!=null){ + String onapName = json.get(ONAPNAME).toString().replace("\"", ""); policyData.setOnapName(onapName); } - if (json.get("serviceTypePolicyName")!=null){ - String serviceType = json.get("serviceTypePolicyName").toString().replace("\"", ""); + if (json.get(SERVICETYPE_POLICY_NAME)!=null){ + String serviceType = json.get(SERVICETYPE_POLICY_NAME).toString().replace("\"", ""); LinkedHashMap serviceTypePolicyName = new LinkedHashMap<>(); - serviceTypePolicyName.put("serviceTypePolicyName", serviceType); + serviceTypePolicyName.put(SERVICETYPE_POLICY_NAME, serviceType); policyData.setServiceTypePolicyName(serviceTypePolicyName); } } @@ -338,26 +447,14 @@ public class PolicyValidationRequestWrapper { } } - - 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 return policyData; } - - private JsonObject stringToJsonObject(String value) - throws JsonException, IllegalStateException { - - try{ - JsonReader jsonReader = Json.createReader(new StringReader(value)); - JsonObject object = jsonReader.readObject(); - jsonReader.close(); - return object; + + private JsonObject stringToJsonObject(String 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); return null;