Fix bugs in Rest Client
[aai/rest-client.git] / src / main / java / org / onap / aai / restclient / client / RestClient.java
index 64b52fb..f4f184c 100644 (file)
@@ -32,6 +32,7 @@ import java.util.concurrent.ConcurrentMap;
 
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.MultivaluedHashMap;
 import javax.ws.rs.core.Response;
 
 import org.onap.aai.restclient.enums.RestAuthenticationMode;
@@ -319,6 +320,7 @@ public class RestClient {
 
       } catch (InterruptedException e) {
         logger.error(RestClientMsgs.HTTP_REQUEST_INTERRUPTED, url, e.getLocalizedMessage());
+        Thread.currentThread().interrupt();
         break;
       }
     }
@@ -381,7 +383,9 @@ public class RestClient {
       populateOperationResult(clientResponse, operationResult);
 
       // Debug log the response
-      debugResponse(operationResult, clientResponse.getHeaders());
+      if (clientResponse != null) {
+        debugResponse(operationResult, clientResponse.getHeaders());
+      }
 
     } catch (Exception ex) {
 
@@ -611,7 +615,9 @@ public class RestClient {
         builder.header(header.getKey(), String.join(";",header.getValue()));
       }
       
-      if (clientBuilder.getAuthenticationMode() == RestAuthenticationMode.SSL_BASIC) {
+      //Added additional check to prevent adding duplicate authorization header if client is already sending the authorization header 
+      // AAI-1097 - For AAI calls when Rest authentication mode is selected as SSL_BASIC getting 403 error
+      if (clientBuilder.getAuthenticationMode() == RestAuthenticationMode.SSL_BASIC && headers.get(Headers.AUTHORIZATION) == null) {
         builder = builder.header(Headers.AUTHORIZATION,
             clientBuilder.getBasicAuthenticationCredentials());
       }
@@ -623,43 +629,58 @@ public class RestClient {
 
   private void debugRequest(String url, String payload, Map<String, List<String>> headers,
       MediaType responseType) {
-    if (logger.isDebugEnabled()) {
-      StringBuilder debugRequest = new StringBuilder("REQUEST:\n");
-      debugRequest.append("URL: ").append(url).append("\n");
-      debugRequest.append("Payload: ").append(payload).append("\n");
-      debugRequest.append("Response Type: ").append(responseType).append("\n");
-      if (headers != null) {
-        debugRequest.append("Headers: ");
-        for (Entry<String, List<String>> header : headers.entrySet()) {
-          debugRequest.append("\n\t").append(header.getKey()).append(":");
-          for (String headerEntry : header.getValue()) {
-            debugRequest.append("\"").append(headerEntry).append("\" ");
-          }
-        }
-      }
+    if (!logger.isDebugEnabled()) {
+      return;
+    }
+
+    StringBuilder debugRequest = new StringBuilder("REQUEST:\n");
+    debugRequest.append("URL: ").append(url).append("\n");
+    debugRequest.append("Payload: ").append(payload).append("\n");
+    debugRequest.append("Response Type: ").append(responseType).append("\n");
+
+    if (headers == null) {
       logger.debug(debugRequest.toString());
+      return;
     }
+
+    debugRequest.append("Headers: ");
+    for (Entry<String, List<String>> header : headers.entrySet()) {
+      debugRequest.append("\n\t").append(header.getKey()).append(":");
+      for (String headerEntry : header.getValue()) {
+        debugRequest.append("\"").append(headerEntry).append("\" ");
+      }
+    }
+
+    logger.debug(debugRequest.toString());
+
   }
 
   private void debugResponse(OperationResult operationResult,
       MultivaluedMap<String, String> headers) {
-    if (logger.isDebugEnabled()) {
-      StringBuilder debugResponse = new StringBuilder("RESPONSE:\n");
-      debugResponse.append("Result: ").append(operationResult.getResultCode()).append("\n");
-      debugResponse.append("Failure Cause: ").append(operationResult.getFailureCause())
-          .append("\n");
-      debugResponse.append("Payload: ").append(operationResult.getResult()).append("\n");
-      if (headers != null) {
-        debugResponse.append("Headers: ");
-        for (Entry<String, List<String>> header : headers.entrySet()) {
-          debugResponse.append("\n\t").append(header.getKey()).append(":");
-          for (String headerEntry : header.getValue()) {
-            debugResponse.append("\"").append(headerEntry).append("\" ");
-          }
-        }
-      }
+
+    if (!logger.isDebugEnabled()) {
+      return;
+    }
+
+    StringBuilder debugResponse = new StringBuilder("RESPONSE:\n");
+    debugResponse.append("Result: ").append(operationResult.getResultCode()).append("\n");
+    debugResponse.append("Failure Cause: ").append(operationResult.getFailureCause()).append("\n");
+    debugResponse.append("Payload: ").append(operationResult.getResult()).append("\n");
+
+    if (headers == null) {
       logger.debug(debugResponse.toString());
+      return;
+    }
+
+    debugResponse.append("Headers: ");
+    for (Entry<String, List<String>> header : headers.entrySet()) {
+      debugResponse.append("\n\t").append(header.getKey()).append(":");
+      for (String headerEntry : header.getValue()) {
+        debugResponse.append("\"").append(headerEntry).append("\" ");
+      }
     }
+
+    logger.debug(debugResponse.toString());
   }
 
   /**
@@ -708,7 +729,7 @@ public class RestClient {
     
     try {
       initClient.setClient(clientBuilder.getClient());
-    } catch ( Throwable error ) {
+    } catch ( Exception error) {
       initClient.setCaughtException(error);
     }