Added Junits for Policy PAP-REST
[policy/engine.git] / POLICY-SDK-APP / src / main / java / org / onap / policy / components / HumanPolicyComponent.java
index 7c60ecf..23392bd 100644 (file)
 package org.onap.policy.components;
 
 
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
-import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.nio.file.Path;
@@ -43,7 +41,6 @@ import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.controller.PolicyController;
 import org.onap.policy.rest.jpa.FunctionDefinition;
-import org.onap.policy.utils.XACMLPolicyWriterWithPapNotify;
 import org.onap.policy.xacml.api.XACMLErrorConstants;
 import org.onap.policy.xacml.util.XACMLPolicyScanner;
 
@@ -131,13 +128,11 @@ public class HumanPolicyComponent{
                return null;
        }
        
-       private static String processPolicy() throws IllegalArgumentException 
-               if (LOGGER.isTraceEnabled())
+       private static String processPolicy() { 
+               if (LOGGER.isTraceEnabled()) {
                        LOGGER.trace("ENTER");
-               
-               FileInputStream pIS = null;
-               try {
-                       pIS = new FileInputStream(policyFile);
+               }
+               try (FileInputStream pIS = new FileInputStream(policyFile)){
                        Object policy = XACMLPolicyScanner.readPolicy(pIS);
                        if (policy == null)
                                throw new IllegalArgumentException("Policy File " +  policyFile.getName() + 
@@ -160,14 +155,6 @@ public class HumanPolicyComponent{
                                             ": " + e.getMessage();
                        LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + msg, e);    
                        throw new IllegalArgumentException(msg);
-               } finally {
-                       if (pIS != null) {
-                               try {
-                                       pIS.close();
-                               } catch (IOException e) {
-                                       LOGGER.warn(e.getMessage(), e);
-                               }
-                       }
                }
        }
        
@@ -209,8 +196,7 @@ class HtmlProcessor extends SimpleCallback {
        private final String policyName;
        private final Object rootPolicyObject;
        
-       public HtmlProcessor(File policyFile, Object policyObject) 
-                  throws IllegalArgumentException {
+       public HtmlProcessor(File policyFile, Object policyObject) {
                if (LOGGER.isTraceEnabled())
                        LOGGER.trace("ENTER");
                
@@ -315,29 +301,6 @@ class HtmlProcessor extends SimpleCallback {
                super.onFinishScan(root);
        }
        
-       @SuppressWarnings("unused")
-       private void writeRawXACML() {
-               if (LOGGER.isTraceEnabled())
-                       LOGGER.trace("ENTER");
-               
-               htmlOut.println("<hr>");                
-               htmlOut.println("<h3>Raw XACML:</h3>");
-               
-               ByteArrayOutputStream bos = new ByteArrayOutputStream();
-               if (rootPolicyObject instanceof PolicySetType) {
-                       XACMLPolicyWriterWithPapNotify.writePolicyFile(bos, (PolicySetType) rootPolicyObject);
-               } else if (rootPolicyObject instanceof PolicyType) {
-                       XACMLPolicyWriterWithPapNotify.writePolicyFile(bos, (PolicyType) rootPolicyObject);
-               }
-               
-               String xacml = bos.toString();
-               xacml = xacml.replaceAll("<", "&lt");
-               xacml = xacml.replaceAll(">", "&gt");
-               htmlOut.println("<pre>");
-               htmlOut.println(xacml);
-               htmlOut.println("</pre>");
-       }
-
        @Override
        public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) {
                if (LOGGER.isTraceEnabled())
@@ -409,7 +372,7 @@ class HtmlProcessor extends SimpleCallback {
                
                if (policySet.getTarget() == null || 
                        policySet.getTarget().getAnyOf() == null ||
-                       policySet.getTarget().getAnyOf().size() <= 0) {
+                       policySet.getTarget().getAnyOf().isEmpty()) {
                                htmlOut.println("<p>This policy set applies to all requests.</p>");
                } else {        
                        htmlOut.print("<p>");
@@ -494,7 +457,7 @@ class HtmlProcessor extends SimpleCallback {
                
                if (policy.getTarget() == null || 
                        policy.getTarget().getAnyOf() == null ||
-                       policy.getTarget().getAnyOf().size() <= 0) {
+                       policy.getTarget().getAnyOf().isEmpty()) {
                        htmlOut.println("<p>This policy applies to all requests.</p>");
                } else {        
                        htmlOut.print("<p>");
@@ -566,7 +529,7 @@ class HtmlProcessor extends SimpleCallback {
                
                if (rule.getTarget() == null || 
                                rule.getTarget().getAnyOf() == null ||
-                               rule.getTarget().getAnyOf().size() <= 0) {
+                               rule.getTarget().getAnyOf().isEmpty()) {
                                htmlOut.print(" for all requests");
                } else {        
                        List<AnyOfType> anyOf_s = rule.getTarget().getAnyOf();
@@ -690,7 +653,7 @@ class HtmlProcessor extends SimpleCallback {
                
                if (anyOfList != null) {
                        Iterator<AnyOfType> iterAnyOf = anyOfList.iterator();
-                       String targetInHuman = "";
+                       StringBuilder targetInHuman = new StringBuilder();
                        while (iterAnyOf.hasNext()) {
                                AnyOfType anyOf = iterAnyOf.next();
                                List<AllOfType> allOfList = anyOf.getAllOf();
@@ -702,7 +665,7 @@ class HtmlProcessor extends SimpleCallback {
                                                if (matchList != null) {
                                                        Iterator<MatchType> iterMatch = matchList.iterator();
                                                        if (matchList.size() > 1)
-                                                               targetInHuman += "(";
+                                                               targetInHuman.append("(");
                                                        while (iterMatch.hasNext()) {
                                                                MatchType match = iterMatch.next();
                                                                //
@@ -741,7 +704,7 @@ class HtmlProcessor extends SimpleCallback {
                                                                                        attribute.getAttributeId().stringValue());
                                                                        this.attributeIdentifiersMap.put(succintIdentifier,ai);
 
-                                                                       targetInHuman += "<i><a href=\"#" + succintIdentifier + "\">" + succintIdentifier + "</a></i> " + functionName + " ";
+                                                                       targetInHuman.append("<i><a href=\"#" + succintIdentifier + "\">" + succintIdentifier + "</a></i> " + functionName + " ");
 
                                                                        int numAttributes = attribute.getValues().size();
                                                                        int count = 0;
@@ -753,38 +716,39 @@ class HtmlProcessor extends SimpleCallback {
                                                                                        int countValues = 0;
                                                                                        for (Object o : value_s) {
                                                                                                countValues++;
-                                                                                               targetInHuman += " <I>" + o + "</I>";
+                                                                                               targetInHuman.append(" <I>" + o + "</I>");
                                                                                                if (countValues < numValues) {
-                                                                                                       targetInHuman += ", or";
+                                                                                                       targetInHuman.append(", or");
                                                                                                }
                                                                                        }
                                                                                } else {
-                                                                                       targetInHuman += " <I>" + v.getValue() + "</I>";
+                                                                                       targetInHuman.append(" <I>" + v.getValue() + "</I>");
                                                                                        if (count < numAttributes) {
-                                                                                               targetInHuman += ", or ";
+                                                                                               targetInHuman.append(", or ");
                                                                                        }
                                                                                }
                                                                        }
                                                                }
                                                                
                                                                if (iterMatch.hasNext()) {
-                                                                       targetInHuman += " and ";
+                                                                       targetInHuman.append(" and ");
                                                                }
                                                        } // end iterMatch
                                                        if (matchList.size() > 1) {
-                                                               targetInHuman += ")";
+                                                               targetInHuman.append(")");
                                                        }
                                                }
                                                if (iterAllOf.hasNext()) {
-                                                       targetInHuman += " or ";
+                                                       targetInHuman.append(" or ");
                                                }
                                        } // end iterAllOf 
                                }
                                if (iterAnyOf.hasNext()) {
-                                       targetInHuman = "(" + targetInHuman + ")" + " or ";
+                                       targetInHuman = new StringBuilder();
+                                       targetInHuman.append("(" + targetInHuman + ")" + " or ");
                                } else {
                                        if (anyOfList.size() > 1) {
-                                               targetInHuman += ")";
+                                               targetInHuman.append(")");
                                        }
                                }
                        } // end iterAnyOf
@@ -855,21 +819,20 @@ class HtmlProcessor extends SimpleCallback {
                                }
                                
                                List<JAXBElement<?>> exps = apply.getExpression();
-                               if (exps == null || exps.size() == 0)
+                               if (exps == null || exps.isEmpty())
                                        return "";
                                else {
-                                       String forResult = "";
+                                       StringBuilder forResult = new StringBuilder();
                                        for (JAXBElement<?> e : exps) {
                                                Object v = e.getValue();
                                                if (LOGGER.isDebugEnabled()) {
                                                        LOGGER.debug("one-and-only children: " + v);
                                                }
                                                if (v != null) {
-                                                       // C: return stringifyExpression(v, result);
-                                                       forResult += stringifyExpression(v);
+                                                       forResult.append(stringifyExpression(v));
                                                }
                                        }
-                                       return forResult; 
+                                       return forResult.toString()
                                }
                        }
                        
@@ -884,20 +847,20 @@ class HtmlProcessor extends SimpleCallback {
                                if (LOGGER.isDebugEnabled()) {
                                        LOGGER.debug(functionName + " 1 expression: " + numExpr);
                                }
-                               String applySubresult = "";
+                               StringBuilder applySubresult = new StringBuilder();
                                for (JAXBElement<?> e : apply.getExpression()) {
                                        Object v = e.getValue();
                                        if (v != null) {
-                                               applySubresult += this.stringifyExpression(e.getValue());
+                                               applySubresult.append(this.stringifyExpression(e.getValue()));
                                        }
                                }
-                               return " " + removePrimitives(functionName) + " (" + applySubresult + ")";
+                               return " " + removePrimitives(functionName) + " (" + applySubresult.toString() + ")";
                        } else { 
                                // > 1 arguments
                                if (LOGGER.isDebugEnabled()) {
                                        LOGGER.debug(functionName + " > 1 expressions: " + numExpr);
                                }
-                               String applySubresult = "";
+                               StringBuilder applySubresult = new StringBuilder();
                                int exprCount = 0;
                                for (JAXBElement<?> e : apply.getExpression()) {
                                        exprCount++;
@@ -905,20 +868,20 @@ class HtmlProcessor extends SimpleCallback {
                                        if (ev != null) {
                                                if (ev instanceof ApplyType) {
                                                        if (((ApplyType) ev).getFunctionId().contains("one-and-only")) {
-                                                               applySubresult += this.stringifyExpression(e.getValue());
+                                                               applySubresult.append(this.stringifyExpression(e.getValue()));
                                                        } else {
-                                                               applySubresult += "(" + this.stringifyExpression(e.getValue()) + ")";
+                                                               applySubresult.append("(" + this.stringifyExpression(e.getValue()) + ")");
                                                        }
                                                } else {
-                                                       applySubresult += this.stringifyExpression(e.getValue());
+                                                       applySubresult.append(this.stringifyExpression(e.getValue()));
                                                }
                                                
                                                if (exprCount < numExpr) {
-                                                       applySubresult += " " + removePrimitives(functionName) + " ";
+                                                       applySubresult.append(" " + removePrimitives(functionName) + " ");
                                                }
                                        }
                                }
-                               return applySubresult;
+                               return applySubresult.toString();
                        }
                }
                if (expression instanceof AttributeDesignatorType) {
@@ -953,11 +916,11 @@ class HtmlProcessor extends SimpleCallback {
                if (expression instanceof AttributeValueType) {
                        AttributeValueType avt = (AttributeValueType) expression;
                        List<Object> content = avt.getContent();
-                       String value_s = "";
+                       StringBuilder value_s = new StringBuilder();
                        for (Object o: content) {
-                               value_s += " " + o.toString();
+                               value_s.append(" " + o.toString());
                        }
-                       return " " + value_s;
+                       return " " + value_s.toString();
                }
                if (expression instanceof VariableReferenceType) {
                        //