X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=ONAP-XACML%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fxacml%2Fstd%2Fpap%2FStdPDPGroup.java;h=daa3764d8dfcd178e235d3ab4ad5aff358051991;hp=d406a5498aaef5a711f533536ba563c023653884;hb=9bad71c7150ea6f94b2a08b68f356b4ee96c3d66;hpb=57c4294518a1d2a42c645f65edbdf0517d128ed6 diff --git a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPDPGroup.java b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPDPGroup.java index d406a5498..daa3764d8 100644 --- a/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPDPGroup.java +++ b/ONAP-XACML/src/main/java/org/onap/policy/xacml/std/pap/StdPDPGroup.java @@ -59,13 +59,21 @@ import org.onap.policy.xacml.api.pap.OnapPDP; import org.onap.policy.xacml.api.pap.OnapPDPGroup; import org.onap.policy.xacml.std.pap.StdPDPItemSetChangeNotifier.StdItemSetChangeListener; -@EqualsAndHashCode(callSuper=false) +@EqualsAndHashCode(callSuper = false) @ToString public class StdPDPGroup extends StdPDPItemSetChangeNotifier implements OnapPDPGroup, StdItemSetChangeListener, Comparable, Serializable { private static final long serialVersionUID = 1L; - private static final String groupNotExist = "Group directory does NOT exist"; + private static final String MSG_GROUPNOTEXIST = "Group directory does NOT exist"; + private static final String MSG_LOADFAILURE = "Failed to load group policy properties file: "; + private static final String STR_APPEND_NAME = ".name"; + private static final String STR_APPEND_DESCRIPTION = ".description"; + private static final String STR_APPEND_PDPS = ".pdps"; + private static final String STR_CLASS = "StdPDPGroup"; + private static final String PROPS_POLICY = "xacml.policy.properties"; + private static final String PROPS_PIP = "xacml.pip.properties"; + private static Log logger = LogFactory.getLog(StdPDPGroup.class); private String id; @@ -174,11 +182,11 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // for (Object key : properties.keySet()) { if (key.toString().startsWith(this.id + ".")) { - if (key.toString().endsWith(".name")) { + if (key.toString().endsWith(STR_APPEND_NAME)) { this.name = properties.getProperty(key.toString()); - } else if (key.toString().endsWith(".description")) { + } else if (key.toString().endsWith(STR_APPEND_DESCRIPTION)) { this.description = properties.getProperty(key.toString()); - } else if (key.toString().endsWith(".pdps")) { + } else if (key.toString().endsWith(STR_APPEND_PDPS)) { String pdpList = properties.getProperty(key.toString()); if (pdpList != null && pdpList.length() > 0) { for (String pdpId : Splitter.on(',').omitEmptyStrings().trimResults().split(pdpList)) { @@ -197,25 +205,25 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // // Validate our directory // - if (Files.notExists(directory)) { + if (! directory.toFile().exists()) { logger.warn("Group directory does NOT exist: " + directory.toString()); try { Files.createDirectory(directory); - this.status.addLoadWarning(groupNotExist); + this.status.addLoadWarning(MSG_GROUPNOTEXIST); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", groupNotExist); - this.status.addLoadError(groupNotExist); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, MSG_GROUPNOTEXIST); + this.status.addLoadError(MSG_GROUPNOTEXIST); this.status.setStatus(PDPGroupStatus.Status.LOAD_ERRORS); } } // // Parse policies // - this.loadPolicies(Paths.get(directory.toString(), "xacml.policy.properties")); + this.loadPolicies(Paths.get(directory.toString(), PROPS_POLICY)); // // Parse pip config // - this.loadPIPConfig(Paths.get(directory.toString(), "xacml.pip.properties")); + this.loadPIPConfig(Paths.get(directory.toString(), PROPS_PIP)); } /** @@ -253,10 +261,10 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // this.readPolicyProperties(directory, policyProperties); } catch (IOException e) { - logger.warn("Failed to load group policy properties file: " + file, e); + logger.warn(MSG_LOADFAILURE + file, e); this.status.addLoadError("Not policy properties defined"); this.status.setStatus(Status.LOAD_ERRORS); - throw new PAPException("Failed to load group policy properties file: " + file); + throw new PAPException(MSG_LOADFAILURE + file); } } } @@ -313,7 +321,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier logger.warn("Failed to open group PIP Config properties file: " + file, e); this.status.addLoadError("Not PIP config properties defined"); this.status.setStatus(Status.LOAD_ERRORS); - throw new PAPException("Failed to load group policy properties file: " + file); + throw new PAPException(MSG_LOADFAILURE + file); } } @@ -500,7 +508,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier for (PDPPolicy policy : this.policies) { // for all policies need to tell PDP the "name", which is the base name for the file id if (policy.getName() != null) { - properties.setProperty(policy.getId() + ".name", policy.getName()); + properties.setProperty(policy.getId() + STR_APPEND_NAME, policy.getName()); } // put the policy on the correct list if (policy.isRoot()) { @@ -550,7 +558,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier try { Files.delete(tempFile); } catch (Exception ee) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, ee, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, ee, STR_CLASS, "Policy was invalid, could NOT delete it."); } throw new PAPException("Policy is invalid"); @@ -568,7 +576,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // return tempRootPolicy; } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "StdPDPGroup", "Failed to publishPolicy"); + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, STR_CLASS, "Failed to publishPolicy"); } return null; } @@ -586,69 +594,18 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier * @throws PAPException PAPException */ public void copyPolicyToFile(String id, InputStream policy) throws PAPException { - try { - // - // Copy the policy over - // - long num; - Path policyFilePath = Paths.get(this.directory.toAbsolutePath().toString(), id); - - Path policyFile; - if (Files.exists(policyFilePath)) { - policyFile = policyFilePath; - } else { - policyFile = Files.createFile(policyFilePath); - } - - try (OutputStream os = Files.newOutputStream(policyFile)) { - num = ByteStreams.copy(policy, os); - } - - logger.info("Copied " + num + " bytes for policy " + name); - - for (PDPPolicy p : policies) { - if (p.getId().equals(id)) { - // we just re-copied/refreshed/updated the policy file for a policy that already exists in this - // group - logger.info("Policy '" + id + "' already exists in group '" + getId() + "'"); - return; - } - } - - // policy is new to this group - StdPDPPolicy tempRootPolicy = new StdPDPPolicy(id, true, name, policyFile.toUri()); - if (!tempRootPolicy.isValid()) { - try { - Files.delete(policyFile); - } catch (Exception ee) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, ee, "StdPDPGroup", - "Policy was invalid, could NOT delete it."); - } - throw new PAPException("Policy is invalid"); - } - // - // Add it in - // - this.policies.add(tempRootPolicy); - // - // We are changed - // - this.firePDPGroupChanged(this); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", "Failed to copyPolicyToFile"); - throw new PAPException("Failed to copy policy to file: " + e); - } + copyPolicyToFile(id, this.name, policy); } /** * Policy Engine API Copy one policy file into the Group's directory but do not change the configuration. * * @param id String - * @param name String + * @param fileName String * @param policy InputStream * @throws PAPException PAPException */ - public void copyPolicyToFile(String id, String name, InputStream policy) throws PAPException { + public void copyPolicyToFile(String id, String fileName, InputStream policy) throws PAPException { try { // // Copy the policy over @@ -657,7 +614,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier Path policyFilePath = Paths.get(this.directory.toAbsolutePath().toString(), id); Path policyFile; - if (Files.exists(policyFilePath)) { + if (policyFilePath.toFile().exists()) { policyFile = policyFilePath; } else { policyFile = Files.createFile(policyFilePath); @@ -667,7 +624,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier num = ByteStreams.copy(policy, os); } - logger.info("Copied " + num + " bytes for policy " + name); + logger.info("Copied " + num + " bytes for policy " + fileName); for (PDPPolicy p : policies) { if (p.getId().equals(id)) { // we just re-copied/refreshed/updated the policy file for a policy that already exists in this @@ -678,12 +635,12 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier } // policy is new to this group - StdPDPPolicy tempRootPolicy = new StdPDPPolicy(id, true, name, policyFile.toUri()); + StdPDPPolicy tempRootPolicy = new StdPDPPolicy(id, true, fileName, policyFile.toUri()); if (!tempRootPolicy.isValid()) { try { Files.delete(policyFile); } catch (Exception ee) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, ee, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, ee, STR_CLASS, "Policy was invalid, could NOT delete it."); } throw new PAPException("Policy is invalid"); @@ -698,7 +655,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier this.firePDPGroupChanged(this); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", "Failed to copyPolicyToFile"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to copyPolicyToFile"); throw new PAPException("Failed to copy policy to file: " + e); } } @@ -730,7 +687,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier this.firePDPGroupChanged(this); return true; } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", "Failed to delete policy"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to delete policy"); } return false; } @@ -762,7 +719,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier this.firePDPGroupChanged(this); return true; } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", "Failed to delete policy " + policy); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to delete policy " + policy); } return false; } @@ -817,14 +774,14 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // Validate our directory // boolean fire = false; - if (Files.notExists(directory)) { + if (! directory.toFile().exists()) { logger.warn("Group directory does NOT exist: " + directory.toString()); try { Files.createDirectory(directory); fire = true; this.status.addLoadWarning("Created missing group directory"); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to create missing Group directory."); this.status.addLoadError("Failed to create missing Group directory."); this.status.setStatus(PDPGroupStatus.Status.LOAD_ERRORS); @@ -833,14 +790,14 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // // Validate our PIP config file // - Path pipPropertiesFile = Paths.get(directory.toString(), "xacml.pip.properties"); - if (Files.notExists(pipPropertiesFile)) { + Path pipPropertiesFile = Paths.get(directory.toString(), PROPS_PIP); + if (! pipPropertiesFile.toFile().exists()) { try { Files.createFile(pipPropertiesFile); fire = true; this.status.addLoadWarning("Created missing PIP properties file"); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to create missing PIP properties file"); this.status.addLoadError("Failed to create missing PIP properties file"); this.status.setStatus(PDPGroupStatus.Status.LOAD_ERRORS); @@ -849,14 +806,14 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // // Valid our policy properties file // - Path policyPropertiesFile = Paths.get(directory.toString(), "xacml.policy.properties"); - if (Files.notExists(policyPropertiesFile)) { + Path policyPropertiesFile = Paths.get(directory.toString(), PROPS_POLICY); + if (! policyPropertiesFile.toFile().exists()) { try { Files.createFile(policyPropertiesFile); fire = true; this.status.addLoadWarning("Created missing Policy properties file"); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to create missing Policy properties file"); this.status.addLoadError("Failed to create missing Policy properties file"); this.status.setStatus(PDPGroupStatus.Status.LOAD_ERRORS); @@ -910,7 +867,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier try { policy = new StdPDPPolicy(id, isRoot, policyPath.toUri(), properties); } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Failed to create policy object"); policy = null; } @@ -957,7 +914,7 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier try { saveGroupConfiguration(); } catch (PAPException | IOException e) { - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, "StdPDPGroup", + PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e, STR_CLASS, "Unable to save group configuration change"); // don't notify other things of change if we cannot save it??? return; @@ -1019,13 +976,13 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // save info about each policy for (PDPPolicy policy : this.policies) { - policyProperties.put(policy.getId() + ".name", policy.getName()); + policyProperties.put(policy.getId() + STR_APPEND_NAME, policy.getName()); } // // Now we can save the file // - Path file = Paths.get(this.directory.toString(), "xacml.policy.properties"); + Path file = Paths.get(this.directory.toString(), PROPS_POLICY); try (OutputStream os = Files.newOutputStream(file)) { policyProperties.store(os, ""); } catch (Exception e) { @@ -1039,11 +996,11 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier // // Now we can save the file // - file = Paths.get(this.directory.toString(), "xacml.pip.properties"); + file = Paths.get(this.directory.toString(), PROPS_PIP); try (OutputStream os = Files.newOutputStream(file)) { pipProperties.store(os, ""); } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "StdPDPGroup", "Group PIP Config save failed"); + PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, STR_CLASS, "Group PIP Config save failed"); throw new PAPException("Failed to save pip properties file '" + file + "'"); } } @@ -1077,8 +1034,8 @@ public class StdPDPGroup extends StdPDPItemSetChangeNotifier props.setProperty("AAF.classname", "org.onap.policy.xacml.std.pip.engines.aaf.AAFEngine"); props.setProperty(XACMLProperties.PROP_PIP_ENGINES, "AAF"); // read from PIP properties file. - Path file = Paths.get(StdEngine.pipPropertyFile); - if (!Files.notExists(file)) { + Path file = Paths.get(StdEngine.PIP_PROPERTY_FILE); + if (file.toFile().exists()) { InputStream in; Properties prop = new Properties(); try {