X-Git-Url: https://gerrit.onap.org/r/gitweb?p=policy%2Fengine.git;a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fadmin%2FCheckPDP.java;h=643320496aa18bd073e6359163f3e7f2cdbcc139;hp=49eb808021c5d5559a3684f120271253088a7c7c;hb=9301fed7c290f52208922f780fdfe4b5a880b5aa;hpb=9df8b88412f6e890320bc446ba1c83a13e99822d 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 49eb80802..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 @@ -44,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; @@ -57,6 +69,12 @@ public class CheckPDP { public static Map getPdpMap() { return pdpMap; } + + private static void reset() { + pdpPath = null; + oldModified = null; + pdpMap = null; + } public static boolean validateID(String id) { // ReadFile @@ -66,6 +84,9 @@ public class CheckPDP { LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); return false; } + if (pdpMap == null) { + return false; + } // Check ID return pdpMap.containsKey(id); } @@ -83,15 +104,12 @@ 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 { @@ -120,13 +138,14 @@ 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){