Fixed some bugs
[holmes/common.git] / holmes-actions / src / main / java / org / onap / holmes / common / utils / JerseyClient.java
index 09d9f64..cfb601a 100644 (file)
@@ -16,7 +16,6 @@
 
 package org.onap.holmes.common.utils;
 
-import org.eclipse.jetty.http.HttpStatus;
 import org.onap.holmes.common.exception.HttpException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -63,12 +62,19 @@ public class JerseyClient {
     private Map<String, Object> parameters = new HashMap();
     private List<String> paths = new ArrayList();
 
+    public static JerseyClient newInstance() {
+        return new JerseyClient();
+    }
+
+    public static JerseyClient newInstance(long timeout) {
+        return new JerseyClient(timeout);
+    }
 
-    public JerseyClient() {
+    private JerseyClient() {
         this(DEFAULT_TIMEOUT);
     }
 
-    public JerseyClient(long timeout) {
+    private JerseyClient(long timeout) {
         this.client = ClientBuilder.newBuilder()
                 .connectTimeout(timeout, TimeUnit.MILLISECONDS)
                 .readTimeout(timeout, TimeUnit.MILLISECONDS)
@@ -116,7 +122,7 @@ public class JerseyClient {
 
         Response response = builder.get();
 
-        if (isSuccessful(response)) {
+        if (isSuccessful(response, url)) {
             return response2Target(response, clazz);
         }
 
@@ -141,7 +147,7 @@ public class JerseyClient {
 
         Response response = builder.post(entity);
 
-        if (isSuccessful(response)) {
+        if (isSuccessful(response, url)) {
             return response2Target(response, clazz);
         }
 
@@ -161,7 +167,7 @@ public class JerseyClient {
 
         Response response = builder.put(entity);
 
-        if (isSuccessful(response)) {
+        if (isSuccessful(response, url)) {
             return response2Target(response, clazz);
         }
 
@@ -181,18 +187,24 @@ public class JerseyClient {
 
         Response response = builder.delete();
 
-        if (isSuccessful(response)) {
+        if (isSuccessful(response, url)) {
             return response2Target(response, clazz);
         }
 
         return null;
     }
 
-    private boolean isSuccessful(Response response) {
-        int status = response.getStatus();
-        if (!HttpStatus.isSuccess(status)) {
-            throw new HttpException(status, String.format("Failed to get response from the server. Info: %s",
-                    response.readEntity(String.class)));
+    private boolean isSuccessful(Response response, String url) {
+        Response.StatusType statusInfo = response.getStatusInfo();
+        if (statusInfo.getFamily() != Response.Status.Family.SUCCESSFUL) {
+            logger.error(
+                    String.format("Failed to get response from the server <%d>. " +
+                                    "\nURL: %s\nCause: %s\nResponse body: %s",
+                            statusInfo.getStatusCode(),
+                            url,
+                            statusInfo.getReasonPhrase(),
+                            response.readEntity(String.class)));
+            return false;
         }
         return true;
     }