Remove checkstyle warnings in policy/engine
[policy/engine.git] / ONAP-PDP / src / main / java / org / onap / policy / xacml / action / FindAction.java
index 5fde0ad..c256626 100644 (file)
@@ -2,14 +2,14 @@
  * ============LICENSE_START=======================================================
  * ONAP-PDP
  * ================================================================================
- * 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.
  * 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.
  * limitations under the License.
  * ============LICENSE_END=========================================================
  */
+
 package org.onap.policy.xacml.action;
 
+import com.att.research.xacml.api.Advice;
+import com.att.research.xacml.api.Attribute;
+import com.att.research.xacml.api.AttributeAssignment;
+import com.att.research.xacml.api.AttributeValue;
+import com.att.research.xacml.api.Identifier;
+import com.att.research.xacml.api.Obligation;
+import com.att.research.xacml.api.Request;
+import com.att.research.xacml.api.RequestAttributes;
+import com.att.research.xacml.api.Result;
+import com.att.research.xacml.std.IdentifierImpl;
+import com.att.research.xacml.std.StdAdvice;
+import com.att.research.xacml.std.StdAttributeAssignment;
+import com.att.research.xacml.std.StdAttributeValue;
+import com.att.research.xacml.std.StdMutableResponse;
+import com.att.research.xacml.std.StdMutableResult;
+import com.att.research.xacml.std.StdObligation;
+import com.att.research.xacml.util.XACMLProperties;
+
 import java.io.BufferedReader;
 import java.io.InputStreamReader;
 import java.net.URL;
@@ -43,329 +62,313 @@ import org.onap.policy.common.logging.flexlogger.FlexLogger;
 import org.onap.policy.common.logging.flexlogger.Logger;
 import org.onap.policy.rest.XACMLRestProperties;
 
-import com.att.research.xacml.api.Advice;
-import com.att.research.xacml.api.Attribute;
-import com.att.research.xacml.api.AttributeAssignment;
-import com.att.research.xacml.api.AttributeValue;
-import com.att.research.xacml.api.Identifier;
-import com.att.research.xacml.api.Obligation;
-import com.att.research.xacml.api.Request;
-import com.att.research.xacml.api.RequestAttributes;
-import com.att.research.xacml.api.Result;
-import com.att.research.xacml.std.IdentifierImpl;
-import com.att.research.xacml.std.StdAdvice;
-import com.att.research.xacml.std.StdAttributeAssignment;
-import com.att.research.xacml.std.StdAttributeValue;
-import com.att.research.xacml.std.StdMutableResponse;
-import com.att.research.xacml.std.StdMutableResult;
-import com.att.research.xacml.std.StdObligation;
-import com.att.research.xacml.util.XACMLProperties;
-
 @SuppressWarnings("deprecation")
 public class FindAction {
-       private Logger LOGGER = FlexLogger.getLogger(this.getClass());
-       private Boolean changeIt = false;
-       private String configURL = null;
-       private StdMutableResponse newResponse = new StdMutableResponse();
-       private StdMutableResult addResult = new StdMutableResult();
+    private Logger logger = FlexLogger.getLogger(this.getClass());
+    private Boolean changeIt = false;
+    private String configUrl = null;
+    private StdMutableResponse newResponse = new StdMutableResponse();
+    private StdMutableResult addResult = new StdMutableResult();
 
-       public StdMutableResponse run(StdMutableResponse stdResponse, Request pepRequest) {
-               int count = 0;
-               boolean config = false;
-               boolean decide = false; 
-               Collection<RequestAttributes> requestAttributes =  pepRequest.getRequestAttributes();
-               for(RequestAttributes requestAttribute : requestAttributes){
-                       Collection<Attribute> attributes = requestAttribute.getAttributes();
-                       for(Attribute attribute : attributes){
-                               if(attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:action:action-id")){
-                                       for(AttributeValue<?> attributeValue : attribute.getValues()){
-                                               if(attributeValue.getValue().toString().equalsIgnoreCase("ACCESS")){
-                                                       count++;
-                                               }
-                                               if(attributeValue.getValue().toString().equalsIgnoreCase("DECIDE")){
-                                                       decide = true;
-                                               }
-                                       }
-                               }
-                               if(attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:resource:resource-id")){
-                                       for(AttributeValue<?> attributeValue : attribute.getValues()){
-                                               if(attributeValue.getValue().toString().equalsIgnoreCase("Config")){
-                                                       count++;
-                                               }
-                                       }
-                               }
-                       }
-               }
-               if(count==2){
-                       config = true;
-               }
-               if(!config){
-                       search(stdResponse);
-               }
-               addResults(stdResponse, config , decide);
-               LOGGER.info("Original Result is " + stdResponse.toString());
-               LOGGER.info("Generated Result is " + addResult.toString());
-               return newResponse;
-       }
+    /**
+     * Generate {@link StdMutableResponse} based on input request.
+     *
+     * @param stdResponse the response
+     * @param pepRequest the request
+     * @return {@link StdMutableResponse}
+     */
+    public StdMutableResponse run(final StdMutableResponse stdResponse, final Request pepRequest) {
+        int count = 0;
+        boolean config = false;
+        boolean decide = false;
+        final Collection<RequestAttributes> requestAttributes = pepRequest.getRequestAttributes();
+        for (final RequestAttributes requestAttribute : requestAttributes) {
+            final Collection<Attribute> attributes = requestAttribute.getAttributes();
+            for (final Attribute attribute : attributes) {
+                if (attribute.getAttributeId().stringValue().equals("urn:oasis:names:tc:xacml:1.0:action:action-id")) {
+                    for (final AttributeValue<?> attributeValue : attribute.getValues()) {
+                        if (attributeValue.getValue().toString().equalsIgnoreCase("ACCESS")) {
+                            count++;
+                        }
+                        if (attributeValue.getValue().toString().equalsIgnoreCase("DECIDE")) {
+                            decide = true;
+                        }
+                    }
+                }
+                if (attribute.getAttributeId().stringValue()
+                        .equals("urn:oasis:names:tc:xacml:1.0:resource:resource-id")) {
+                    for (final AttributeValue<?> attributeValue : attribute.getValues()) {
+                        if (attributeValue.getValue().toString().equalsIgnoreCase("Config")) {
+                            count++;
+                        }
+                    }
+                }
+            }
+        }
+        if (count == 2) {
+            config = true;
+        }
+        if (!config) {
+            search(stdResponse);
+        }
+        addResults(stdResponse, config, decide);
+        logger.info("Original Result is " + stdResponse.toString());
+        logger.info("Generated Result is " + addResult.toString());
+        return newResponse;
+    }
 
-       private Collection<Obligation> obligations = new ArrayList<>();
-       private Map<String, String> matchValues = new HashMap<>();
-       private Map<String, String> headers = new HashMap<>();
-       private boolean header = false;
+    private Collection<Obligation> obligations = new ArrayList<>();
+    private Map<String, String> matchValues = new HashMap<>();
+    private Map<String, String> headers = new HashMap<>();
+    private boolean header = false;
 
-       private void search(StdMutableResponse stdResponse) {
-               for (Result result : stdResponse.getResults()) {
-                       if (!result.getObligations().isEmpty()) {
-                               System.out.println("Obligation Received");
-                               // Is there any action that PDP needs to take
-                               for (Obligation obligation : result.getObligations()) {
-                                       int count = 0, uri = 0, PEP = 0;
-                                       header = false;
-                                       changeIt = false;
-                                       Collection<AttributeAssignment> afterRemoveAssignments = new ArrayList<>();
-                                       Identifier oblId = new IdentifierImpl(obligation.getId().stringValue());
-                                       StdAttributeAssignment attributeURI = null;
-                                       for (AttributeAssignment attribute : obligation.getAttributeAssignments()) {
-                                               matchValues.put(attribute.getAttributeId().stringValue(), attribute.getAttributeValue().getValue().toString());
-                                               if (attribute.getAttributeId().stringValue().equalsIgnoreCase("performer")) {
-                                                       if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PEPACTION")) {
-                                                               PEP++;
-                                                       } else if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PDPACTION")) {
-                                                               count++;
-                                                       }
-                                               } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("URL")) {
-                                                       uri++;
-                                                       if (uri == 1) {
-                                                               configURL = attribute.getAttributeValue().getValue().toString();
-                                                               attributeURI = new StdAttributeAssignment(attribute);
-                                                       }
-                                               } else if (attribute.getAttributeId().stringValue().startsWith("headers")) {
-                                                       LOGGER.info("Headers are : "+ attribute.getAttributeValue().getValue().toString());
-                                                       header = true;
-                                                       headers.put(attribute.getAttributeId().stringValue().replaceFirst("(headers).", ""),
-                                                                       attribute.getAttributeValue().getValue().toString());
-                                                       afterRemoveAssignments.add(attribute);
-                                               } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("body")) { 
-                                                       String papPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
-                                                       papPath= papPath.replace("/pap", "");
-                                                       matchValues.put("body",attribute.getAttributeValue().getValue().toString().replace("$URL", papPath));
-                                               }else {
-                                                       StdAttributeAssignment attributeObligation = new StdAttributeAssignment(attribute);
-                                                       afterRemoveAssignments.add(attributeObligation);
-                                               }
-                                       }
-                                       if (count == 1 && uri == 1 && PEP == 0) {
-                                               // Remove Obligation and add Advice
-                                               changeIt = true;
-                                               takeAction(stdResponse, oblId, afterRemoveAssignments);
-                                       } else if (PEP == 1 && count == 0) {
-                                               // Strip the PEPACTION if available
-                                               if (uri == 1) {
-                                                       afterRemoveAssignments.add(attributeURI);
-                                               }
-                                               Obligation afterRemoveObligation = new StdObligation(
-                                                               oblId, afterRemoveAssignments);
-                                               obligations.add(afterRemoveObligation);
-                                       } else {
-                                               obligations.add(obligation);
-                                       }
-                               }
-                       }
-               }
-       }
+    private void search(final StdMutableResponse stdResponse) {
+        for (final Result result : stdResponse.getResults()) {
+            if (!result.getObligations().isEmpty()) {
+                System.out.println("Obligation Received");
+                // Is there any action that PDP needs to take
+                for (final Obligation obligation : result.getObligations()) {
+                    int count = 0;
+                    int uri = 0;
+                    int pep = 0;
+                    header = false;
+                    changeIt = false;
+                    final Collection<AttributeAssignment> afterRemoveAssignments = new ArrayList<>();
+                    final Identifier oblId = new IdentifierImpl(obligation.getId().stringValue());
+                    StdAttributeAssignment attributeUri = null;
+                    for (final AttributeAssignment attribute : obligation.getAttributeAssignments()) {
+                        matchValues.put(attribute.getAttributeId().stringValue(),
+                                attribute.getAttributeValue().getValue().toString());
+                        if (attribute.getAttributeId().stringValue().equalsIgnoreCase("performer")) {
+                            if (attribute.getAttributeValue().getValue().toString().equalsIgnoreCase("PEPACTION")) {
+                                pep++;
+                            } else if (attribute.getAttributeValue().getValue().toString()
+                                    .equalsIgnoreCase("PDPACTION")) {
+                                count++;
+                            }
+                        } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("URL")) {
+                            uri++;
+                            if (uri == 1) {
+                                configUrl = attribute.getAttributeValue().getValue().toString();
+                                attributeUri = new StdAttributeAssignment(attribute);
+                            }
+                        } else if (attribute.getAttributeId().stringValue().startsWith("headers")) {
+                            logger.info("Headers are : " + attribute.getAttributeValue().getValue().toString());
+                            header = true;
+                            headers.put(attribute.getAttributeId().stringValue().replaceFirst("(headers).", ""),
+                                    attribute.getAttributeValue().getValue().toString());
+                            afterRemoveAssignments.add(attribute);
+                        } else if (attribute.getAttributeId().stringValue().equalsIgnoreCase("body")) {
+                            String papPath = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
+                            papPath = papPath.replace("/pap", "");
+                            matchValues.put("body",
+                                    attribute.getAttributeValue().getValue().toString().replace("$URL", papPath));
+                        } else {
+                            final StdAttributeAssignment attributeObligation = new StdAttributeAssignment(attribute);
+                            afterRemoveAssignments.add(attributeObligation);
+                        }
+                    }
+                    if (count == 1 && uri == 1 && pep == 0) {
+                        // Remove Obligation and add Advice
+                        changeIt = true;
+                        takeAction(stdResponse, oblId, afterRemoveAssignments);
+                    } else if (pep == 1 && count == 0) {
+                        // Strip the PEPACTION if available
+                        if (uri == 1) {
+                            afterRemoveAssignments.add(attributeUri);
+                        }
+                        final Obligation afterRemoveObligation = new StdObligation(oblId, afterRemoveAssignments);
+                        obligations.add(afterRemoveObligation);
+                    } else {
+                        obligations.add(obligation);
+                    }
+                }
+            }
+        }
+    }
 
-       private void takeAction(StdMutableResponse stdResponse, Identifier advId,
-                       Collection<AttributeAssignment> afterRemoveAssignments) {
-               if (changeIt) {
-                       LOGGER.info("the URL is :" + configURL);
-                       // Calling Rest URL..
-                       callRest();
-                       // Including the Results in an Advice
-                       Identifier id = new IdentifierImpl(
-                                       "org.onap.policy:pdp:reply");
-                       Identifier statId = new IdentifierImpl(
-                                       "org:onap:onap:policy:pdp:reply:status");
-                       Identifier statCategory = new IdentifierImpl(
-                                       "urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject");
-                       Identifier strId = new IdentifierImpl(
-                                       "http://www.w3.org/2001/XMLSchema#string");
-                       Identifier resId = new IdentifierImpl(
-                                       "org:onap:onap:policy:pdp:reply:resource");
-                       Identifier resCategory = new IdentifierImpl(
-                                       "urn:oasis:names:tc:xacml:3.0:attribute-category:resource");
-                       Identifier urlId = new IdentifierImpl(
-                                       "http://www.w3.org/2001/XMLSchema#anyURI");
-                       AttributeValue<String> attributeStatusValue = new StdAttributeValue<>(
-                                       strId, status + response);
-                       AttributeValue<String> attributeResourceValue = new StdAttributeValue<>(
-                                       urlId, configURL);
-                       StdAttributeAssignment attributeStatus = new StdAttributeAssignment(
-                                       statCategory, statId, "PDP", attributeStatusValue);
-                       StdAttributeAssignment attributeResouce = new StdAttributeAssignment(
-                                       resCategory, resId, "PDP", attributeResourceValue);
-                       afterRemoveAssignments.add(attributeStatus);
-                       afterRemoveAssignments.add(attributeResouce);
-                       Advice advice = new StdAdvice(id, afterRemoveAssignments);
-                       addResult.addAdvice(advice);
-               }
-       }
+    private void takeAction(final StdMutableResponse stdResponse, final Identifier advId,
+            final Collection<AttributeAssignment> afterRemoveAssignments) {
+        if (changeIt) {
+            logger.info("the URL is :" + configUrl);
+            // Calling Rest URL..
+            callRest();
+            // Including the Results in an Advice
+            final Identifier id = new IdentifierImpl("org.onap.policy:pdp:reply");
+            final Identifier statId = new IdentifierImpl("org:onap:onap:policy:pdp:reply:status");
+            final Identifier statCategory =
+                    new IdentifierImpl("urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject");
+            final Identifier strId = new IdentifierImpl("http://www.w3.org/2001/XMLSchema#string");
+            final Identifier resId = new IdentifierImpl("org:onap:onap:policy:pdp:reply:resource");
+            final Identifier resCategory =
+                    new IdentifierImpl("urn:oasis:names:tc:xacml:3.0:attribute-category:resource");
+            final Identifier urlId = new IdentifierImpl("http://www.w3.org/2001/XMLSchema#anyURI");
+            final AttributeValue<String> attributeStatusValue = new StdAttributeValue<>(strId, status + response);
+            final AttributeValue<String> attributeResourceValue = new StdAttributeValue<>(urlId, configUrl);
+            final StdAttributeAssignment attributeStatus =
+                    new StdAttributeAssignment(statCategory, statId, "PDP", attributeStatusValue);
+            final StdAttributeAssignment attributeResouce =
+                    new StdAttributeAssignment(resCategory, resId, "PDP", attributeResourceValue);
+            afterRemoveAssignments.add(attributeStatus);
+            afterRemoveAssignments.add(attributeResouce);
+            final Advice advice = new StdAdvice(id, afterRemoveAssignments);
+            addResult.addAdvice(advice);
+        }
+    }
 
-       private void addResults(StdMutableResponse stdResponse, boolean config, boolean decide) {
-               if(decide){
-                       newResponse = stdResponse;
-                       return;
-               }
-               for (Result result : stdResponse.getResults()) {
-                       if(config){
-                               addResult.addAdvice(result.getAssociatedAdvice());
-                       }
-                       addResult.addAttributeCategories(result.getAttributes());
-                       addResult.addPolicyIdentifiers(result.getPolicyIdentifiers());
-                       addResult.addPolicySetIdentifiers(result.getPolicySetIdentifiers());
-                       addResult.setStatus(result.getStatus());
-                       addResult.setDecision(result.getDecision());
-                       if(!config){
-                               addResult.addObligations(obligations);
-                       }
-               }
-               newResponse.add(addResult);
-       }
+    private void addResults(final StdMutableResponse stdResponse, final boolean config, final boolean decide) {
+        if (decide) {
+            newResponse = stdResponse;
+            return;
+        }
+        for (final Result result : stdResponse.getResults()) {
+            if (config) {
+                addResult.addAdvice(result.getAssociatedAdvice());
+            }
+            addResult.addAttributeCategories(result.getAttributes());
+            addResult.addPolicyIdentifiers(result.getPolicyIdentifiers());
+            addResult.addPolicySetIdentifiers(result.getPolicySetIdentifiers());
+            addResult.setStatus(result.getStatus());
+            addResult.setDecision(result.getDecision());
+            if (!config) {
+                addResult.addObligations(obligations);
+            }
+        }
+        newResponse.add(addResult);
+    }
 
-       private int status;
-       private String response;
-       private DefaultHttpClient httpClient;
+    private int status;
+    private String response;
+    private DefaultHttpClient httpClient;
 
-       private void callRest() {
-               // Finding the Macros in the URL..
-               Pattern pattern = Pattern.compile("\\$([a-zA-Z0-9.:]*)");
-               Matcher match = pattern.matcher(configURL);
-               StringBuffer sb = new StringBuffer();
-               JsonReader jsonReader = null;
-               while (match.find()) {
-                       LOGGER.info("Found Macro : " + match.group(1));
-                       String replaceValue = matchValues.get(match.group(1));
-                       LOGGER.info("Replacing with :" + replaceValue);
-                       match.appendReplacement(sb, replaceValue);
-               }
-               match.appendTail(sb);
-               LOGGER.info("URL is : " + sb.toString());
-               configURL = sb.toString();
-               // Calling the Requested service. 
-               if (matchValues.get("method").equalsIgnoreCase("GET")) {
-                       httpClient = new DefaultHttpClient();
-                       try {
-                               HttpGet getRequest = new HttpGet(configURL);
-                               // Adding Headers here
-                               if (header) {
-                                       for (String key : headers.keySet()) {
-                                               getRequest.addHeader(key, headers.get(key));
-                                       }
-                               }
-                               HttpResponse result = httpClient.execute(getRequest);
-                               status = result.getStatusLine().getStatusCode();
-                               BufferedReader br = new BufferedReader(new InputStreamReader(
-                                               (result.getEntity().getContent())));
-                               String output = " ";
-                               String out;
-                               while ((out = br.readLine()) != null) {
-                                       output = output + out;
-                               }
-                               response = output;
-                       } catch (Exception e) {
-                               LOGGER.error(e.getMessage()+e);
-                               response = e.getMessage();
-                       } finally {
-                               httpClient.getConnectionManager().shutdown();
-                       }
-               } else if(matchValues.get("method").equalsIgnoreCase("POST")) {
-                       httpClient = new DefaultHttpClient();
-                       try {
-                               HttpPost postRequest = new HttpPost(configURL);
-                               // Adding Headers here
-                               if (header) {
-                                       for (String key : headers.keySet()) {
-                                               postRequest.addHeader(key, headers.get(key));
-                                       }
-                               }
-                               // Adding the Body. 
-                               URL configURL = new URL(matchValues.get("body"));
-                               URLConnection connection = null;
-                               connection = configURL.openConnection();
-                               // InputStream in = connection.getInputStrem();
-                               // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
-                               jsonReader = Json.createReader(connection.getInputStream());
-                               StringEntity input = new StringEntity(jsonReader.readObject().toString());
-                               input.setContentType("application/json");
-                               postRequest.setEntity(input);
-                               // Executing the Request. 
-                               HttpResponse result = httpClient.execute(postRequest);
-                               LOGGER.info("Result Headers are : " + result.getAllHeaders());
-                               status = result.getStatusLine().getStatusCode();
-                               BufferedReader br = new BufferedReader(new InputStreamReader(
-                                               (result.getEntity().getContent())));
-                               String output = " ";
-                               String out;
-                               while ((out = br.readLine()) != null) {
-                                       output = output + out;
-                               }
-                               response = output;
-                       }catch (Exception e) {
-                               LOGGER.error(e.getMessage() +e);
-                               response = e.getMessage();
-                       } finally {
-                               if(jsonReader != null) {
-                                   try {
-                                       jsonReader.close();
-                                   } catch (Exception e) {
-                                       LOGGER.error("Exception Occured while closing the JsonReader"+e);
-                                   }
-                               }
-                               httpClient.getConnectionManager().shutdown();
-                       }
-               } else if(matchValues.get("method").equalsIgnoreCase("PUT")) {
-                       httpClient = new DefaultHttpClient();
-                       try {
-                               HttpPut putRequest = new HttpPut(configURL);
-                               // Adding Headers here
-                               if (header) {
-                                       for (String key : headers.keySet()) {
-                                               putRequest.addHeader(key, headers.get(key));
-                                       }
-                               }
-                               // Adding the Body. 
-                               URL configURL = new URL(matchValues.get("body"));
-                               URLConnection connection = null;
-                               connection = configURL.openConnection();
-                               //InputStream in = connection.getInputStream();
-                               //LOGGER.info("The Body Content is : " + IOUtils.toString(in));
-                               jsonReader = Json.createReader(connection.getInputStream());
-                               StringEntity input = new StringEntity(jsonReader.readObject().toString());
-                               input.setContentType("application/json");
-                               putRequest.setEntity(input);
-                               // Executing the Request. 
-                               HttpResponse result = httpClient.execute(putRequest);
-                               status = result.getStatusLine().getStatusCode();
-                               BufferedReader br = new BufferedReader(new InputStreamReader(
-                                               (result.getEntity().getContent())));
-                               String output = " ";
-                               String out;
-                               while ((out = br.readLine()) != null) {
-                                       output = output + out;
-                               }
-                               response = output;
-                       } catch (Exception e) {
-                               LOGGER.error(e.getMessage() +e);
-                               response = e.getMessage();
-                       }finally {
-                               if(jsonReader != null) {
-                                   try {
-                                       jsonReader.close();
-                                   } catch (Exception e) {
-                                       LOGGER.error("Exception Occured while closing the JsonReader"+e);
-                                   }
-                               }
-                               httpClient.getConnectionManager().shutdown();
-                       }
-               }
-       }
-}
\ No newline at end of file
+    private void callRest() {
+        // Finding the Macros in the URL..
+        final Pattern pattern = Pattern.compile("\\$([a-zA-Z0-9.:]*)");
+        final Matcher match = pattern.matcher(configUrl);
+        final StringBuffer sb = new StringBuffer();
+        JsonReader jsonReader = null;
+        while (match.find()) {
+            logger.info("Found Macro : " + match.group(1));
+            final String replaceValue = matchValues.get(match.group(1));
+            logger.info("Replacing with :" + replaceValue);
+            match.appendReplacement(sb, replaceValue);
+        }
+        match.appendTail(sb);
+        logger.info("URL is : " + sb.toString());
+        configUrl = sb.toString();
+        // Calling the Requested service.
+        if (matchValues.get("method").equalsIgnoreCase("GET")) {
+            httpClient = new DefaultHttpClient();
+            try {
+                final HttpGet getRequest = new HttpGet(configUrl);
+                // Adding Headers here
+                if (header) {
+                    for (final String key : headers.keySet()) {
+                        getRequest.addHeader(key, headers.get(key));
+                    }
+                }
+                final HttpResponse result = httpClient.execute(getRequest);
+                status = result.getStatusLine().getStatusCode();
+                final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+                String output = " ";
+                String out;
+                while ((out = br.readLine()) != null) {
+                    output = output + out;
+                }
+                response = output;
+            } catch (final Exception e) {
+                logger.error(e.getMessage() + e);
+                response = e.getMessage();
+            } finally {
+                httpClient.getConnectionManager().shutdown();
+            }
+        } else if (matchValues.get("method").equalsIgnoreCase("POST")) {
+            httpClient = new DefaultHttpClient();
+            try {
+                final HttpPost postRequest = new HttpPost(configUrl);
+                // Adding Headers here
+                if (header) {
+                    for (final String key : headers.keySet()) {
+                        postRequest.addHeader(key, headers.get(key));
+                    }
+                }
+                // Adding the Body.
+                final URL configUrl = new URL(matchValues.get("body"));
+                URLConnection connection = null;
+                connection = configUrl.openConnection();
+                // InputStream in = connection.getInputStrem();
+                // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
+                jsonReader = Json.createReader(connection.getInputStream());
+                final StringEntity input = new StringEntity(jsonReader.readObject().toString());
+                input.setContentType("application/json");
+                postRequest.setEntity(input);
+                // Executing the Request.
+                final HttpResponse result = httpClient.execute(postRequest);
+                logger.info("Result Headers are : " + result.getAllHeaders());
+                status = result.getStatusLine().getStatusCode();
+                final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+                String output = " ";
+                String out;
+                while ((out = br.readLine()) != null) {
+                    output = output + out;
+                }
+                response = output;
+            } catch (final Exception e) {
+                logger.error(e.getMessage() + e);
+                response = e.getMessage();
+            } finally {
+                if (jsonReader != null) {
+                    try {
+                        jsonReader.close();
+                    } catch (final Exception e) {
+                        logger.error("Exception Occured while closing the JsonReader" + e);
+                    }
+                }
+                httpClient.getConnectionManager().shutdown();
+            }
+        } else if (matchValues.get("method").equalsIgnoreCase("PUT")) {
+            httpClient = new DefaultHttpClient();
+            try {
+                final HttpPut putRequest = new HttpPut(configUrl);
+                // Adding Headers here
+                if (header) {
+                    for (final String key : headers.keySet()) {
+                        putRequest.addHeader(key, headers.get(key));
+                    }
+                }
+                // Adding the Body.
+                final URL configUrl = new URL(matchValues.get("body"));
+                URLConnection connection = null;
+                connection = configUrl.openConnection();
+                // InputStream in = connection.getInputStream();
+                // LOGGER.info("The Body Content is : " + IOUtils.toString(in));
+                jsonReader = Json.createReader(connection.getInputStream());
+                final StringEntity input = new StringEntity(jsonReader.readObject().toString());
+                input.setContentType("application/json");
+                putRequest.setEntity(input);
+                // Executing the Request.
+                final HttpResponse result = httpClient.execute(putRequest);
+                status = result.getStatusLine().getStatusCode();
+                final BufferedReader br = new BufferedReader(new InputStreamReader((result.getEntity().getContent())));
+                String output = " ";
+                String out;
+                while ((out = br.readLine()) != null) {
+                    output = output + out;
+                }
+                response = output;
+            } catch (final Exception e) {
+                logger.error(e.getMessage() + e);
+                response = e.getMessage();
+            } finally {
+                if (jsonReader != null) {
+                    try {
+                        jsonReader.close();
+                    } catch (final Exception e) {
+                        logger.error("Exception Occured while closing the JsonReader" + e);
+                    }
+                }
+                httpClient.getConnectionManager().shutdown();
+            }
+        }
+    }
+}