[POLICY-73] replace openecomp for policy-engine
[policy/engine.git] / ECOMP-PDP-REST / src / main / java / org / openecomp / policy / pdp / rest / api / services / PAPServices.java
diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PAPServices.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PAPServices.java
deleted file mode 100644 (file)
index aea058d..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ECOMP-PDP-REST
- * ================================================================================
- * Copyright (C) 2017 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.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-package org.openecomp.policy.pdp.rest.api.services;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.ObjectInputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Base64;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.commons.io.IOUtils;
-import org.openecomp.policy.api.PolicyException;
-import org.openecomp.policy.common.logging.flexlogger.FlexLogger;
-import org.openecomp.policy.common.logging.flexlogger.Logger;
-import org.openecomp.policy.pdp.rest.config.PDPApiAuth;
-import org.openecomp.policy.rest.XACMLRestProperties;
-import org.openecomp.policy.xacml.api.XACMLErrorConstants;
-import org.openecomp.policy.xacml.std.pap.StdPDPPolicy;
-
-import com.att.research.xacml.util.XACMLProperties;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class PAPServices {
-    private static final String SUCCESS = "success";
-    private static Logger LOGGER = FlexLogger.getLogger(PAPServices.class
-            .getName());
-    
-    private int responseCode = 0;
-    private static String environment = "DEVL";
-    private static Boolean junit = false;
-    private static List<String> paps = null;
-    private static final Object papResourceLock = new Object();
-    private String operation = null;
-    private String requestMethod = null;
-    private String encoding = null; 
-
-    public PAPServices() {
-        environment = PDPApiAuth.getEnvironment();
-        if(paps == null){
-            synchronized (papResourceLock) {
-                String urlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URLS);
-                if(urlList == null){
-                    urlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
-                }
-                paps = Arrays.asList(urlList.split(","));
-            }
-        }
-    }
-    
-    private String getPAPEncoding(){
-        if(encoding  == null){
-            String userID =  XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID);
-            String pass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS);
-            Base64.Encoder encoder = Base64.getEncoder();
-            encoding =  encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8));
-        }
-        return encoding;
-    }
-    
-    private void rotatePAPList(){
-        synchronized (papResourceLock) {
-            Collections.rotate(paps, -1);
-        }
-    }
-    
-    private String getPAP(){
-        String result;
-        synchronized (papResourceLock) {
-            result = paps.get(0);
-        }
-        return result;
-    }
-
-    public int getResponseCode() {
-        return responseCode;
-    }
-
-    public Object callPAP(Object content, String[] parameters, UUID requestID,
-            String clientScope) throws PolicyException {
-        String response = null;
-        HttpURLConnection connection = null;
-        responseCode = 0;
-        // Checking for the available PAPs is done during the first Request and
-        // the List is going to have the connected PAP as first element.
-        // 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.";
-            LOGGER.error(message);
-            throw new PolicyException(message);
-        }
-        int papsCount = 0;
-        boolean connected = false;
-        while (papsCount < paps.size()) {
-            try {
-                String fullURL = getPAP();
-                fullURL = checkParameter(parameters, fullURL);
-                URL url = new URL(fullURL);
-                LOGGER.debug("--- Sending Request to PAP : "+ url.toString() + " ---");
-                // 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(requestMethod);
-                connection.setUseCaches(false);
-                connection.setInstanceFollowRedirects(false);
-                connection.setDoOutput(true);
-                connection.setDoInput(true);
-                // Adding RequestID
-                if (requestID == null) {
-                    requestID = UUID.randomUUID();
-                    LOGGER.info("No request ID provided, sending generated ID: "
-                            + requestID.toString());
-                } else {
-                    LOGGER.info("Using provided request ID: "
-                            + requestID.toString());
-                }
-                connection.setRequestProperty("X-ECOMP-RequestID",
-                        requestID.toString());
-                if (content != null && (content instanceof InputStream)) {
-                    // send current configuration
-                    try (OutputStream os = connection.getOutputStream()) {
-                        int count = IOUtils.copy((InputStream) content, os);
-                        if (LOGGER.isDebugEnabled()) {
-                            LOGGER.debug("copied to output, bytes=" + count);
-                        }
-                    }
-                } else if(content != null){
-                    // the content is an object to be encoded in JSON
-                    ObjectMapper mapper = new ObjectMapper();
-                    if (!junit) {
-                        mapper.writeValue(connection.getOutputStream(),
-                                content);
-                    }
-                }
-                // DO the connect
-                connection.connect();
-                responseCode = connection.getResponseCode();
-                // If Connected to PAP then break from the loop and continue
-                // with the Request
-                if (connection.getResponseCode() > 0 || junit) {
-                    connected = true;
-                    break;
-                } else {
-                    LOGGER.debug(XACMLErrorConstants.ERROR_PERMISSIONS+ "PAP Response Code : "  + connection.getResponseCode());
-                    rotatePAPList();
-                }
-            } catch (Exception e) {
-                // This means that the PAP is not working
-                if (junit) {
-                    connected = true;
-                    break;
-                }
-                LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                        + "PAP connection Error : " + e);
-                rotatePAPList();
-            }
-            papsCount++;
-        }
-        if (connected) {
-            // Read the Response
-            LOGGER.debug("connected to the PAP : " + getPAP());
-            LOGGER.debug("--- Response: ---");
-            if(connection != null){
-               Map<String, List<String>> headers = connection.getHeaderFields();
-               for (String key : headers.keySet()) {
-                       LOGGER.debug("Header :" + key + "  Value: " + headers.get(key));
-               }
-
-               try {
-                       response = checkResponse(connection, requestID);
-               } catch (IOException e) {
-                       LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
-                       response = XACMLErrorConstants.ERROR_SYSTEM_ERROR + e;
-                       throw new PolicyException(
-                                       XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                                       + "Decoding the result ", e);
-               }
-               if (junit) {
-                       response = SUCCESS;
-               }
-            }else{
-               response = XACMLErrorConstants.ERROR_SYSTEM_ERROR + "connection is null";
-            }
-            return response;
-        } else {
-            response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                    + "Unable to get valid response from PAP(s) " + paps;
-            return response;
-        }
-    }
-    
-    public String getActiveVersion(String policyScope, String filePrefix, String policyName, String clientScope, UUID requestID) {
-        String version = null;
-        HttpURLConnection connection = null;
-        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);
-                        }
-        
-                        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);
-
-                        
-                        //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");
-                        }
-                    } catch (Exception e) {
-                        // This means that the PAP is not working 
-                        LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error : " + e);
-                        rotatePAPList();
-                    }
-                    papsCount++;
-                }
-        
-                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);
-                    }
-                }   
-            }
-            return version;
-    }
-    
-    private String checkResponse(HttpURLConnection connection, UUID requestID) throws IOException {
-        String response = null;
-        if (responseCode == 200 || junit) {         
-            // Check for successful creation of policy
-            String isSuccess = null;
-            if (!junit) { // is this a junit test?
-                isSuccess = connection.getHeaderField("successMapKey");
-                operation = connection.getHeaderField("operation");
-            } else {
-                isSuccess = SUCCESS;
-            }
-            if (SUCCESS.equals(isSuccess)) {
-                if ("update".equals(operation)) {
-                    response = "Transaction ID: " + requestID + " --Policy with the name "+ connection.getHeaderField("policyName")
-                            + " was successfully updated. ";
-                    if (connection.getHeaderField("safetyChecker")!=null) {
-                       response = response 
-                                               + "\n\nPolicy Safety Checker Warning: This closedLoopControlName "
-                                               + "is potentially in conflict with " + connection.getHeaderField("conflictCLName") 
-                                               +  " that already exists." + " See detailed information on ClosedLoop Pairs below: "
-                                               +"\n\n"+connection.getHeaderField("safetyChecker");
-                    }
-                } else if ("create".equals(operation)) {
-                       response = "Transaction ID: " + requestID + " --Policy with the name "+ connection.getHeaderField("policyName")
-                            + " was successfully created.";
-                    if (connection.getHeaderField("safetyChecker")!=null) {
-                       response = response 
-                                               + "\n\nPolicy Safety Checker Warning: This closedLoopControlName "
-                                               + "is potentially in conflict with " + connection.getHeaderField("conflictCLName") 
-                                               +  " that already exists. " + "See detailed information on ClosedLoop Pairs below: "
-                                               +"\n\n"+connection.getHeaderField("safetyChecker");
-                    }
-                } else if ("delete".equals(operation)) {
-                    response = "Transaction ID: " + requestID + " --The policy was successfully deleted.";
-                } else if ("import".equals(operation)) {
-                    response = "Transaction ID: " + requestID + " --The policy engine import for "+ connection.getHeaderField("service")
-                            + " was successfull.";
-                } else if ("createDictionary".equals(operation)) {
-                    response = "Transaction ID: " + requestID + " --Dictionary Item was added successfully!";
-                } else if ("updateDictionary".equals(operation)) {
-                    response = "Transaction ID: " + requestID + " --Dictionary Item was updated successfully!";
-                } else if ("getDictionary".equals(operation)) {
-                    String json =  null;
-                    try {
-                        
-                        //get the json string from the response 
-                        InputStream is = connection.getInputStream();
-                            
-                        // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file)
-                        java.util.Scanner scanner = new java.util.Scanner(is);
-                        scanner.useDelimiter("\\A");
-                        json =  scanner.hasNext() ? scanner.next() : "";
-                        scanner.close();
-                        
-                    } catch (IOException e1) {
-                        LOGGER.error(e1.getMessage() + e1);
-                    }
-                    response = "Transaction ID: " + requestID + " --Dictionary Items Retrieved " + json;
-                } else if ("getMetrics".equals(operation)) {
-                       response = "Transaction ID: " + requestID + " --Policy Metrics Retrieved " + connection.getHeaderField("metrics");
-                }
-                LOGGER.info(response);
-            } else {
-                String message = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Operation unsuccessful, unable to complete the request!";
-                LOGGER.error(message);
-                response = message;
-            }
-        } else if (connection.getResponseCode() == 202) {
-            if ("delete".equalsIgnoreCase(connection.getHeaderField("operation")) &&
-                    "true".equals(connection.getHeaderField("lockdown"))) {
-                response = "Transaction ID: "
-                        + requestID
-                        + " --Policies are locked down, please try again later.";
-                LOGGER.warn(response);
-            }
-        } else if (connection.getResponseCode() == 204) {
-            if ("push".equals(connection.getHeaderField("operation"))) {
-                response = "Transaction ID: "
-                        + requestID
-                        + " --Policy '"
-                        + connection.getHeaderField("policyId")
-                        + "' was successfully pushed to the PDP group '"
-                        + connection.getHeaderField("groupId") + "'.";
-                LOGGER.info(response);
-            }
-        } else if (connection.getResponseCode() == 400  && connection.getHeaderField("error") != null) {
-               response = connection.getHeaderField("error");
-            LOGGER.error(response);
-        } else if (connection.getResponseCode() == 403) {
-            response = 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. ";
-            LOGGER.error(response);
-        } else if (connection.getResponseCode() == 404 && connection.getHeaderField("error") != null) {
-            if ("unknownGroupId".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + connection.getHeaderField("message")
-                        + " Please check the pdpGroup you are requesting to move the policy to.";
-                LOGGER.error(response);
-            }
-        } else if (connection.getResponseCode() == 409  && connection.getHeaderField("error") != null) {
-            if ("modelExistsDB".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Import Value Exist Error:  The import value "
-                        + connection.getHeaderField("service")
-                        + " already exist on the PAP. "
-                        + "Please create a new import value.";
-            } else if ("policyExists".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Policy Exist Error:  The Policy "
-                        + connection.getHeaderField("policyName")
-                        + " already exist on the PAP. "
-                        + "Please create a new policy or use the update API to modify the existing one.";
-            } else if ("dictionaryItemExists".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Dictionary Item Exist Error:  The Dictionary Item already exist in the database. "
-                        + "Please create a new Dictionary Item or use the update API to modify the existing one.";
-            } else if ("duplicateGroup".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Group Policy Scope List Exist Error:  The Group Policy Scope List for this Dictionary Item already exist in the database. "
-                        + "Duplicate Group Policy Scope Lists for multiple groupNames is not allowed. "
-                        + "Please review the request and verify that the groupPolicyScopeListData1 is unique compared to existing groups.";
-            } else if("PolicyInPDP".equals(connection.getHeaderField("error"))){
-               response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Policy Exist Error:  The Policy trying to be deleted is active in PDP. "
-                        + "Active PDP Polcies are not allowed to be deleted from PAP. "
-                        + "Please First remove the policy from PDP in order to successfully delete the Policy from PAP.";
-            }
-            LOGGER.error(response);
-        } else if (connection.getResponseCode() == 500 && connection.getHeaderField("error") != null) {
-            if ("jpautils".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                        + "Could not create JPAUtils instance on the PAP";
-            } else if ("deleteDB".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                        + "Failed to delete Policy from database.";
-            } else if ("deleteFile".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Cannot delete the policy file";
-            } else if ("groupUpdate".equals(connection.getHeaderField("error"))) {
-                response = connection.getHeaderField("message");
-            } else if ("unknown".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_UNKNOWN
-                        + "Failed to delete the policy for an unknown reason.  Check the file system and other logs for further information.";
-            } else if ("deleteConfig".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Cannot delete the configuration or action body file in specified location.";
-            } else if ("missing".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Failed to create value in database because service does match a value in file";
-            } else if ("importDB".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Database errors during policy engine import";
-            } else if ("policyCopyError".equals(connection.getHeaderField("error"))) {
-                response = XACMLErrorConstants.ERROR_PROCESS_FLOW
-                        + connection.getHeaderField("message");
-            } else if ("addGroupError".equals(connection.getHeaderField("error"))) {
-                response = connection.getHeaderField("message");
-            } else if ("validation".equals(connection.getHeaderField("error"))){
-                response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                        + "Validation errors during policy engine " + connection.getHeaderField("operation") +
-                        " for " + connection.getHeaderField("service");
-            } else if ("error".equals(connection.getHeaderField("error"))) {
-                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");
-            }
-            LOGGER.error(response);
-        } else {
-            response = XACMLErrorConstants.ERROR_DATA_ISSUE
-                    + "BAD REQUEST:  Error occured while attempting perform this operation.. the request may be incorrect.";
-            LOGGER.error(response);
-        }
-        return response;
-    }
-
-    private String checkParameter(String[] parameters, String fullURL) {
-        if (parameters != null && parameters.length > 0) {
-            String queryString = "";
-            for (String p : parameters) {
-                queryString += "&" + p;
-                if (p.equalsIgnoreCase("operation=post")) {
-                    requestMethod = "POST";
-                } else if (p.equalsIgnoreCase("operation=delete")) {
-                    requestMethod = "DELETE";
-                    operation = "delete";
-                } else if (p.equalsIgnoreCase("operation=get")) {
-                    requestMethod = "GET";
-                    operation = "get";
-                } else if (p.equalsIgnoreCase("operation=put")||p.equalsIgnoreCase("operation=create")
-                       ||p.equalsIgnoreCase("operation=update")||p.equalsIgnoreCase("operation=createDictionary")){
-                       requestMethod = "PUT";
-                    if (p.equalsIgnoreCase("operation=create")) {
-                        operation = "create";
-                    } else if (p.equalsIgnoreCase("operation=update")) {
-                        operation = "update";
-                    } else if (p.equalsIgnoreCase("operation=createDictionary")){
-                                               operation = "createDictionary";
-                                       }
-                }else if (p.equalsIgnoreCase("importService=MICROSERVICE")||p.equalsIgnoreCase("importService=BRMSPARAM")){
-                       requestMethod = "PUT";
-                }
-            }
-            fullURL += "?" + queryString.substring(1);
-        }
-        return fullURL;
-    }
-
-       public StdPDPPolicy pushPolicy(String policyScope, String filePrefix,
-                       String policyName, String clientScope, String pdpGroup,
-                       UUID requestID) throws PolicyException {
-               String json = "{ "
-                               + "\"apiflag\": \"api\","
-                               + "\"policyScope\": \""+policyScope+"\","
-                               + "\"filePrefix\": \""+filePrefix+"\","
-                               + "\"policyName\": \""+policyName+"\","
-                               + "\"clientScope\": \""+clientScope+"\","
-                               + "\"pdpGroup\": \""+pdpGroup+"\"}";
-        //String response = null;
-        HttpURLConnection connection = null;
-        responseCode = 0;
-        if (paps == null || paps.isEmpty()) {
-            String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty.";
-            LOGGER.error(message);
-            throw new PolicyException(message);
-        }
-        int papsCount = 0;
-        boolean connected = false;
-        while (papsCount < paps.size()) {
-            try {
-               String fullURL = getPAP();
-                fullURL = (fullURL.endsWith("/"))? fullURL+"ecomp/pushPolicy" : fullURL+"/ecomp/pushPolicy";
-                URL url = new URL(fullURL);
-                LOGGER.debug("--- Sending Request to PAP : "+ url.toString() + " ---");
-                // 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("POST");
-                connection.setUseCaches(false);
-                connection.setInstanceFollowRedirects(false);
-                connection.setDoOutput(true);
-                // Adding RequestID
-                if (requestID == null) {
-                    requestID = UUID.randomUUID();
-                    LOGGER.info("No request ID provided, sending generated ID: "
-                            + requestID.toString());
-                } else {
-                    LOGGER.info("Using provided request ID: "
-                            + requestID.toString());
-                }
-                connection.setRequestProperty("X-ECOMP-RequestID",
-                        requestID.toString());
-                // DO the connect
-                try (OutputStream os = connection.getOutputStream()) {
-                    int count = IOUtils.copy(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)), os);
-                    if (LOGGER.isDebugEnabled()) {
-                        LOGGER.debug("copied to output, bytes=" + count);
-                    }
-                }
-                connection.connect();
-                responseCode = connection.getResponseCode();
-                // If Connected to PAP then break from the loop and continue
-                // with the Request
-                if (connection.getResponseCode() > 0 || junit) {
-                    connected = true;
-                    break;
-                } else {
-                    LOGGER.debug(XACMLErrorConstants.ERROR_PERMISSIONS+ "PAP Response Code : "  + connection.getResponseCode());
-                    rotatePAPList();
-                }
-            } catch (Exception e) {
-                // This means that the PAP is not working
-                if (junit) {
-                    connected = true;
-                    break;
-                }
-                LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                        + "PAP connection Error : " + e);
-                rotatePAPList();
-            }
-            papsCount++;
-        }
-        if (connected) {
-            // Read the Response
-            LOGGER.debug("connected to the PAP : " + getPAP());
-            LOGGER.debug("--- Response: ---");
-            if(connection != null){
-               Map<String, List<String>> headers = connection.getHeaderFields();
-                for (String key : headers.keySet()) {
-                    LOGGER.debug("Header :" + key + "  Value: " + headers.get(key));
-                }
-                try {
-                    if(responseCode==202){
-                       StdPDPPolicy policy = (StdPDPPolicy) new ObjectInputStream(connection.getInputStream()).readObject();
-                       return policy;
-                    }
-                } catch (IOException | ClassNotFoundException e) {
-                    LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e);
-                    throw new PolicyException(
-                            XACMLErrorConstants.ERROR_SYSTEM_ERROR
-                                    + "Decoding the result ", e);
-                }      
-            }
-            return null;
-        } else {
-            return null;
-        }
-    }
-}