@Test public void testPolicyConfigFirewallValidation() throws IOException { PolicyValidation validation = new PolicyValidation(); PolicyRestAdapter policyData = new PolicyRestAdapter(); policyData.setPolicyName("ALegalPolicyName"); policyData.setPolicyDescription("A Valid Description"); String responseString = validation.validatePolicy(policyData).toString(); assertEquals("success", responseString); policyData.setApiflag("API"); responseString = validation.validatePolicy(policyData).toString(); assertEquals("success", responseString); policyData.setOnapName("AValidOnapName"); policyData.setRiskType("AValidRiskType"); policyData.setRiskLevel("AValidRiskLevel"); policyData.setGuard("AValidGuard"); assertEquals("success", responseString); policyData.setPolicyType("Config"); policyData.setConfigPolicyType("Firewall Config"); responseString = validation.validatePolicy(policyData).toString(); assertThat(responseString).contains("Config Name is required"); policyData.setConfigName(""); responseString = validation.validatePolicy(policyData).toString(); assertThat(responseString).contains("Config Name is required"); policyData.setConfigName("%%%$$$$"); responseString = validation.validatePolicy(policyData).toString(); assertThat(responseString).contains("<b>ConfigName</b>:<i>The Value in Required Field"); policyData.setConfigName("AValidConfigName"); responseString = validation.validatePolicy(policyData).toString(); assertThat(responseString).contains("Security Zone is required"); policyData.setSecurityZone(""); responseString = validation.validatePolicy(policyData).toString(); assertThat(responseString).contains("Security Zone is required"); policyData.setSecurityZone("AValidSeurityZone"); responseString = validation.validatePolicy(policyData).toString(); assertEquals("success@#", responseString); }
public StringBuilder validatePolicy(PolicyRestAdapter policyData) throws IOException { try { boolean valid = true; StringBuilder responseString = new StringBuilder(); ObjectMapper mapper = new ObjectMapper(); if (policyData.getPolicyName() != null) { String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName()); if (!policyNameValidate.contains(SUCCESS)) { responseString.append("<b>PolicyName</b>:<i>" + policyNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>PolicyName</b>: PolicyName Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getPolicyDescription() != null) { String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription()); if (!descriptionValidate.contains(SUCCESS)) { responseString.append("<b>Description</b>:<i>" + descriptionValidate + HTML_ITALICS_LNBREAK); valid = false; } } if (!"API".equals(policyData.getApiflag()) && policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()) { for (Object attribute : policyData.getAttributes()) { if (attribute instanceof LinkedHashMap<?, ?>) { String attValue = null; String key = null; if (((LinkedHashMap<?, ?>) attribute).get("key") != null) { key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(key).contains(SUCCESS)) { responseString.append("<b>Attributes or Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute key</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i> has one missing Attribute key</i><br>"); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_KEY); } valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { attValue = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(attValue).contains(SUCCESS)) { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append("<b>Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } } else { responseString.append( "<b>Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute value</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append(MISSING_ATTRIBUTE_VALUE); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_VALUE); } valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getSettings() != null && !policyData.getSettings().isEmpty()) { for (Object attribute : policyData.getSettings()) { if (attribute instanceof LinkedHashMap<?, ?>) { String value = null; if (((LinkedHashMap<?, ?>) attribute).get("key") == null) { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute key</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { value = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append("<b>Settings Attributes</b>:<i>" + value + SPACESINVALIDCHARS); valid = false; } } else { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute Value</i><br>"); valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getRuleAlgorithmschoices() != null && !policyData.getRuleAlgorithmschoices().isEmpty()) { for (Object attribute : policyData.getRuleAlgorithmschoices()) { if (attribute instanceof LinkedHashMap<?, ?>) { String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 1 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 2 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") != null) { String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") .toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value has special characters</i><br>"); valid = false; } } else { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value is empty</i><br>"); valid = false; } } } } if (CONFIG_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_POLICY.equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_PM.equals(policyData.getConfigPolicyType()) || ENFORCER_CONFIG_POLICY.equals(policyData.getConfigPolicyType()) || MICROSERVICES.equals(policyData.getConfigPolicyType()) || OPTIMIZATION.equals(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils .policySpecialCharWithDashValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("<b>OnapName</b>:<i>" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Onap Name</b>: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (!Strings.isNullOrEmpty(policyData.getRiskType())) { String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType()); if (!riskTypeValidate.contains(SUCCESS)) { responseString.append("<b>RiskType</b>:<i>" + riskTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskType</b>: Risk Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getRiskLevel())) { String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel()); if (!validateRiskLevel.contains(SUCCESS)) { responseString.append("<b>RiskLevel</b>:<i>" + validateRiskLevel + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskLevel</b>: Risk Level Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getGuard())) { String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard()); if (!validateGuard.contains(SUCCESS)) { responseString.append("<b>Guard</b>:<i>" + validateGuard + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Guard</b>: Guard Value Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if ("Base".equalsIgnoreCase(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getConfigName())) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("ConfigName:" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Name: Config Name Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigType())) { String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType()); if (!configTypeValidate.contains(SUCCESS)) { responseString.append("ConfigType:" + configTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Type: Config Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigBodyData())) { String configBodyData = policyData.getConfigBodyData(); String configType = policyData.getConfigType(); if (configType != null) { if ("JSON".equals(configType)) { if (!PolicyUtils.isJSONValid(configBodyData)) { responseString.append( "Config Body: JSON Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("XML".equals(configType)) { if (!PolicyUtils.isXMLValid(configBodyData)) { responseString.append("Config Body: XML Content data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("PROPERTIES".equals(configType)) { if (!PolicyUtils.isPropValid(configBodyData)) { responseString.append( "Config Body: Property data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } } } else { responseString.append("Config Body: Config Body Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (FIREWALL.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigName() != null && !policyData.getConfigName().isEmpty()) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Config Name</b>:<i> Config Name is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getSecurityZone() == null || policyData.getSecurityZone().isEmpty()) { responseString.append( "<b>Security Zone</b>:<i> Security Zone is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (BRMSPARAM.equalsIgnoreCase(policyData.getConfigPolicyType()) && Strings.isNullOrEmpty(policyData.getRuleName())) { responseString.append("<b>BRMS Template</b>:<i>BRMS Template is required" + HTML_ITALICS_LNBREAK); valid = false; } if (BRMSRAW.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigBodyData() != null && !policyData.getConfigBodyData().isEmpty()) { String message = PolicyUtils.brmsRawValidate(policyData.getConfigBodyData()); if (message.contains("[ERR")) { responseString.append("<b>Raw Rule Validate</b>:<i>Raw Rule has error" + message + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Raw Rule</b>:<i>Raw Rule is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_PM.equalsIgnoreCase(policyData.getConfigPolicyType())) { try { if (Strings.isNullOrEmpty(policyData.getServiceTypePolicyName().get("serviceTypePolicyName") .toString())) { responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } } catch (Exception e) { LOGGER.error("ERROR in ClosedLoop_PM PolicyName", e); responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getJsonBody() != null) { ClosedLoopPMBody pmBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopPMBody.class); if (pmBody.getEmailAddress() != null) { String result = emailValidation(pmBody.getEmailAddress(), responseString.toString()); if (result != SUCCESS) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!pmBody.isGamma() && !pmBody.isMcr() && !pmBody.isTrinity() && !pmBody.isvDNS() && !pmBody.isvUSP()) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (pmBody.getGeoLink() != null && !pmBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (pmBody.getAttributes() != null && !pmBody.getAttributes().isEmpty()) { for (Entry<String, String> entry : pmBody.getAttributes().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!key.contains("Message")) { String attributeValidate = PolicyUtils.policySpecialCharValidator(value); if (!attributeValidate.contains(SUCCESS)) { responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces or invalid characters" + HTML_ITALICS_LNBREAK); valid = false; } } } } } else { responseString.append( "<b>D2/Virtualized Services</b>:<i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_POLICY.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getJsonBody() != null) { if ("API".equals(policyData.getApiflag())) { JSONObject json = new JSONObject(policyData.getJsonBody()); if (!json.isNull("conditions")) { String apiCondition = (String) json.get("conditions"); if (Strings.isNullOrEmpty(apiCondition)) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); return responseString; } } else { responseString.append("<b>Conditions</b>:" + " <i>There were no conditions provided in configBody json" + HTML_ITALICS_LNBREAK); return responseString; } } else { if (policyData.getTrapDatas().getTrap1() != null) { if (policyData.getClearTimeOut() == null) { responseString.append("<b>Trigger Clear TimeOut</b>: " + "<i>Trigger Clear TimeOut is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } if (policyData.getTrapMaxAge() == null) { responseString.append("<b>Trap Max Age</b>: <i>Trap Max Age is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } } if (policyData.getFaultDatas().getTrap1() != null && policyData.getVerificationclearTimeOut() == null) { responseString.append( "<b>Fault Clear TimeOut</b>: <i>Fault Clear TimeOut is required when at" + "least One Fault Signature is enabled</i><br>"); valid = false; } } ClosedLoopFaultBody faultBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopFaultBody.class); if (faultBody.getEmailAddress() != null && !faultBody.getEmailAddress().isEmpty()) { String result = emailValidation(faultBody.getEmailAddress(), responseString.toString()); if (!SUCCESS.equals(result)) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!(faultBody.isGamma() || faultBody.isMcr() || faultBody.isTrinity() || faultBody.isvDNS() || faultBody.isvUSP())) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getActions() == null || faultBody.getActions().isEmpty()) { responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getClosedLoopPolicyStatus() == null || faultBody.getClosedLoopPolicyStatus().isEmpty()) { responseString.append("<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getConditions() == null) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getGeoLink() != null && !faultBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (faultBody.getAgingWindow() == 0) { responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeInterval() == 0) { responseString.append("<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getRetrys() == 0) { responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutvPRO() == 0) { responseString.append("<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutRuby() == 0) { responseString.append( "<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getVnfType() == null || faultBody.getVnfType().isEmpty()) { responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append( "<b>D2/Virtualized Services</b>: <i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Conditions</b>: <i>Select Atleast one Condition" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Name</b>: <i>PEP Name is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Action</b>: <i>PEP Action is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (MICROSERVICES.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if (OPTIMIZATION.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateOptimization(policyData, responseString); if (!tmpValid) { valid = false; } } } if ((DECISION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) || (DECISION_POLICY_MS.equalsIgnoreCase(policyData.getPolicyType()))) { if (!RAW.equalsIgnoreCase(policyData.getRuleProvider())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("OnapName:" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Onap Name: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (RAW.equalsIgnoreCase(policyData.getRuleProvider())) { Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(StringEscapeUtils .unescapeXml(policyData.getRawXacmlPolicy()).getBytes(StandardCharsets.UTF_8))); if (!(policy instanceof PolicySetType || policy instanceof PolicyType)) { responseString.append("Raw XACML: The XACML Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } if (DECISION_MS_MODEL.equals(policyData.getRuleProvider())) { LOGGER.info("Validating Decision MS Policy - "); boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if ("Rainy_Day".equals(policyData.getRuleProvider())) { if (policyData.getRainyday() == null) { responseString.append("<b> Rainy Day Parameters are Required </b><br>"); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getRainyday().getServiceType())) { responseString.append("Rainy Day <b>Service Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getVnfType())) { responseString.append("Rainy Day <b>VNF Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getBbid())) { responseString.append("Rainy Day <b>Building Block ID</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getWorkstep())) { responseString.append("Rainy Day <b>Work Step</b> is Required<br>"); valid = false; } if (!policyData.getRainyday().getTreatmentTableChoices().isEmpty() && policyData.getRainyday().getTreatmentTableChoices() != null) { for (Object treatmentMap : policyData.getRainyday().getTreatmentTableChoices()) { String errorCode = null; String treatment = null; if (treatmentMap instanceof LinkedHashMap<?, ?>) { if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("errorcode")) { errorCode = ((LinkedHashMap<?, ?>) treatmentMap).get("errorcode").toString(); } if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("treatment")) { treatment = ((LinkedHashMap<?, ?>) treatmentMap).get("treatment").toString(); } } if (Strings.isNullOrEmpty(errorCode) && Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Error Code</b> and " + "<b>Desired Treatment</b> cannot be empty<br>"); valid = false; break; } if (Strings.isNullOrEmpty(errorCode)) { responseString.append("Rainy Day <b>Error Code</b> is Required " + "for each Desired Treatment<br>"); valid = false; break; } if (Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Desired Treatment" + "</b> is Required for each Error Code<br>"); valid = false; break; } } } else { responseString.append("Rainy Day <b>Desired Automated Treatments</b> are Required<br>"); valid = false; } } } if ("GUARD_YAML".equals(policyData.getRuleProvider()) || "GUARD_BL_YAML".equals(policyData.getRuleProvider()) || "GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (policyData.getYamlparams() == null) { responseString.append("<b> Guard Params are Required </b>" + HTML_ITALICS_LNBREAK); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getYamlparams().getActor())) { responseString.append("Guard Params <b>Actor</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getRecipe())) { responseString.append("Guard Params <b>Recipe</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveStart())) { responseString.append("Guard Params <b>Guard Active Start</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveEnd())) { responseString.append( "Guard Params <b>Guard Active End</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if ("GUARD_YAML".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getLimit())) { responseString.append(" Guard Params <b>Limit</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getLimit())) { responseString.append( " Guard Params <b>Limit</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeWindow())) { responseString.append( "Guard Params <b>Time Window</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getTimeWindow())) { responseString.append(" Guard Params <b>Time Window</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeUnits())) { responseString.append( "Guard Params <b>Time Units</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getMin())) { responseString.append(" Guard Params <b>Min</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMin())) { responseString.append( " Guard Params <b>Min</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getMax())) { responseString.append(" Guard Params <b>Max</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMax())) { responseString.append( " Guard Params <b>Max</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_BL_YAML".equals(policyData.getRuleProvider()) && "Use Manual Entry".equals(policyData.getBlackListEntryType())) { if (policyData.getYamlparams().getBlackList() == null || policyData.getYamlparams().getBlackList().isEmpty()) { responseString.append( " Guard Params <b>BlackList</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else { for (String blackList : policyData.getYamlparams().getBlackList()) { if (blackList == null || !(SUCCESS .equals(PolicyUtils.policySpecialCharValidator(blackList)))) { responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + HTML_ITALICS_LNBREAK); valid = false; break; } } } } } } } if (ACTION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getActionPerformer())) { String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer()); if (!actionPerformer.contains(SUCCESS)) { responseString.append("<b>ActionPerformer</b>:<i>" + actionPerformer + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionPerformer</b>:<i> ActionPerformer Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getActionAttributeValue())) { String actionAttribute = PolicyUtils .policySpecialCharValidator(policyData.getActionAttributeValue()); if (!actionAttribute.contains(SUCCESS)) { responseString.append("<b>ActionAttribute</b>:<i>" + actionAttribute + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionAttribute</b>:<i> ActionAttribute Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (CONFIG_POLICY.equals(policyData.getPolicyType())) { String value = ""; if (valid) { if (commonClassDao != null) { List<Object> spData = commonClassDao.getDataById(SafePolicyWarning.class, "riskType", policyData.getRiskType()); if (!spData.isEmpty()) { SafePolicyWarning safePolicyWarningData = (SafePolicyWarning) spData.get(0); value = "<b>Message</b>:<i>" + safePolicyWarningData.getMessage() + "</i>"; } } responseString.append(SUCCESS + "@#" + value); } } else { if (valid) { responseString.append(SUCCESS); } } return responseString; } catch (Exception e) { LOGGER.error("Exception Occured during Policy Validation" + e); return null; } }
PolicyValidation { public StringBuilder validatePolicy(PolicyRestAdapter policyData) throws IOException { try { boolean valid = true; StringBuilder responseString = new StringBuilder(); ObjectMapper mapper = new ObjectMapper(); if (policyData.getPolicyName() != null) { String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName()); if (!policyNameValidate.contains(SUCCESS)) { responseString.append("<b>PolicyName</b>:<i>" + policyNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>PolicyName</b>: PolicyName Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getPolicyDescription() != null) { String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription()); if (!descriptionValidate.contains(SUCCESS)) { responseString.append("<b>Description</b>:<i>" + descriptionValidate + HTML_ITALICS_LNBREAK); valid = false; } } if (!"API".equals(policyData.getApiflag()) && policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()) { for (Object attribute : policyData.getAttributes()) { if (attribute instanceof LinkedHashMap<?, ?>) { String attValue = null; String key = null; if (((LinkedHashMap<?, ?>) attribute).get("key") != null) { key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(key).contains(SUCCESS)) { responseString.append("<b>Attributes or Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute key</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i> has one missing Attribute key</i><br>"); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_KEY); } valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { attValue = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(attValue).contains(SUCCESS)) { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append("<b>Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } } else { responseString.append( "<b>Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute value</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append(MISSING_ATTRIBUTE_VALUE); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_VALUE); } valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getSettings() != null && !policyData.getSettings().isEmpty()) { for (Object attribute : policyData.getSettings()) { if (attribute instanceof LinkedHashMap<?, ?>) { String value = null; if (((LinkedHashMap<?, ?>) attribute).get("key") == null) { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute key</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { value = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append("<b>Settings Attributes</b>:<i>" + value + SPACESINVALIDCHARS); valid = false; } } else { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute Value</i><br>"); valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getRuleAlgorithmschoices() != null && !policyData.getRuleAlgorithmschoices().isEmpty()) { for (Object attribute : policyData.getRuleAlgorithmschoices()) { if (attribute instanceof LinkedHashMap<?, ?>) { String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 1 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 2 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") != null) { String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") .toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value has special characters</i><br>"); valid = false; } } else { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value is empty</i><br>"); valid = false; } } } } if (CONFIG_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_POLICY.equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_PM.equals(policyData.getConfigPolicyType()) || ENFORCER_CONFIG_POLICY.equals(policyData.getConfigPolicyType()) || MICROSERVICES.equals(policyData.getConfigPolicyType()) || OPTIMIZATION.equals(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils .policySpecialCharWithDashValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("<b>OnapName</b>:<i>" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Onap Name</b>: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (!Strings.isNullOrEmpty(policyData.getRiskType())) { String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType()); if (!riskTypeValidate.contains(SUCCESS)) { responseString.append("<b>RiskType</b>:<i>" + riskTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskType</b>: Risk Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getRiskLevel())) { String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel()); if (!validateRiskLevel.contains(SUCCESS)) { responseString.append("<b>RiskLevel</b>:<i>" + validateRiskLevel + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskLevel</b>: Risk Level Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getGuard())) { String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard()); if (!validateGuard.contains(SUCCESS)) { responseString.append("<b>Guard</b>:<i>" + validateGuard + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Guard</b>: Guard Value Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if ("Base".equalsIgnoreCase(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getConfigName())) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("ConfigName:" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Name: Config Name Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigType())) { String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType()); if (!configTypeValidate.contains(SUCCESS)) { responseString.append("ConfigType:" + configTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Type: Config Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigBodyData())) { String configBodyData = policyData.getConfigBodyData(); String configType = policyData.getConfigType(); if (configType != null) { if ("JSON".equals(configType)) { if (!PolicyUtils.isJSONValid(configBodyData)) { responseString.append( "Config Body: JSON Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("XML".equals(configType)) { if (!PolicyUtils.isXMLValid(configBodyData)) { responseString.append("Config Body: XML Content data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("PROPERTIES".equals(configType)) { if (!PolicyUtils.isPropValid(configBodyData)) { responseString.append( "Config Body: Property data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } } } else { responseString.append("Config Body: Config Body Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (FIREWALL.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigName() != null && !policyData.getConfigName().isEmpty()) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Config Name</b>:<i> Config Name is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getSecurityZone() == null || policyData.getSecurityZone().isEmpty()) { responseString.append( "<b>Security Zone</b>:<i> Security Zone is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (BRMSPARAM.equalsIgnoreCase(policyData.getConfigPolicyType()) && Strings.isNullOrEmpty(policyData.getRuleName())) { responseString.append("<b>BRMS Template</b>:<i>BRMS Template is required" + HTML_ITALICS_LNBREAK); valid = false; } if (BRMSRAW.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigBodyData() != null && !policyData.getConfigBodyData().isEmpty()) { String message = PolicyUtils.brmsRawValidate(policyData.getConfigBodyData()); if (message.contains("[ERR")) { responseString.append("<b>Raw Rule Validate</b>:<i>Raw Rule has error" + message + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Raw Rule</b>:<i>Raw Rule is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_PM.equalsIgnoreCase(policyData.getConfigPolicyType())) { try { if (Strings.isNullOrEmpty(policyData.getServiceTypePolicyName().get("serviceTypePolicyName") .toString())) { responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } } catch (Exception e) { LOGGER.error("ERROR in ClosedLoop_PM PolicyName", e); responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getJsonBody() != null) { ClosedLoopPMBody pmBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopPMBody.class); if (pmBody.getEmailAddress() != null) { String result = emailValidation(pmBody.getEmailAddress(), responseString.toString()); if (result != SUCCESS) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!pmBody.isGamma() && !pmBody.isMcr() && !pmBody.isTrinity() && !pmBody.isvDNS() && !pmBody.isvUSP()) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (pmBody.getGeoLink() != null && !pmBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (pmBody.getAttributes() != null && !pmBody.getAttributes().isEmpty()) { for (Entry<String, String> entry : pmBody.getAttributes().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!key.contains("Message")) { String attributeValidate = PolicyUtils.policySpecialCharValidator(value); if (!attributeValidate.contains(SUCCESS)) { responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces or invalid characters" + HTML_ITALICS_LNBREAK); valid = false; } } } } } else { responseString.append( "<b>D2/Virtualized Services</b>:<i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_POLICY.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getJsonBody() != null) { if ("API".equals(policyData.getApiflag())) { JSONObject json = new JSONObject(policyData.getJsonBody()); if (!json.isNull("conditions")) { String apiCondition = (String) json.get("conditions"); if (Strings.isNullOrEmpty(apiCondition)) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); return responseString; } } else { responseString.append("<b>Conditions</b>:" + " <i>There were no conditions provided in configBody json" + HTML_ITALICS_LNBREAK); return responseString; } } else { if (policyData.getTrapDatas().getTrap1() != null) { if (policyData.getClearTimeOut() == null) { responseString.append("<b>Trigger Clear TimeOut</b>: " + "<i>Trigger Clear TimeOut is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } if (policyData.getTrapMaxAge() == null) { responseString.append("<b>Trap Max Age</b>: <i>Trap Max Age is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } } if (policyData.getFaultDatas().getTrap1() != null && policyData.getVerificationclearTimeOut() == null) { responseString.append( "<b>Fault Clear TimeOut</b>: <i>Fault Clear TimeOut is required when at" + "least One Fault Signature is enabled</i><br>"); valid = false; } } ClosedLoopFaultBody faultBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopFaultBody.class); if (faultBody.getEmailAddress() != null && !faultBody.getEmailAddress().isEmpty()) { String result = emailValidation(faultBody.getEmailAddress(), responseString.toString()); if (!SUCCESS.equals(result)) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!(faultBody.isGamma() || faultBody.isMcr() || faultBody.isTrinity() || faultBody.isvDNS() || faultBody.isvUSP())) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getActions() == null || faultBody.getActions().isEmpty()) { responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getClosedLoopPolicyStatus() == null || faultBody.getClosedLoopPolicyStatus().isEmpty()) { responseString.append("<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getConditions() == null) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getGeoLink() != null && !faultBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (faultBody.getAgingWindow() == 0) { responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeInterval() == 0) { responseString.append("<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getRetrys() == 0) { responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutvPRO() == 0) { responseString.append("<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutRuby() == 0) { responseString.append( "<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getVnfType() == null || faultBody.getVnfType().isEmpty()) { responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append( "<b>D2/Virtualized Services</b>: <i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Conditions</b>: <i>Select Atleast one Condition" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Name</b>: <i>PEP Name is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Action</b>: <i>PEP Action is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (MICROSERVICES.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if (OPTIMIZATION.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateOptimization(policyData, responseString); if (!tmpValid) { valid = false; } } } if ((DECISION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) || (DECISION_POLICY_MS.equalsIgnoreCase(policyData.getPolicyType()))) { if (!RAW.equalsIgnoreCase(policyData.getRuleProvider())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("OnapName:" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Onap Name: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (RAW.equalsIgnoreCase(policyData.getRuleProvider())) { Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(StringEscapeUtils .unescapeXml(policyData.getRawXacmlPolicy()).getBytes(StandardCharsets.UTF_8))); if (!(policy instanceof PolicySetType || policy instanceof PolicyType)) { responseString.append("Raw XACML: The XACML Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } if (DECISION_MS_MODEL.equals(policyData.getRuleProvider())) { LOGGER.info("Validating Decision MS Policy - "); boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if ("Rainy_Day".equals(policyData.getRuleProvider())) { if (policyData.getRainyday() == null) { responseString.append("<b> Rainy Day Parameters are Required </b><br>"); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getRainyday().getServiceType())) { responseString.append("Rainy Day <b>Service Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getVnfType())) { responseString.append("Rainy Day <b>VNF Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getBbid())) { responseString.append("Rainy Day <b>Building Block ID</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getWorkstep())) { responseString.append("Rainy Day <b>Work Step</b> is Required<br>"); valid = false; } if (!policyData.getRainyday().getTreatmentTableChoices().isEmpty() && policyData.getRainyday().getTreatmentTableChoices() != null) { for (Object treatmentMap : policyData.getRainyday().getTreatmentTableChoices()) { String errorCode = null; String treatment = null; if (treatmentMap instanceof LinkedHashMap<?, ?>) { if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("errorcode")) { errorCode = ((LinkedHashMap<?, ?>) treatmentMap).get("errorcode").toString(); } if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("treatment")) { treatment = ((LinkedHashMap<?, ?>) treatmentMap).get("treatment").toString(); } } if (Strings.isNullOrEmpty(errorCode) && Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Error Code</b> and " + "<b>Desired Treatment</b> cannot be empty<br>"); valid = false; break; } if (Strings.isNullOrEmpty(errorCode)) { responseString.append("Rainy Day <b>Error Code</b> is Required " + "for each Desired Treatment<br>"); valid = false; break; } if (Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Desired Treatment" + "</b> is Required for each Error Code<br>"); valid = false; break; } } } else { responseString.append("Rainy Day <b>Desired Automated Treatments</b> are Required<br>"); valid = false; } } } if ("GUARD_YAML".equals(policyData.getRuleProvider()) || "GUARD_BL_YAML".equals(policyData.getRuleProvider()) || "GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (policyData.getYamlparams() == null) { responseString.append("<b> Guard Params are Required </b>" + HTML_ITALICS_LNBREAK); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getYamlparams().getActor())) { responseString.append("Guard Params <b>Actor</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getRecipe())) { responseString.append("Guard Params <b>Recipe</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveStart())) { responseString.append("Guard Params <b>Guard Active Start</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveEnd())) { responseString.append( "Guard Params <b>Guard Active End</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if ("GUARD_YAML".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getLimit())) { responseString.append(" Guard Params <b>Limit</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getLimit())) { responseString.append( " Guard Params <b>Limit</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeWindow())) { responseString.append( "Guard Params <b>Time Window</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getTimeWindow())) { responseString.append(" Guard Params <b>Time Window</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeUnits())) { responseString.append( "Guard Params <b>Time Units</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getMin())) { responseString.append(" Guard Params <b>Min</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMin())) { responseString.append( " Guard Params <b>Min</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getMax())) { responseString.append(" Guard Params <b>Max</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMax())) { responseString.append( " Guard Params <b>Max</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_BL_YAML".equals(policyData.getRuleProvider()) && "Use Manual Entry".equals(policyData.getBlackListEntryType())) { if (policyData.getYamlparams().getBlackList() == null || policyData.getYamlparams().getBlackList().isEmpty()) { responseString.append( " Guard Params <b>BlackList</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else { for (String blackList : policyData.getYamlparams().getBlackList()) { if (blackList == null || !(SUCCESS .equals(PolicyUtils.policySpecialCharValidator(blackList)))) { responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + HTML_ITALICS_LNBREAK); valid = false; break; } } } } } } } if (ACTION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getActionPerformer())) { String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer()); if (!actionPerformer.contains(SUCCESS)) { responseString.append("<b>ActionPerformer</b>:<i>" + actionPerformer + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionPerformer</b>:<i> ActionPerformer Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getActionAttributeValue())) { String actionAttribute = PolicyUtils .policySpecialCharValidator(policyData.getActionAttributeValue()); if (!actionAttribute.contains(SUCCESS)) { responseString.append("<b>ActionAttribute</b>:<i>" + actionAttribute + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionAttribute</b>:<i> ActionAttribute Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (CONFIG_POLICY.equals(policyData.getPolicyType())) { String value = ""; if (valid) { if (commonClassDao != null) { List<Object> spData = commonClassDao.getDataById(SafePolicyWarning.class, "riskType", policyData.getRiskType()); if (!spData.isEmpty()) { SafePolicyWarning safePolicyWarningData = (SafePolicyWarning) spData.get(0); value = "<b>Message</b>:<i>" + safePolicyWarningData.getMessage() + "</i>"; } } responseString.append(SUCCESS + "@#" + value); } } else { if (valid) { responseString.append(SUCCESS); } } return responseString; } catch (Exception e) { LOGGER.error("Exception Occured during Policy Validation" + e); return null; } } }
PolicyValidation { public StringBuilder validatePolicy(PolicyRestAdapter policyData) throws IOException { try { boolean valid = true; StringBuilder responseString = new StringBuilder(); ObjectMapper mapper = new ObjectMapper(); if (policyData.getPolicyName() != null) { String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName()); if (!policyNameValidate.contains(SUCCESS)) { responseString.append("<b>PolicyName</b>:<i>" + policyNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>PolicyName</b>: PolicyName Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getPolicyDescription() != null) { String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription()); if (!descriptionValidate.contains(SUCCESS)) { responseString.append("<b>Description</b>:<i>" + descriptionValidate + HTML_ITALICS_LNBREAK); valid = false; } } if (!"API".equals(policyData.getApiflag()) && policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()) { for (Object attribute : policyData.getAttributes()) { if (attribute instanceof LinkedHashMap<?, ?>) { String attValue = null; String key = null; if (((LinkedHashMap<?, ?>) attribute).get("key") != null) { key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(key).contains(SUCCESS)) { responseString.append("<b>Attributes or Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute key</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i> has one missing Attribute key</i><br>"); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_KEY); } valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { attValue = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(attValue).contains(SUCCESS)) { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append("<b>Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } } else { responseString.append( "<b>Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute value</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append(MISSING_ATTRIBUTE_VALUE); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_VALUE); } valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getSettings() != null && !policyData.getSettings().isEmpty()) { for (Object attribute : policyData.getSettings()) { if (attribute instanceof LinkedHashMap<?, ?>) { String value = null; if (((LinkedHashMap<?, ?>) attribute).get("key") == null) { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute key</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { value = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append("<b>Settings Attributes</b>:<i>" + value + SPACESINVALIDCHARS); valid = false; } } else { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute Value</i><br>"); valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getRuleAlgorithmschoices() != null && !policyData.getRuleAlgorithmschoices().isEmpty()) { for (Object attribute : policyData.getRuleAlgorithmschoices()) { if (attribute instanceof LinkedHashMap<?, ?>) { String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 1 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 2 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") != null) { String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") .toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value has special characters</i><br>"); valid = false; } } else { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value is empty</i><br>"); valid = false; } } } } if (CONFIG_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_POLICY.equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_PM.equals(policyData.getConfigPolicyType()) || ENFORCER_CONFIG_POLICY.equals(policyData.getConfigPolicyType()) || MICROSERVICES.equals(policyData.getConfigPolicyType()) || OPTIMIZATION.equals(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils .policySpecialCharWithDashValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("<b>OnapName</b>:<i>" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Onap Name</b>: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (!Strings.isNullOrEmpty(policyData.getRiskType())) { String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType()); if (!riskTypeValidate.contains(SUCCESS)) { responseString.append("<b>RiskType</b>:<i>" + riskTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskType</b>: Risk Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getRiskLevel())) { String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel()); if (!validateRiskLevel.contains(SUCCESS)) { responseString.append("<b>RiskLevel</b>:<i>" + validateRiskLevel + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskLevel</b>: Risk Level Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getGuard())) { String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard()); if (!validateGuard.contains(SUCCESS)) { responseString.append("<b>Guard</b>:<i>" + validateGuard + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Guard</b>: Guard Value Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if ("Base".equalsIgnoreCase(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getConfigName())) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("ConfigName:" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Name: Config Name Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigType())) { String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType()); if (!configTypeValidate.contains(SUCCESS)) { responseString.append("ConfigType:" + configTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Type: Config Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigBodyData())) { String configBodyData = policyData.getConfigBodyData(); String configType = policyData.getConfigType(); if (configType != null) { if ("JSON".equals(configType)) { if (!PolicyUtils.isJSONValid(configBodyData)) { responseString.append( "Config Body: JSON Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("XML".equals(configType)) { if (!PolicyUtils.isXMLValid(configBodyData)) { responseString.append("Config Body: XML Content data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("PROPERTIES".equals(configType)) { if (!PolicyUtils.isPropValid(configBodyData)) { responseString.append( "Config Body: Property data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } } } else { responseString.append("Config Body: Config Body Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (FIREWALL.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigName() != null && !policyData.getConfigName().isEmpty()) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Config Name</b>:<i> Config Name is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getSecurityZone() == null || policyData.getSecurityZone().isEmpty()) { responseString.append( "<b>Security Zone</b>:<i> Security Zone is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (BRMSPARAM.equalsIgnoreCase(policyData.getConfigPolicyType()) && Strings.isNullOrEmpty(policyData.getRuleName())) { responseString.append("<b>BRMS Template</b>:<i>BRMS Template is required" + HTML_ITALICS_LNBREAK); valid = false; } if (BRMSRAW.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigBodyData() != null && !policyData.getConfigBodyData().isEmpty()) { String message = PolicyUtils.brmsRawValidate(policyData.getConfigBodyData()); if (message.contains("[ERR")) { responseString.append("<b>Raw Rule Validate</b>:<i>Raw Rule has error" + message + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Raw Rule</b>:<i>Raw Rule is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_PM.equalsIgnoreCase(policyData.getConfigPolicyType())) { try { if (Strings.isNullOrEmpty(policyData.getServiceTypePolicyName().get("serviceTypePolicyName") .toString())) { responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } } catch (Exception e) { LOGGER.error("ERROR in ClosedLoop_PM PolicyName", e); responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getJsonBody() != null) { ClosedLoopPMBody pmBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopPMBody.class); if (pmBody.getEmailAddress() != null) { String result = emailValidation(pmBody.getEmailAddress(), responseString.toString()); if (result != SUCCESS) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!pmBody.isGamma() && !pmBody.isMcr() && !pmBody.isTrinity() && !pmBody.isvDNS() && !pmBody.isvUSP()) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (pmBody.getGeoLink() != null && !pmBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (pmBody.getAttributes() != null && !pmBody.getAttributes().isEmpty()) { for (Entry<String, String> entry : pmBody.getAttributes().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!key.contains("Message")) { String attributeValidate = PolicyUtils.policySpecialCharValidator(value); if (!attributeValidate.contains(SUCCESS)) { responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces or invalid characters" + HTML_ITALICS_LNBREAK); valid = false; } } } } } else { responseString.append( "<b>D2/Virtualized Services</b>:<i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_POLICY.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getJsonBody() != null) { if ("API".equals(policyData.getApiflag())) { JSONObject json = new JSONObject(policyData.getJsonBody()); if (!json.isNull("conditions")) { String apiCondition = (String) json.get("conditions"); if (Strings.isNullOrEmpty(apiCondition)) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); return responseString; } } else { responseString.append("<b>Conditions</b>:" + " <i>There were no conditions provided in configBody json" + HTML_ITALICS_LNBREAK); return responseString; } } else { if (policyData.getTrapDatas().getTrap1() != null) { if (policyData.getClearTimeOut() == null) { responseString.append("<b>Trigger Clear TimeOut</b>: " + "<i>Trigger Clear TimeOut is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } if (policyData.getTrapMaxAge() == null) { responseString.append("<b>Trap Max Age</b>: <i>Trap Max Age is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } } if (policyData.getFaultDatas().getTrap1() != null && policyData.getVerificationclearTimeOut() == null) { responseString.append( "<b>Fault Clear TimeOut</b>: <i>Fault Clear TimeOut is required when at" + "least One Fault Signature is enabled</i><br>"); valid = false; } } ClosedLoopFaultBody faultBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopFaultBody.class); if (faultBody.getEmailAddress() != null && !faultBody.getEmailAddress().isEmpty()) { String result = emailValidation(faultBody.getEmailAddress(), responseString.toString()); if (!SUCCESS.equals(result)) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!(faultBody.isGamma() || faultBody.isMcr() || faultBody.isTrinity() || faultBody.isvDNS() || faultBody.isvUSP())) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getActions() == null || faultBody.getActions().isEmpty()) { responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getClosedLoopPolicyStatus() == null || faultBody.getClosedLoopPolicyStatus().isEmpty()) { responseString.append("<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getConditions() == null) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getGeoLink() != null && !faultBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (faultBody.getAgingWindow() == 0) { responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeInterval() == 0) { responseString.append("<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getRetrys() == 0) { responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutvPRO() == 0) { responseString.append("<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutRuby() == 0) { responseString.append( "<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getVnfType() == null || faultBody.getVnfType().isEmpty()) { responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append( "<b>D2/Virtualized Services</b>: <i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Conditions</b>: <i>Select Atleast one Condition" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Name</b>: <i>PEP Name is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Action</b>: <i>PEP Action is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (MICROSERVICES.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if (OPTIMIZATION.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateOptimization(policyData, responseString); if (!tmpValid) { valid = false; } } } if ((DECISION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) || (DECISION_POLICY_MS.equalsIgnoreCase(policyData.getPolicyType()))) { if (!RAW.equalsIgnoreCase(policyData.getRuleProvider())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("OnapName:" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Onap Name: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (RAW.equalsIgnoreCase(policyData.getRuleProvider())) { Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(StringEscapeUtils .unescapeXml(policyData.getRawXacmlPolicy()).getBytes(StandardCharsets.UTF_8))); if (!(policy instanceof PolicySetType || policy instanceof PolicyType)) { responseString.append("Raw XACML: The XACML Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } if (DECISION_MS_MODEL.equals(policyData.getRuleProvider())) { LOGGER.info("Validating Decision MS Policy - "); boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if ("Rainy_Day".equals(policyData.getRuleProvider())) { if (policyData.getRainyday() == null) { responseString.append("<b> Rainy Day Parameters are Required </b><br>"); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getRainyday().getServiceType())) { responseString.append("Rainy Day <b>Service Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getVnfType())) { responseString.append("Rainy Day <b>VNF Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getBbid())) { responseString.append("Rainy Day <b>Building Block ID</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getWorkstep())) { responseString.append("Rainy Day <b>Work Step</b> is Required<br>"); valid = false; } if (!policyData.getRainyday().getTreatmentTableChoices().isEmpty() && policyData.getRainyday().getTreatmentTableChoices() != null) { for (Object treatmentMap : policyData.getRainyday().getTreatmentTableChoices()) { String errorCode = null; String treatment = null; if (treatmentMap instanceof LinkedHashMap<?, ?>) { if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("errorcode")) { errorCode = ((LinkedHashMap<?, ?>) treatmentMap).get("errorcode").toString(); } if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("treatment")) { treatment = ((LinkedHashMap<?, ?>) treatmentMap).get("treatment").toString(); } } if (Strings.isNullOrEmpty(errorCode) && Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Error Code</b> and " + "<b>Desired Treatment</b> cannot be empty<br>"); valid = false; break; } if (Strings.isNullOrEmpty(errorCode)) { responseString.append("Rainy Day <b>Error Code</b> is Required " + "for each Desired Treatment<br>"); valid = false; break; } if (Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Desired Treatment" + "</b> is Required for each Error Code<br>"); valid = false; break; } } } else { responseString.append("Rainy Day <b>Desired Automated Treatments</b> are Required<br>"); valid = false; } } } if ("GUARD_YAML".equals(policyData.getRuleProvider()) || "GUARD_BL_YAML".equals(policyData.getRuleProvider()) || "GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (policyData.getYamlparams() == null) { responseString.append("<b> Guard Params are Required </b>" + HTML_ITALICS_LNBREAK); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getYamlparams().getActor())) { responseString.append("Guard Params <b>Actor</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getRecipe())) { responseString.append("Guard Params <b>Recipe</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveStart())) { responseString.append("Guard Params <b>Guard Active Start</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveEnd())) { responseString.append( "Guard Params <b>Guard Active End</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if ("GUARD_YAML".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getLimit())) { responseString.append(" Guard Params <b>Limit</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getLimit())) { responseString.append( " Guard Params <b>Limit</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeWindow())) { responseString.append( "Guard Params <b>Time Window</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getTimeWindow())) { responseString.append(" Guard Params <b>Time Window</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeUnits())) { responseString.append( "Guard Params <b>Time Units</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getMin())) { responseString.append(" Guard Params <b>Min</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMin())) { responseString.append( " Guard Params <b>Min</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getMax())) { responseString.append(" Guard Params <b>Max</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMax())) { responseString.append( " Guard Params <b>Max</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_BL_YAML".equals(policyData.getRuleProvider()) && "Use Manual Entry".equals(policyData.getBlackListEntryType())) { if (policyData.getYamlparams().getBlackList() == null || policyData.getYamlparams().getBlackList().isEmpty()) { responseString.append( " Guard Params <b>BlackList</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else { for (String blackList : policyData.getYamlparams().getBlackList()) { if (blackList == null || !(SUCCESS .equals(PolicyUtils.policySpecialCharValidator(blackList)))) { responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + HTML_ITALICS_LNBREAK); valid = false; break; } } } } } } } if (ACTION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getActionPerformer())) { String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer()); if (!actionPerformer.contains(SUCCESS)) { responseString.append("<b>ActionPerformer</b>:<i>" + actionPerformer + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionPerformer</b>:<i> ActionPerformer Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getActionAttributeValue())) { String actionAttribute = PolicyUtils .policySpecialCharValidator(policyData.getActionAttributeValue()); if (!actionAttribute.contains(SUCCESS)) { responseString.append("<b>ActionAttribute</b>:<i>" + actionAttribute + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionAttribute</b>:<i> ActionAttribute Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (CONFIG_POLICY.equals(policyData.getPolicyType())) { String value = ""; if (valid) { if (commonClassDao != null) { List<Object> spData = commonClassDao.getDataById(SafePolicyWarning.class, "riskType", policyData.getRiskType()); if (!spData.isEmpty()) { SafePolicyWarning safePolicyWarningData = (SafePolicyWarning) spData.get(0); value = "<b>Message</b>:<i>" + safePolicyWarningData.getMessage() + "</i>"; } } responseString.append(SUCCESS + "@#" + value); } } else { if (valid) { responseString.append(SUCCESS); } } return responseString; } catch (Exception e) { LOGGER.error("Exception Occured during Policy Validation" + e); return null; } } @Autowired  PolicyValidation(CommonClassDao commonClassDao);  PolicyValidation(); }
PolicyValidation { public StringBuilder validatePolicy(PolicyRestAdapter policyData) throws IOException { try { boolean valid = true; StringBuilder responseString = new StringBuilder(); ObjectMapper mapper = new ObjectMapper(); if (policyData.getPolicyName() != null) { String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName()); if (!policyNameValidate.contains(SUCCESS)) { responseString.append("<b>PolicyName</b>:<i>" + policyNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>PolicyName</b>: PolicyName Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getPolicyDescription() != null) { String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription()); if (!descriptionValidate.contains(SUCCESS)) { responseString.append("<b>Description</b>:<i>" + descriptionValidate + HTML_ITALICS_LNBREAK); valid = false; } } if (!"API".equals(policyData.getApiflag()) && policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()) { for (Object attribute : policyData.getAttributes()) { if (attribute instanceof LinkedHashMap<?, ?>) { String attValue = null; String key = null; if (((LinkedHashMap<?, ?>) attribute).get("key") != null) { key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(key).contains(SUCCESS)) { responseString.append("<b>Attributes or Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute key</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i> has one missing Attribute key</i><br>"); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_KEY); } valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { attValue = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(attValue).contains(SUCCESS)) { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append("<b>Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } } else { responseString.append( "<b>Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute value</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append(MISSING_ATTRIBUTE_VALUE); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_VALUE); } valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getSettings() != null && !policyData.getSettings().isEmpty()) { for (Object attribute : policyData.getSettings()) { if (attribute instanceof LinkedHashMap<?, ?>) { String value = null; if (((LinkedHashMap<?, ?>) attribute).get("key") == null) { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute key</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { value = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append("<b>Settings Attributes</b>:<i>" + value + SPACESINVALIDCHARS); valid = false; } } else { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute Value</i><br>"); valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getRuleAlgorithmschoices() != null && !policyData.getRuleAlgorithmschoices().isEmpty()) { for (Object attribute : policyData.getRuleAlgorithmschoices()) { if (attribute instanceof LinkedHashMap<?, ?>) { String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 1 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 2 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") != null) { String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") .toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value has special characters</i><br>"); valid = false; } } else { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value is empty</i><br>"); valid = false; } } } } if (CONFIG_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_POLICY.equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_PM.equals(policyData.getConfigPolicyType()) || ENFORCER_CONFIG_POLICY.equals(policyData.getConfigPolicyType()) || MICROSERVICES.equals(policyData.getConfigPolicyType()) || OPTIMIZATION.equals(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils .policySpecialCharWithDashValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("<b>OnapName</b>:<i>" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Onap Name</b>: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (!Strings.isNullOrEmpty(policyData.getRiskType())) { String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType()); if (!riskTypeValidate.contains(SUCCESS)) { responseString.append("<b>RiskType</b>:<i>" + riskTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskType</b>: Risk Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getRiskLevel())) { String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel()); if (!validateRiskLevel.contains(SUCCESS)) { responseString.append("<b>RiskLevel</b>:<i>" + validateRiskLevel + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskLevel</b>: Risk Level Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getGuard())) { String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard()); if (!validateGuard.contains(SUCCESS)) { responseString.append("<b>Guard</b>:<i>" + validateGuard + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Guard</b>: Guard Value Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if ("Base".equalsIgnoreCase(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getConfigName())) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("ConfigName:" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Name: Config Name Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigType())) { String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType()); if (!configTypeValidate.contains(SUCCESS)) { responseString.append("ConfigType:" + configTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Type: Config Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigBodyData())) { String configBodyData = policyData.getConfigBodyData(); String configType = policyData.getConfigType(); if (configType != null) { if ("JSON".equals(configType)) { if (!PolicyUtils.isJSONValid(configBodyData)) { responseString.append( "Config Body: JSON Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("XML".equals(configType)) { if (!PolicyUtils.isXMLValid(configBodyData)) { responseString.append("Config Body: XML Content data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("PROPERTIES".equals(configType)) { if (!PolicyUtils.isPropValid(configBodyData)) { responseString.append( "Config Body: Property data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } } } else { responseString.append("Config Body: Config Body Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (FIREWALL.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigName() != null && !policyData.getConfigName().isEmpty()) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Config Name</b>:<i> Config Name is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getSecurityZone() == null || policyData.getSecurityZone().isEmpty()) { responseString.append( "<b>Security Zone</b>:<i> Security Zone is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (BRMSPARAM.equalsIgnoreCase(policyData.getConfigPolicyType()) && Strings.isNullOrEmpty(policyData.getRuleName())) { responseString.append("<b>BRMS Template</b>:<i>BRMS Template is required" + HTML_ITALICS_LNBREAK); valid = false; } if (BRMSRAW.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigBodyData() != null && !policyData.getConfigBodyData().isEmpty()) { String message = PolicyUtils.brmsRawValidate(policyData.getConfigBodyData()); if (message.contains("[ERR")) { responseString.append("<b>Raw Rule Validate</b>:<i>Raw Rule has error" + message + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Raw Rule</b>:<i>Raw Rule is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_PM.equalsIgnoreCase(policyData.getConfigPolicyType())) { try { if (Strings.isNullOrEmpty(policyData.getServiceTypePolicyName().get("serviceTypePolicyName") .toString())) { responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } } catch (Exception e) { LOGGER.error("ERROR in ClosedLoop_PM PolicyName", e); responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getJsonBody() != null) { ClosedLoopPMBody pmBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopPMBody.class); if (pmBody.getEmailAddress() != null) { String result = emailValidation(pmBody.getEmailAddress(), responseString.toString()); if (result != SUCCESS) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!pmBody.isGamma() && !pmBody.isMcr() && !pmBody.isTrinity() && !pmBody.isvDNS() && !pmBody.isvUSP()) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (pmBody.getGeoLink() != null && !pmBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (pmBody.getAttributes() != null && !pmBody.getAttributes().isEmpty()) { for (Entry<String, String> entry : pmBody.getAttributes().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!key.contains("Message")) { String attributeValidate = PolicyUtils.policySpecialCharValidator(value); if (!attributeValidate.contains(SUCCESS)) { responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces or invalid characters" + HTML_ITALICS_LNBREAK); valid = false; } } } } } else { responseString.append( "<b>D2/Virtualized Services</b>:<i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_POLICY.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getJsonBody() != null) { if ("API".equals(policyData.getApiflag())) { JSONObject json = new JSONObject(policyData.getJsonBody()); if (!json.isNull("conditions")) { String apiCondition = (String) json.get("conditions"); if (Strings.isNullOrEmpty(apiCondition)) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); return responseString; } } else { responseString.append("<b>Conditions</b>:" + " <i>There were no conditions provided in configBody json" + HTML_ITALICS_LNBREAK); return responseString; } } else { if (policyData.getTrapDatas().getTrap1() != null) { if (policyData.getClearTimeOut() == null) { responseString.append("<b>Trigger Clear TimeOut</b>: " + "<i>Trigger Clear TimeOut is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } if (policyData.getTrapMaxAge() == null) { responseString.append("<b>Trap Max Age</b>: <i>Trap Max Age is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } } if (policyData.getFaultDatas().getTrap1() != null && policyData.getVerificationclearTimeOut() == null) { responseString.append( "<b>Fault Clear TimeOut</b>: <i>Fault Clear TimeOut is required when at" + "least One Fault Signature is enabled</i><br>"); valid = false; } } ClosedLoopFaultBody faultBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopFaultBody.class); if (faultBody.getEmailAddress() != null && !faultBody.getEmailAddress().isEmpty()) { String result = emailValidation(faultBody.getEmailAddress(), responseString.toString()); if (!SUCCESS.equals(result)) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!(faultBody.isGamma() || faultBody.isMcr() || faultBody.isTrinity() || faultBody.isvDNS() || faultBody.isvUSP())) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getActions() == null || faultBody.getActions().isEmpty()) { responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getClosedLoopPolicyStatus() == null || faultBody.getClosedLoopPolicyStatus().isEmpty()) { responseString.append("<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getConditions() == null) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getGeoLink() != null && !faultBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (faultBody.getAgingWindow() == 0) { responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeInterval() == 0) { responseString.append("<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getRetrys() == 0) { responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutvPRO() == 0) { responseString.append("<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutRuby() == 0) { responseString.append( "<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getVnfType() == null || faultBody.getVnfType().isEmpty()) { responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append( "<b>D2/Virtualized Services</b>: <i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Conditions</b>: <i>Select Atleast one Condition" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Name</b>: <i>PEP Name is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Action</b>: <i>PEP Action is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (MICROSERVICES.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if (OPTIMIZATION.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateOptimization(policyData, responseString); if (!tmpValid) { valid = false; } } } if ((DECISION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) || (DECISION_POLICY_MS.equalsIgnoreCase(policyData.getPolicyType()))) { if (!RAW.equalsIgnoreCase(policyData.getRuleProvider())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("OnapName:" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Onap Name: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (RAW.equalsIgnoreCase(policyData.getRuleProvider())) { Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(StringEscapeUtils .unescapeXml(policyData.getRawXacmlPolicy()).getBytes(StandardCharsets.UTF_8))); if (!(policy instanceof PolicySetType || policy instanceof PolicyType)) { responseString.append("Raw XACML: The XACML Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } if (DECISION_MS_MODEL.equals(policyData.getRuleProvider())) { LOGGER.info("Validating Decision MS Policy - "); boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if ("Rainy_Day".equals(policyData.getRuleProvider())) { if (policyData.getRainyday() == null) { responseString.append("<b> Rainy Day Parameters are Required </b><br>"); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getRainyday().getServiceType())) { responseString.append("Rainy Day <b>Service Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getVnfType())) { responseString.append("Rainy Day <b>VNF Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getBbid())) { responseString.append("Rainy Day <b>Building Block ID</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getWorkstep())) { responseString.append("Rainy Day <b>Work Step</b> is Required<br>"); valid = false; } if (!policyData.getRainyday().getTreatmentTableChoices().isEmpty() && policyData.getRainyday().getTreatmentTableChoices() != null) { for (Object treatmentMap : policyData.getRainyday().getTreatmentTableChoices()) { String errorCode = null; String treatment = null; if (treatmentMap instanceof LinkedHashMap<?, ?>) { if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("errorcode")) { errorCode = ((LinkedHashMap<?, ?>) treatmentMap).get("errorcode").toString(); } if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("treatment")) { treatment = ((LinkedHashMap<?, ?>) treatmentMap).get("treatment").toString(); } } if (Strings.isNullOrEmpty(errorCode) && Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Error Code</b> and " + "<b>Desired Treatment</b> cannot be empty<br>"); valid = false; break; } if (Strings.isNullOrEmpty(errorCode)) { responseString.append("Rainy Day <b>Error Code</b> is Required " + "for each Desired Treatment<br>"); valid = false; break; } if (Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Desired Treatment" + "</b> is Required for each Error Code<br>"); valid = false; break; } } } else { responseString.append("Rainy Day <b>Desired Automated Treatments</b> are Required<br>"); valid = false; } } } if ("GUARD_YAML".equals(policyData.getRuleProvider()) || "GUARD_BL_YAML".equals(policyData.getRuleProvider()) || "GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (policyData.getYamlparams() == null) { responseString.append("<b> Guard Params are Required </b>" + HTML_ITALICS_LNBREAK); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getYamlparams().getActor())) { responseString.append("Guard Params <b>Actor</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getRecipe())) { responseString.append("Guard Params <b>Recipe</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveStart())) { responseString.append("Guard Params <b>Guard Active Start</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveEnd())) { responseString.append( "Guard Params <b>Guard Active End</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if ("GUARD_YAML".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getLimit())) { responseString.append(" Guard Params <b>Limit</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getLimit())) { responseString.append( " Guard Params <b>Limit</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeWindow())) { responseString.append( "Guard Params <b>Time Window</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getTimeWindow())) { responseString.append(" Guard Params <b>Time Window</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeUnits())) { responseString.append( "Guard Params <b>Time Units</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getMin())) { responseString.append(" Guard Params <b>Min</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMin())) { responseString.append( " Guard Params <b>Min</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getMax())) { responseString.append(" Guard Params <b>Max</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMax())) { responseString.append( " Guard Params <b>Max</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_BL_YAML".equals(policyData.getRuleProvider()) && "Use Manual Entry".equals(policyData.getBlackListEntryType())) { if (policyData.getYamlparams().getBlackList() == null || policyData.getYamlparams().getBlackList().isEmpty()) { responseString.append( " Guard Params <b>BlackList</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else { for (String blackList : policyData.getYamlparams().getBlackList()) { if (blackList == null || !(SUCCESS .equals(PolicyUtils.policySpecialCharValidator(blackList)))) { responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + HTML_ITALICS_LNBREAK); valid = false; break; } } } } } } } if (ACTION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getActionPerformer())) { String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer()); if (!actionPerformer.contains(SUCCESS)) { responseString.append("<b>ActionPerformer</b>:<i>" + actionPerformer + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionPerformer</b>:<i> ActionPerformer Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getActionAttributeValue())) { String actionAttribute = PolicyUtils .policySpecialCharValidator(policyData.getActionAttributeValue()); if (!actionAttribute.contains(SUCCESS)) { responseString.append("<b>ActionAttribute</b>:<i>" + actionAttribute + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionAttribute</b>:<i> ActionAttribute Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (CONFIG_POLICY.equals(policyData.getPolicyType())) { String value = ""; if (valid) { if (commonClassDao != null) { List<Object> spData = commonClassDao.getDataById(SafePolicyWarning.class, "riskType", policyData.getRiskType()); if (!spData.isEmpty()) { SafePolicyWarning safePolicyWarningData = (SafePolicyWarning) spData.get(0); value = "<b>Message</b>:<i>" + safePolicyWarningData.getMessage() + "</i>"; } } responseString.append(SUCCESS + "@#" + value); } } else { if (valid) { responseString.append(SUCCESS); } } return responseString; } catch (Exception e) { LOGGER.error("Exception Occured during Policy Validation" + e); return null; } } @Autowired  PolicyValidation(CommonClassDao commonClassDao);  PolicyValidation(); StringBuilder validatePolicy(PolicyRestAdapter policyData); }
PolicyValidation { public StringBuilder validatePolicy(PolicyRestAdapter policyData) throws IOException { try { boolean valid = true; StringBuilder responseString = new StringBuilder(); ObjectMapper mapper = new ObjectMapper(); if (policyData.getPolicyName() != null) { String policyNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getPolicyName()); if (!policyNameValidate.contains(SUCCESS)) { responseString.append("<b>PolicyName</b>:<i>" + policyNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>PolicyName</b>: PolicyName Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getPolicyDescription() != null) { String descriptionValidate = PolicyUtils.descriptionValidator(policyData.getPolicyDescription()); if (!descriptionValidate.contains(SUCCESS)) { responseString.append("<b>Description</b>:<i>" + descriptionValidate + HTML_ITALICS_LNBREAK); valid = false; } } if (!"API".equals(policyData.getApiflag()) && policyData.getAttributes() != null && !policyData.getAttributes().isEmpty()) { for (Object attribute : policyData.getAttributes()) { if (attribute instanceof LinkedHashMap<?, ?>) { String attValue = null; String key = null; if (((LinkedHashMap<?, ?>) attribute).get("key") != null) { key = ((LinkedHashMap<?, ?>) attribute).get("key").toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(key).contains(SUCCESS)) { responseString.append("<b>Attributes or Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute key</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i> has one missing Attribute key</i><br>"); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_KEY); } valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { attValue = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharWithDashValidator(attValue).contains(SUCCESS)) { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append("<b>Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Rule Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } } else { responseString.append( "<b>Component Attributes</b>:<i>" + attValue + SPACESINVALIDCHARS); } valid = false; } } else { if (CONFIG_POLICY.equals(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType())) { responseString.append( "<b>Attributes</b>:<i> has one missing Attribute value</i><br>"); } if (BRMSPARAM.equals(policyData.getConfigPolicyType()) || BRMSRAW.equals(policyData.getConfigPolicyType())) { responseString.append(MISSING_ATTRIBUTE_VALUE); } } else { responseString.append(MISSING_COMPONENT_ATTRIBUTE_VALUE); } valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getSettings() != null && !policyData.getSettings().isEmpty()) { for (Object attribute : policyData.getSettings()) { if (attribute instanceof LinkedHashMap<?, ?>) { String value = null; if (((LinkedHashMap<?, ?>) attribute).get("key") == null) { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute key</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get(VALUE) != null) { value = ((LinkedHashMap<?, ?>) attribute).get(VALUE).toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append("<b>Settings Attributes</b>:<i>" + value + SPACESINVALIDCHARS); valid = false; } } else { responseString.append( "<b>Settings Attributes</b>:<i> has one missing Attribute Value</i><br>"); valid = false; } } } } if (!"API".equals(policyData.getApiflag()) && policyData.getRuleAlgorithmschoices() != null && !policyData.getRuleAlgorithmschoices().isEmpty()) { for (Object attribute : policyData.getRuleAlgorithmschoices()) { if (attribute instanceof LinkedHashMap<?, ?>) { String label = ((LinkedHashMap<?, ?>) attribute).get("id").toString(); if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField1") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 1 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmCombo") == null) { responseString.append(RULE_ALGORITHMS + label + " : Field 2 value is not selected</i><br>"); valid = false; } if (((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") != null) { String value = ((LinkedHashMap<?, ?>) attribute).get("dynamicRuleAlgorithmField2") .toString(); if (!PolicyUtils.policySpecialCharValidator(value).contains(SUCCESS)) { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value has special characters</i><br>"); valid = false; } } else { responseString.append(RULE_ALGORITHMS + label + " : Field 3 value is empty</i><br>"); valid = false; } } } } if (CONFIG_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if ("Base".equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_POLICY.equals(policyData.getConfigPolicyType()) || CLOSEDLOOP_PM.equals(policyData.getConfigPolicyType()) || ENFORCER_CONFIG_POLICY.equals(policyData.getConfigPolicyType()) || MICROSERVICES.equals(policyData.getConfigPolicyType()) || OPTIMIZATION.equals(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils .policySpecialCharWithDashValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("<b>OnapName</b>:<i>" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Onap Name</b>: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (!Strings.isNullOrEmpty(policyData.getRiskType())) { String riskTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getRiskType()); if (!riskTypeValidate.contains(SUCCESS)) { responseString.append("<b>RiskType</b>:<i>" + riskTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskType</b>: Risk Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getRiskLevel())) { String validateRiskLevel = PolicyUtils.policySpecialCharValidator(policyData.getRiskLevel()); if (!validateRiskLevel.contains(SUCCESS)) { responseString.append("<b>RiskLevel</b>:<i>" + validateRiskLevel + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>RiskLevel</b>: Risk Level Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getGuard())) { String validateGuard = PolicyUtils.policySpecialCharValidator(policyData.getGuard()); if (!validateGuard.contains(SUCCESS)) { responseString.append("<b>Guard</b>:<i>" + validateGuard + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Guard</b>: Guard Value Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if ("Base".equalsIgnoreCase(policyData.getConfigPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getConfigName())) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("ConfigName:" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Name: Config Name Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigType())) { String configTypeValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigType()); if (!configTypeValidate.contains(SUCCESS)) { responseString.append("ConfigType:" + configTypeValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Config Type: Config Type Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getConfigBodyData())) { String configBodyData = policyData.getConfigBodyData(); String configType = policyData.getConfigType(); if (configType != null) { if ("JSON".equals(configType)) { if (!PolicyUtils.isJSONValid(configBodyData)) { responseString.append( "Config Body: JSON Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("XML".equals(configType)) { if (!PolicyUtils.isXMLValid(configBodyData)) { responseString.append("Config Body: XML Content data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("PROPERTIES".equals(configType)) { if (!PolicyUtils.isPropValid(configBodyData)) { responseString.append( "Config Body: Property data is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } } } else { responseString.append("Config Body: Config Body Should not be Empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (FIREWALL.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigName() != null && !policyData.getConfigName().isEmpty()) { String configNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getConfigName()); if (!configNameValidate.contains(SUCCESS)) { responseString.append("<b>ConfigName</b>:<i>" + configNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Config Name</b>:<i> Config Name is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getSecurityZone() == null || policyData.getSecurityZone().isEmpty()) { responseString.append( "<b>Security Zone</b>:<i> Security Zone is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (BRMSPARAM.equalsIgnoreCase(policyData.getConfigPolicyType()) && Strings.isNullOrEmpty(policyData.getRuleName())) { responseString.append("<b>BRMS Template</b>:<i>BRMS Template is required" + HTML_ITALICS_LNBREAK); valid = false; } if (BRMSRAW.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getConfigBodyData() != null && !policyData.getConfigBodyData().isEmpty()) { String message = PolicyUtils.brmsRawValidate(policyData.getConfigBodyData()); if (message.contains("[ERR")) { responseString.append("<b>Raw Rule Validate</b>:<i>Raw Rule has error" + message + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>Raw Rule</b>:<i>Raw Rule is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_PM.equalsIgnoreCase(policyData.getConfigPolicyType())) { try { if (Strings.isNullOrEmpty(policyData.getServiceTypePolicyName().get("serviceTypePolicyName") .toString())) { responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } } catch (Exception e) { LOGGER.error("ERROR in ClosedLoop_PM PolicyName", e); responseString.append("<b>ServiceType PolicyName</b>:<i>ServiceType PolicyName is required" + HTML_ITALICS_LNBREAK); valid = false; } if (policyData.getJsonBody() != null) { ClosedLoopPMBody pmBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopPMBody.class); if (pmBody.getEmailAddress() != null) { String result = emailValidation(pmBody.getEmailAddress(), responseString.toString()); if (result != SUCCESS) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!pmBody.isGamma() && !pmBody.isMcr() && !pmBody.isTrinity() && !pmBody.isvDNS() && !pmBody.isvUSP()) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (pmBody.getGeoLink() != null && !pmBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharValidator(pmBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (pmBody.getAttributes() != null && !pmBody.getAttributes().isEmpty()) { for (Entry<String, String> entry : pmBody.getAttributes().entrySet()) { String key = entry.getKey(); String value = entry.getValue(); if (!key.contains("Message")) { String attributeValidate = PolicyUtils.policySpecialCharValidator(value); if (!attributeValidate.contains(SUCCESS)) { responseString.append("<b>Attributes</b>:<i>" + key + " : value has spaces or invalid characters" + HTML_ITALICS_LNBREAK); valid = false; } } } } } else { responseString.append( "<b>D2/Virtualized Services</b>:<i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); valid = false; } } if (CLOSEDLOOP_POLICY.equalsIgnoreCase(policyData.getConfigPolicyType())) { if (policyData.getJsonBody() != null) { if ("API".equals(policyData.getApiflag())) { JSONObject json = new JSONObject(policyData.getJsonBody()); if (!json.isNull("conditions")) { String apiCondition = (String) json.get("conditions"); if (Strings.isNullOrEmpty(apiCondition)) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); return responseString; } } else { responseString.append("<b>Conditions</b>:" + " <i>There were no conditions provided in configBody json" + HTML_ITALICS_LNBREAK); return responseString; } } else { if (policyData.getTrapDatas().getTrap1() != null) { if (policyData.getClearTimeOut() == null) { responseString.append("<b>Trigger Clear TimeOut</b>: " + "<i>Trigger Clear TimeOut is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } if (policyData.getTrapMaxAge() == null) { responseString.append("<b>Trap Max Age</b>: <i>Trap Max Age is required when at " + "least One Trigger Signature is enabled</i><br>"); valid = false; } } if (policyData.getFaultDatas().getTrap1() != null && policyData.getVerificationclearTimeOut() == null) { responseString.append( "<b>Fault Clear TimeOut</b>: <i>Fault Clear TimeOut is required when at" + "least One Fault Signature is enabled</i><br>"); valid = false; } } ClosedLoopFaultBody faultBody = mapper.readValue(policyData.getJsonBody(), ClosedLoopFaultBody.class); if (faultBody.getEmailAddress() != null && !faultBody.getEmailAddress().isEmpty()) { String result = emailValidation(faultBody.getEmailAddress(), responseString.toString()); if (!SUCCESS.equals(result)) { responseString.append(result + HTML_ITALICS_LNBREAK); valid = false; } } if (!(faultBody.isGamma() || faultBody.isMcr() || faultBody.isTrinity() || faultBody.isvDNS() || faultBody.isvUSP())) { responseString.append(SELECT_AT_LEAST_ONE_D2_VIRTUALIZED_SERVICES + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getActions() == null || faultBody.getActions().isEmpty()) { responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getClosedLoopPolicyStatus() == null || faultBody.getClosedLoopPolicyStatus().isEmpty()) { responseString.append("<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getConditions() == null) { responseString.append("<b>Conditions</b>: <i>Select At least one Condition" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getGeoLink() != null && !faultBody.getGeoLink().isEmpty()) { String result = PolicyUtils.policySpecialCharWithSpaceValidator(faultBody.getGeoLink()); if (!result.contains(SUCCESS)) { responseString.append("<b>GeoLink</b>:<i>" + result + HTML_ITALICS_LNBREAK); valid = false; } } if (faultBody.getAgingWindow() == 0) { responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeInterval() == 0) { responseString.append("<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getRetrys() == 0) { responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutvPRO() == 0) { responseString.append("<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getTimeOutRuby() == 0) { responseString.append( "<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); valid = false; } if (faultBody.getVnfType() == null || faultBody.getVnfType().isEmpty()) { responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append( "<b>D2/Virtualized Services</b>: <i>Select at least one D2/Virtualized Services" + HTML_ITALICS_LNBREAK); responseString.append( "<b>vPRO Actions</b>: <i>vPRO Actions is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Aging Window</b>: <i>Aging Window is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Policy Status</b>: <i>Policy Status is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Conditions</b>: <i>Select Atleast one Condition" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Name</b>: <i>PEP Name is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>PEP Action</b>: <i>PEP Action is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>Time Interval</b>: <i>Time Interval is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Number of Retries</b>: <i>Number of Retries is required" + HTML_ITALICS_LNBREAK); responseString.append( "<b>APP-C Timeout</b>: <i>APP-C Timeout is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>TimeOutRuby</b>: <i>TimeOutRuby is required" + HTML_ITALICS_LNBREAK); responseString.append("<b>Vnf Type</b>: <i>Vnf Type is required" + HTML_ITALICS_LNBREAK); valid = false; } } if (MICROSERVICES.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if (OPTIMIZATION.equals(policyData.getConfigPolicyType())) { boolean tmpValid = validateOptimization(policyData, responseString); if (!tmpValid) { valid = false; } } } if ((DECISION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) || (DECISION_POLICY_MS.equalsIgnoreCase(policyData.getPolicyType()))) { if (!RAW.equalsIgnoreCase(policyData.getRuleProvider())) { if (!Strings.isNullOrEmpty(policyData.getOnapName())) { String onapNameValidate = PolicyUtils.policySpecialCharValidator(policyData.getOnapName()); if (!onapNameValidate.contains(SUCCESS)) { responseString.append("OnapName:" + onapNameValidate + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("Onap Name: Onap Name Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (RAW.equalsIgnoreCase(policyData.getRuleProvider())) { Object policy = XACMLPolicyScanner.readPolicy(new ByteArrayInputStream(StringEscapeUtils .unescapeXml(policyData.getRawXacmlPolicy()).getBytes(StandardCharsets.UTF_8))); if (!(policy instanceof PolicySetType || policy instanceof PolicyType)) { responseString.append("Raw XACML: The XACML Content is not valid" + HTML_ITALICS_LNBREAK); valid = false; } } if (DECISION_MS_MODEL.equals(policyData.getRuleProvider())) { LOGGER.info("Validating Decision MS Policy - "); boolean tmpValid = validateMsModel(policyData, responseString); if (!tmpValid) { valid = false; } } if ("Rainy_Day".equals(policyData.getRuleProvider())) { if (policyData.getRainyday() == null) { responseString.append("<b> Rainy Day Parameters are Required </b><br>"); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getRainyday().getServiceType())) { responseString.append("Rainy Day <b>Service Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getVnfType())) { responseString.append("Rainy Day <b>VNF Type</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getBbid())) { responseString.append("Rainy Day <b>Building Block ID</b> is Required<br>"); valid = false; } if (Strings.isNullOrEmpty(policyData.getRainyday().getWorkstep())) { responseString.append("Rainy Day <b>Work Step</b> is Required<br>"); valid = false; } if (!policyData.getRainyday().getTreatmentTableChoices().isEmpty() && policyData.getRainyday().getTreatmentTableChoices() != null) { for (Object treatmentMap : policyData.getRainyday().getTreatmentTableChoices()) { String errorCode = null; String treatment = null; if (treatmentMap instanceof LinkedHashMap<?, ?>) { if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("errorcode")) { errorCode = ((LinkedHashMap<?, ?>) treatmentMap).get("errorcode").toString(); } if (((LinkedHashMap<?, ?>) treatmentMap).containsKey("treatment")) { treatment = ((LinkedHashMap<?, ?>) treatmentMap).get("treatment").toString(); } } if (Strings.isNullOrEmpty(errorCode) && Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Error Code</b> and " + "<b>Desired Treatment</b> cannot be empty<br>"); valid = false; break; } if (Strings.isNullOrEmpty(errorCode)) { responseString.append("Rainy Day <b>Error Code</b> is Required " + "for each Desired Treatment<br>"); valid = false; break; } if (Strings.isNullOrEmpty(treatment)) { responseString.append("Rainy Day <b>Desired Treatment" + "</b> is Required for each Error Code<br>"); valid = false; break; } } } else { responseString.append("Rainy Day <b>Desired Automated Treatments</b> are Required<br>"); valid = false; } } } if ("GUARD_YAML".equals(policyData.getRuleProvider()) || "GUARD_BL_YAML".equals(policyData.getRuleProvider()) || "GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (policyData.getYamlparams() == null) { responseString.append("<b> Guard Params are Required </b>" + HTML_ITALICS_LNBREAK); valid = false; } else { if (Strings.isNullOrEmpty(policyData.getYamlparams().getActor())) { responseString.append("Guard Params <b>Actor</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getRecipe())) { responseString.append("Guard Params <b>Recipe</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveStart())) { responseString.append("Guard Params <b>Guard Active Start</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getGuardActiveEnd())) { responseString.append( "Guard Params <b>Guard Active End</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } if ("GUARD_YAML".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getLimit())) { responseString.append(" Guard Params <b>Limit</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getLimit())) { responseString.append( " Guard Params <b>Limit</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeWindow())) { responseString.append( "Guard Params <b>Time Window</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getTimeWindow())) { responseString.append(" Guard Params <b>Time Window</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getTimeUnits())) { responseString.append( "Guard Params <b>Time Units</b> is Required" + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_MIN_MAX".equals(policyData.getRuleProvider())) { if (Strings.isNullOrEmpty(policyData.getYamlparams().getMin())) { responseString.append(" Guard Params <b>Min</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMin())) { responseString.append( " Guard Params <b>Min</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } if (Strings.isNullOrEmpty(policyData.getYamlparams().getMax())) { responseString.append(" Guard Params <b>Max</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else if (!PolicyUtils.isInteger(policyData.getYamlparams().getMax())) { responseString.append( " Guard Params <b>Max</b> Should be Integer " + HTML_ITALICS_LNBREAK); valid = false; } } else if ("GUARD_BL_YAML".equals(policyData.getRuleProvider()) && "Use Manual Entry".equals(policyData.getBlackListEntryType())) { if (policyData.getYamlparams().getBlackList() == null || policyData.getYamlparams().getBlackList().isEmpty()) { responseString.append( " Guard Params <b>BlackList</b> is Required " + HTML_ITALICS_LNBREAK); valid = false; } else { for (String blackList : policyData.getYamlparams().getBlackList()) { if (blackList == null || !(SUCCESS .equals(PolicyUtils.policySpecialCharValidator(blackList)))) { responseString.append(" Guard Params <b>BlackList</b> Should be valid String" + HTML_ITALICS_LNBREAK); valid = false; break; } } } } } } } if (ACTION_POLICY.equalsIgnoreCase(policyData.getPolicyType())) { if (!Strings.isNullOrEmpty(policyData.getActionPerformer())) { String actionPerformer = PolicyUtils.policySpecialCharValidator(policyData.getActionPerformer()); if (!actionPerformer.contains(SUCCESS)) { responseString.append("<b>ActionPerformer</b>:<i>" + actionPerformer + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionPerformer</b>:<i> ActionPerformer Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } if (!Strings.isNullOrEmpty(policyData.getActionAttributeValue())) { String actionAttribute = PolicyUtils .policySpecialCharValidator(policyData.getActionAttributeValue()); if (!actionAttribute.contains(SUCCESS)) { responseString.append("<b>ActionAttribute</b>:<i>" + actionAttribute + HTML_ITALICS_LNBREAK); valid = false; } } else { responseString.append("<b>ActionAttribute</b>:<i> ActionAttribute Should not be empty" + HTML_ITALICS_LNBREAK); valid = false; } } if (CONFIG_POLICY.equals(policyData.getPolicyType())) { String value = ""; if (valid) { if (commonClassDao != null) { List<Object> spData = commonClassDao.getDataById(SafePolicyWarning.class, "riskType", policyData.getRiskType()); if (!spData.isEmpty()) { SafePolicyWarning safePolicyWarningData = (SafePolicyWarning) spData.get(0); value = "<b>Message</b>:<i>" + safePolicyWarningData.getMessage() + "</i>"; } } responseString.append(SUCCESS + "@#" + value); } } else { if (valid) { responseString.append(SUCCESS); } } return responseString; } catch (Exception e) { LOGGER.error("Exception Occured during Policy Validation" + e); return null; } } @Autowired  PolicyValidation(CommonClassDao commonClassDao);  PolicyValidation(); StringBuilder validatePolicy(PolicyRestAdapter policyData);  }