Changes to handle PDPX deploy/undeploy
[policy/xacml-pdp.git] / applications / common / src / main / java / org / onap / policy / pdp / xacml / application / common / XacmlPolicyUtils.java
index 30363b4..2a5f21f 100644 (file)
@@ -214,6 +214,50 @@ public class XacmlPolicyUtils {
         return properties;
     }
 
+    /**
+     * Removes a root policy from the Properties object. Both in the line
+     * that identifies the policy and the .file property that points to the path.
+     *
+     * @param properties Input Properties object to remove
+     * @param rootPolicyPath The policy file path
+     * @return Properties object
+     */
+    public static Properties removeRootPolicy(Properties properties, Path rootPolicyPath) {
+        //
+        // Get the current set of referenced policy ids
+        //
+        StringJoiner join = new StringJoiner(",");
+        boolean found = false;
+        Set<String> rootPolicies = XACMLProperties.getRootPolicyIDs(properties);
+        for (String refPolicy : rootPolicies) {
+            String refPolicyFile = refPolicy + DOT_FILE_SUFFIX;
+            //
+            // If the key and value match, then it will return true
+            //
+            if (properties.remove(refPolicyFile, rootPolicyPath.toString())) {
+                //
+                // Record that we actually removed it
+                //
+                found = true;
+            } else {
+                //
+                // Retain it
+                //
+                join.add(refPolicy);
+            }
+        }
+        //
+        // Did we remove it?
+        //
+        if (found) {
+            //
+            // Now update the list of referenced properties
+            //
+            properties.setProperty(XACMLProperties.PROP_ROOTPOLICIES, join.toString());
+        }
+        return properties;
+    }
+
     /**
      * Removes a referenced policy from the Properties object. Both in the line
      * that identifies the policy and the .file property that points to the path.
@@ -329,10 +373,6 @@ public class XacmlPolicyUtils {
             properties.load(is);
             if (LOGGER.isDebugEnabled()) {
                 LOGGER.debug("Loaded xacml properties {} {}", System.lineSeparator(), properties);
-                //
-                // It would be nice to sort this first
-                //
-                properties.list(System.out);
                 for (Entry<Object, Object> entrySet : properties.entrySet()) {
                     LOGGER.debug("{} -> {}", entrySet.getKey(), entrySet.getValue());
                 }
@@ -349,7 +389,6 @@ public class XacmlPolicyUtils {
     public static void storeXacmlProperties(Properties properties, Path propertyPath) throws IOException {
         if (LOGGER.isDebugEnabled()) {
             LOGGER.debug("Storing xacml properties {} {} {}", properties, System.lineSeparator(), propertyPath);
-            properties.list(System.out);
         }
         try (OutputStream os = Files.newOutputStream(propertyPath)) {
             String strComments = "#";
@@ -367,6 +406,7 @@ public class XacmlPolicyUtils {
         return Paths.get(rootPath.toAbsolutePath().toString(), "xacml.properties");
     }
 
+    @FunctionalInterface
     public interface FileCreator {
         public File createAFile(String filename) throws IOException;