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=3e642d2fcd9a09a8a40918cf0451cfdafe70e968;hp=7ac9ca31082edd84b53a346b88fc8fcf8e243a4d;hpb=0e39499ac2b981ab0acf50f54756b683ffcfee66;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 7ac9ca310..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,20 +44,38 @@ 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; private static HashMap pdpMap = null; private static final Logger LOGGER = FlexLogger.getLogger(CheckPDP.class); + private CheckPDP(){ + //default constructor + } + public static Map getPdpMap() { return pdpMap; } - - public CheckPDP(){ - //default constructor - } + private static void reset() { + pdpPath = null; + oldModified = null; + pdpMap = null; + } + public static boolean validateID(String id) { // ReadFile try { @@ -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){