X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fadmin%2FCheckPDP.java;h=643320496aa18bd073e6359163f3e7f2cdbcc139;hb=6a44b2926f33b427904c2f3e7962d0dfc360c482;hp=f983c6650fdc5f2b544d437e57c7ab2060ea1a8c;hpb=073cc188efe9abb4c010cf674e34e2cf46ef1c52;p=policy%2Fengine.git diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java index f983c6650..643320496 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/admin/CheckPDP.java @@ -34,6 +34,7 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Properties; import org.onap.policy.common.logging.flexlogger.FlexLogger; @@ -43,6 +44,18 @@ import org.onap.policy.xacml.api.XACMLErrorConstants; import com.att.research.xacml.util.XACMLProperties; +/** + * What is not good about this class is that once a value has been set for pdpProperties path + * you cannot change it. That may be ok for a highly controlled production environment in which + * nothing changes, but not a very good implementation. + * + * The reset() method has been added to assist with the above problem in order to + * acquire >80% JUnit code coverage. + * + * This static class doesn't really check a PDP, it simply loads a properties file and tried + * to ensure that a valid URL exists for a PDP along with user/password. + * + */ public class CheckPDP { private static Path pdpPath = null; private static Long oldModified = null; @@ -52,6 +65,17 @@ public class CheckPDP { private CheckPDP(){ //default constructor } + + public static Map getPdpMap() { + return pdpMap; + } + + private static void reset() { + pdpPath = null; + oldModified = null; + pdpMap = null; + } + public static boolean validateID(String id) { // ReadFile try { @@ -60,13 +84,15 @@ public class CheckPDP { LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); return false; } + if (pdpMap == null) { + return false; + } // Check ID - return (pdpMap.containsKey(id))? true: false; + return pdpMap.containsKey(id); } private static void readFile(){ String pdpFile = null; - Long newModified = null; try{ pdpFile = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_IDFILE); }catch (Exception e){ @@ -78,19 +104,16 @@ public class CheckPDP { } if (pdpPath == null) { pdpPath = Paths.get(pdpFile); - if (!pdpPath.toFile().exists()) { + if (!pdpPath.toString().endsWith(".properties") || !pdpPath.toFile().exists()) { LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "File doesn't exist in the specified Path : " + pdpPath.toString()); - - } - if (pdpPath.toString().endsWith(".properties")) { - readProps(); - } else { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Not a .properties file " + pdpFile); + CheckPDP.reset(); + return; } + readProps(); } // Check if File is updated recently else { - newModified = pdpPath.toFile().lastModified(); + Long newModified = pdpPath.toFile().lastModified(); if (!newModified.equals(oldModified)) { // File has been updated. readProps(); @@ -100,7 +123,7 @@ public class CheckPDP { @SuppressWarnings({ "unchecked", "rawtypes" }) private static void readProps() { - Properties pdpProp = null; + Properties pdpProp; pdpProp = new Properties(); try { InputStream in = new FileInputStream(pdpPath.toFile()); @@ -115,26 +138,27 @@ public class CheckPDP { for (String propKey : sorted) { loadPDPProperties(propKey, pdpProp); } - if (pdpMap == null || pdpMap.isEmpty()) { - LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs"); - } in.close(); } catch (IOException e) { LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); } + if (pdpMap == null || pdpMap.isEmpty()) { + LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Cannot Proceed without PDP_URLs"); + CheckPDP.reset(); + } } private static void loadPDPProperties(String propKey, Properties pdpProp){ if (propKey.startsWith("PDP_URL")) { - String check_val = pdpProp.getProperty(propKey); - if (check_val == null) { + String checkVal = pdpProp.getProperty(propKey); + if (checkVal == null) { LOGGER.error("Properties file doesn't have the PDP_URL parameter"); } - if (check_val != null && check_val.contains(";")) { - List pdp_default = new ArrayList<>(Arrays.asList(check_val.split("\\s*;\\s*"))); + if (checkVal != null && checkVal.contains(";")) { + List pdpDefault = new ArrayList<>(Arrays.asList(checkVal.split("\\s*;\\s*"))); int pdpCount = 0; - while (pdpCount < pdp_default.size()) { - String pdpVal = pdp_default.get(pdpCount); + while (pdpCount < pdpDefault.size()) { + String pdpVal = pdpDefault.get(pdpCount); readPDPParam(pdpVal); pdpCount++; }