Adding Junits in ONAP-PDP-REST
[policy/engine.git] / ONAP-PDP-REST / src / main / java / org / onap / policy / pdp / rest / api / services / PAPServices.java
index e7216e1..9ab4252 100644 (file)
@@ -2,7 +2,7 @@
  * ============LICENSE_START=======================================================
  * ONAP-PDP-REST
  * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -53,9 +53,9 @@ public class PAPServices {
     
     private int responseCode = 0;
     private static String environment = "DEVL";
-    private static Boolean junit = false;
+    public static Boolean junit = false;
     private static List<String> paps = null;
-    private static final Object papResourceLock = new Object();
+       private static final Object papResourceLock = new Object();
     private String operation = null;
     private String requestMethod = null;
     private String encoding = null; 
@@ -96,6 +96,10 @@ public class PAPServices {
         }
         return result;
     }
+    
+    public static void setPaps(List<String> paps) {
+               PAPServices.paps = paps;
+       }
 
     public int getResponseCode() {
         return responseCode;
@@ -111,7 +115,7 @@ public class PAPServices {
         // This makes it Real-Time to change the list depending on their
         // availability.
         if (paps == null || paps.isEmpty()) {
-            String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty.";
+            String message = XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAPs List is Empty.";
             LOGGER.error(message);
             throw new PolicyException(message);
         }
@@ -215,7 +219,7 @@ public class PAPServices {
             }
             return response;
         } else {
-            response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
+            response = XACMLErrorConstants.ERROR_DATA_ISSUE
                     + "Unable to get valid response from PAP(s) " + paps;
             return response;
         }
@@ -227,112 +231,96 @@ public class PAPServices {
         String [] parameters = {"apiflag=version","policyScope="+policyScope, "filePrefix="+filePrefix, "policyName="+policyName};
         if (paps == null || paps.isEmpty()) {
             LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty.");
-            try {
-                throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"PAPs List is empty.");
-            } catch (Exception e) {
-                LOGGER.error(e.getMessage() + e);
-            }
-            }else {
-                int papsCount = 0;
-                boolean connected = false;
-                while (papsCount < paps.size()) {
-                    try {
-                        String fullURL = getPAP();
-                        if (parameters != null && parameters.length > 0) {
-                            String queryString = "";
-                            for (String p : parameters) {
-                                queryString += "&" + p;
-                            }
-                            fullURL += "?" + queryString.substring(1);
+        }else {
+            int papsCount = 0;
+            boolean connected = false;
+            while (papsCount < paps.size()) {
+                try {
+                    String fullURL = getPAP();
+                    if (parameters != null && parameters.length > 0) {
+                        String queryString = "";
+                        for (String p : parameters) {
+                            queryString += "&" + p;
                         }
-        
-                        URL url = new URL (fullURL);
-                        
-                        //Open the connection
-                        connection = (HttpURLConnection)url.openConnection();
-                        
-                        // Setting Content-Type
-                        connection.setRequestProperty("Content-Type",
-                                "application/json");
-                        
-                        // Adding Authorization
-                        connection.setRequestProperty("Authorization", "Basic "
-                                + getPAPEncoding());
-                        
-                        connection.setRequestProperty("Environment", environment);
-                        connection.setRequestProperty("ClientScope", clientScope);
+                        fullURL += "?" + queryString.substring(1);
+                    }
 
-                        
-                        //set the method and headers
-                        connection.setRequestMethod("GET");
-                        connection.setUseCaches(false);
-                        connection.setInstanceFollowRedirects(false);
-                        connection.setDoOutput(true);
-                        connection.setDoInput(true);
-                        connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString());
-  
-                        //DO the connect
-                        connection.connect();
-        
-                        // If Connected to PAP then break from the loop and continue with the Request 
-                        if (connection.getResponseCode() > 0) {
-                            connected = true;
-                            break;
+                    URL url = new URL (fullURL);
 
-                        } else {
-                            LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error");
-                        }
-                    } catch (Exception e) {
-                        // This means that the PAP is not working 
-                        LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error : " + e);
-                        rotatePAPList();
+                    //Open the connection
+                    connection = (HttpURLConnection)url.openConnection();
+
+                    // Setting Content-Type
+                    connection.setRequestProperty("Content-Type",
+                            "application/json");
+
+                    // Adding Authorization
+                    connection.setRequestProperty("Authorization", "Basic "
+                            + getPAPEncoding());
+
+                    connection.setRequestProperty("Environment", environment);
+                    connection.setRequestProperty("ClientScope", clientScope);
+
+
+                    //set the method and headers
+                    connection.setRequestMethod("GET");
+                    connection.setUseCaches(false);
+                    connection.setInstanceFollowRedirects(false);
+                    connection.setDoOutput(true);
+                    connection.setDoInput(true);
+                    connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString());
+
+                    //DO the connect
+                    connection.connect();
+
+                    // If Connected to PAP then break from the loop and continue with the Request 
+                    if (connection.getResponseCode() > 0) {
+                        connected = true;
+                        break;
+
+                    } else {
+                        LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error");
                     }
-                    papsCount++;
+                } catch (Exception e) {
+                    // This means that the PAP is not working 
+                    LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error : " + e);
+                    rotatePAPList();
                 }
-        
-                if (connected) {
-                    //Read the Response
-                    LOGGER.debug("connected to the PAP : " + getPAP());
-                    LOGGER.debug("--- Response: ---");
-                    Map<String, List<String>> headers = connection.getHeaderFields();
-                    for (String key : headers.keySet()) {
-                        LOGGER.debug("Header :" + key + "  Value: " + headers.get(key));
-                    }
-                    try {
-                        if (connection.getResponseCode() == 200) {
-                            // Check for successful creation of policy
-                            version = connection.getHeaderField("version");
-                            LOGGER.debug("ActiveVersion from the Header: " + version);
-                        } else if (connection.getResponseCode() == 403) {
-                            LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + "response code of the URL is " 
-                                    + connection.getResponseCode() + ". PEP is not Authorized for making this Request!! \n Contact Administrator for this Scope. ");
-                            version = "pe100";
-                        } else if (connection.getResponseCode() == 404) {
-                            LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is " 
-                                        + connection.getResponseCode() + ". This indicates a problem with getting the version from the PAP");
-                            version = "pe300";
-                        } else {
-                            LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "BAD REQUEST:  Error occured while getting the version from the PAP. The request may be incorrect.");
-                        }
-                    } catch (IOException e) {
-                        LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e);
-                        try {
-                            throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"ERROR in connecting to the PAP ", e);
-                        } catch (Exception e1) {
-                            LOGGER.error(e1.getMessage() + e1);
-                        }
-                    } 
-        
-                } else {
-                    LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get valid response from PAP(s) " + paps);
-                    try {
-                        throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"ERROR in connecting to the PAP ");
-                    } catch (Exception e) {
-                        LOGGER.error(e.getMessage() + e);
-                    }
-                }   
+                papsCount++;
             }
-            return version;
+
+            if (connected) {
+                //Read the Response
+                LOGGER.debug("connected to the PAP : " + getPAP());
+                LOGGER.debug("--- Response: ---");
+                Map<String, List<String>> headers = connection.getHeaderFields();
+                for (String key : headers.keySet()) {
+                    LOGGER.debug("Header :" + key + "  Value: " + headers.get(key));
+                }
+                try {
+                    if (connection.getResponseCode() == 200) {
+                        // Check for successful creation of policy
+                        version = connection.getHeaderField("version");
+                        LOGGER.debug("ActiveVersion from the Header: " + version);
+                    } else if (connection.getResponseCode() == 403) {
+                        LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + "response code of the URL is " 
+                                + connection.getResponseCode() + ". PEP is not Authorized for making this Request!! \n Contact Administrator for this Scope. ");
+                        version = "pe100";
+                    } else if (connection.getResponseCode() == 404) {
+                        LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is " 
+                                + connection.getResponseCode() + ". This indicates a problem with getting the version from the PAP");
+                        version = "pe300";
+                    } else {
+                        LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "BAD REQUEST:  Error occured while getting the version from the PAP. The request may be incorrect.");
+                    }
+                } catch (IOException e) {
+                    LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e);
+                } 
+            } else {
+                LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get valid response from PAP(s) " + paps);
+            }   
+        }
+        return version;
     }
     
     private String checkResponse(HttpURLConnection connection, UUID requestID) throws IOException {
@@ -431,11 +419,14 @@ public class PAPServices {
                     + ". PEP is not Authorized for making this Request!! \n Contact Administrator for this Scope. ";
             LOGGER.error(response);
         } else if (connection.getResponseCode() == 404 && connection.getHeaderField("error") != null) {
-            if ("unknownGroupId".equals(connection.getHeaderField("error"))) {
+            if ("UnknownGroup".equals(connection.getHeaderField("error"))) {
                 response = XACMLErrorConstants.ERROR_DATA_ISSUE
                         + connection.getHeaderField("message")
-                        + " Please check the pdpGroup you are requesting to move the policy to.";
+                        + " Please check the pdpGroup you are requesting to push the policy to.";
                 LOGGER.error(response);
+            } else if ("policyNotAvailableForEdit".equals(connection.getHeaderField("error"))) {
+               response = XACMLErrorConstants.ERROR_DATA_ISSUE
+                               + connection.getHeaderField("message");
             }
         } else if (connection.getResponseCode() == 409  && connection.getHeaderField("error") != null) {
             if ("modelExistsDB".equals(connection.getHeaderField("error"))) {
@@ -503,13 +494,16 @@ public class PAPServices {
                 response = XACMLErrorConstants.ERROR_UNKNOWN
                         + "Could not create or update the policy for and unknown reason";
             }else{
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "BAD REQUEST:  Error occured while attempting perform this operation.. the request may be incorrect. " + connection.getHeaderField("error");
+                response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
+                        + "Error occured while attempting perform this operation.. "
+                        + "the request may be incorrect or the PAP is unreachable. " 
+                               + connection.getHeaderField("error");
             }
             LOGGER.error(response);
         } else {
-            response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                    + "BAD REQUEST:  Error occured while attempting perform this operation.. the request may be incorrect.";
+            response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
+                    + "Error occured while attempting perform this operation.. "
+                    + "the request may be incorrect or the PAP is unreachable.";
             LOGGER.error(response);
         }
         return response;
@@ -557,11 +551,11 @@ public class PAPServices {
                                + "\"policyName\": \""+policyName+"\","
                                + "\"clientScope\": \""+clientScope+"\","
                                + "\"pdpGroup\": \""+pdpGroup+"\"}";
-        //String response = null;
-        HttpURLConnection connection = null;
+
+               HttpURLConnection connection = null;
         responseCode = 0;
         if (paps == null || paps.isEmpty()) {
-            String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty.";
+            String message = XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAPs List is Empty.";
             LOGGER.error(message);
             throw new PolicyException(message);
         }