X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-PAP-REST%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fpap%2Fxacml%2Frest%2Fcomponents%2FSafePolicyBuilder.java;h=6ef7a8f18dab33b0ab3ab934922276e9f3fb22de;hp=ba5b0026ae05f8da9f3d85a9ed40d2bf6a2de5b8;hb=1e61676b77dd09659027b8984f050df7e8538526;hpb=073cc188efe9abb4c010cf674e34e2cf46ef1c52 diff --git a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java index ba5b0026a..6ef7a8f18 100644 --- a/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java +++ b/ONAP-PAP-REST/src/main/java/org/onap/policy/pap/xacml/rest/components/SafePolicyBuilder.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP-PAP-REST * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2017, 2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,6 +17,7 @@ * limitations under the License. * ============LICENSE_END========================================================= */ + package org.onap.policy.pap.xacml.rest.components; import java.util.List; @@ -30,57 +31,59 @@ import org.yaml.snakeyaml.Yaml; import org.yaml.snakeyaml.constructor.Constructor; public class SafePolicyBuilder { - - private SafePolicyBuilder(){ - //Private Constructor. - } - public static ControlLoopGuard loadYamlGuard(String specification) { - // - // Read the yaml into our Java Object - // - PolicyLogger.info("Requested YAML to convert : " + specification); - Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class)); - Object obj = yaml.load(specification); - return (ControlLoopGuard) obj; - } - - public static String generateXacmlGuard(String xacmlFileContent,Map generateMap, List blacklist, List targets) { - //Setup default values and Targets. - StringBuilder targetRegex= new StringBuilder(".*|"); - if(targets!=null && !targets.isEmpty()){ - targetRegex = new StringBuilder(); - for(String t : targets){ - targetRegex.append(t + "|"); + private SafePolicyBuilder() { + // Private Constructor. + } + + public static ControlLoopGuard loadYamlGuard(String specification) { + // + // Read the yaml into our Java Object + // + PolicyLogger.info("Requested YAML to convert : " + specification); + Yaml yaml = new Yaml(new Constructor(ControlLoopGuard.class)); + Object obj = yaml.load(specification); + return (ControlLoopGuard) obj; + } + + public static String generateXacmlGuard(String xacmlFileContent, Map generateMap, + List blacklist, List targets) { + // Setup default values and Targets. + StringBuilder targetRegex = new StringBuilder(".*|"); + if (targets != null && !targets.isEmpty()) { + targetRegex = new StringBuilder(); + for (String t : targets) { + targetRegex.append(t + "|"); + } + } + if (generateMap.get("clname") == null || generateMap.get("clname").isEmpty()) { + generateMap.put("clname", ".*"); + } + generateMap.put("targets", targetRegex.toString().substring(0, targetRegex.length() - 1)); + // Replace values. + for (Map.Entry map : generateMap.entrySet()) { + Pattern p = Pattern.compile("\\$\\{" + map.getKey() + "\\}"); + Matcher m = p.matcher(xacmlFileContent); + String finalInput = map.getValue(); + if (finalInput.contains("$")) { + finalInput = finalInput.replace("$", "\\$"); + } + xacmlFileContent = m.replaceAll(finalInput); + } + if (blacklist != null && !blacklist.isEmpty()) { + StringBuilder rule = new StringBuilder(); + for (String blackListName : blacklist) { + if (blackListName.contains("$")) { + blackListName = blackListName.replace("$", "\\$"); + } + rule.append("" + blackListName + + ""); } - } - if(generateMap.get("clname")==null|| generateMap.get("clname").isEmpty()){ - generateMap.put("clname",".*"); - } - generateMap.put("targets", targetRegex.toString().substring(0, targetRegex.length()-1)); - // Replace values. - for(Map.Entry map: generateMap.entrySet()){ - Pattern p = Pattern.compile("\\$\\{" +map.getKey() +"\\}"); - Matcher m = p.matcher(xacmlFileContent); - String finalInput = map.getValue(); - if(finalInput.contains("$")){ - finalInput = finalInput.replace("$", "\\$"); - } - xacmlFileContent=m.replaceAll(finalInput); - } - if(blacklist!=null && !blacklist.isEmpty()){ - StringBuilder rule = new StringBuilder(); - for(String blackListName : blacklist){ - if(blackListName.contains("$")){ - blackListName = blackListName.replace("$", "\\$"); - } - rule.append(""+blackListName+""); - } - Pattern p = Pattern.compile("\\$\\{blackListElement\\}"); - Matcher m = p.matcher(xacmlFileContent); - xacmlFileContent=m.replaceAll(rule.toString()); - } - PolicyLogger.info("Generated XACML from the YAML Spec: \n" + xacmlFileContent); - return xacmlFileContent; - } + Pattern p = Pattern.compile("\\$\\{blackListElement\\}"); + Matcher m = p.matcher(xacmlFileContent); + xacmlFileContent = m.replaceAll(rule.toString()); + } + PolicyLogger.info("Generated XACML from the YAML Spec: \n" + xacmlFileContent); + return xacmlFileContent; + } }