read and set the jersey client properties
[dmaap/messagerouter/dmaapclient.git] / src / main / java / org / onap / dmaap / mr / client / impl / DmaapClientUtil.java
index b06290a..4c50596 100644 (file)
  *******************************************************************************/
 package org.onap.dmaap.mr.client.impl;
 
+import java.util.Properties;
+
 import javax.ws.rs.client.Client;
 import javax.ws.rs.client.ClientBuilder;
 import javax.ws.rs.client.Entity;
 import javax.ws.rs.client.WebTarget;
 import javax.ws.rs.core.Response;
 
+import org.glassfish.jersey.client.ClientConfig;
+import org.glassfish.jersey.client.ClientProperties;
 import org.glassfish.jersey.client.authentication.HttpAuthenticationFeature;
 
 public class DmaapClientUtil {
 
        private static final String MR_AUTH_CONSTANT = "X-CambriaAuth";
        private static final String MR_DATE_CONSTANT = "X-CambriaDate";
+       private static final String[] httpClientProperties = { ClientProperties.CONNECT_TIMEOUT,
+                       ClientProperties.READ_TIMEOUT, ClientProperties.PROXY_USERNAME, ClientProperties.PROXY_PASSWORD,
+                       ClientProperties.PROXY_URI };
+
+       public static ClientConfig getClientConfig(Properties properties) {
+               ClientConfig config = new ClientConfig();
+               if (properties != null && !properties.isEmpty()) {
+                       setHttpClientProperties(config, properties);
+               }
+               return config;
+       }
 
-       public static WebTarget getTarget(final String path, final String username, final String password) {
+       private static void setHttpClientProperties(ClientConfig config, Properties properties) {
+               for (int i = 0; i < httpClientProperties.length; i++) {
+                       if ((properties.getProperty(httpClientProperties[i]) != null)) {
+                               config.property(httpClientProperties[i], properties.getProperty(httpClientProperties[i]));
+                       }
+               }
+
+       }
 
-               Client client = ClientBuilder.newClient();
+       public static WebTarget getTarget(ClientConfig config, final String path, final String username,
+                       final String password) {
+               Client client = null;
+               if (config != null) {
+                       client = ClientBuilder.newClient(config);
+               } else {
+                       client = ClientBuilder.newClient();
+               }
                HttpAuthenticationFeature feature = HttpAuthenticationFeature.universal(username, password);
                client.register(feature);
 
                return client.target(path);
        }
 
-       public static WebTarget getTarget(final String path) {
+       public static WebTarget getTarget(ClientConfig config, final String path) {
 
-               Client client = ClientBuilder.newClient();
+               Client client = null;
+               if (config != null&&config.getProperties().size()>0) {
+                       client = ClientBuilder.newClient(config);
+               } else {
+                       client = ClientBuilder.newClient();
+               }
                return client.target(path);
        }
 
@@ -53,9 +87,11 @@ public class DmaapClientUtil {
                return target.request().header(MR_AUTH_CONSTANT, username).header(MR_DATE_CONSTANT, password).get();
 
        }
-       
-       public static Response postResponsewtCambriaAuth(WebTarget target, String username, String password,byte[] data,  String contentType) {
-               return target.request().header(MR_AUTH_CONSTANT, username).header(MR_DATE_CONSTANT, password).post(Entity.entity(data, contentType));
+
+       public static Response postResponsewtCambriaAuth(WebTarget target, String username, String password, byte[] data,
+                       String contentType) {
+               return target.request().header(MR_AUTH_CONSTANT, username).header(MR_DATE_CONSTANT, password)
+                               .post(Entity.entity(data, contentType));
 
        }
 
@@ -64,8 +100,9 @@ public class DmaapClientUtil {
                return target.request().header("Authorization", "Basic " + authHeader).get();
 
        }
-       
-       public static Response postResponsewtBasicAuth(WebTarget target, String authHeader,byte[] data,String contentType) {
+
+       public static Response postResponsewtBasicAuth(WebTarget target, String authHeader, byte[] data,
+                       String contentType) {
 
                return target.request().header("Authorization", "Basic " + authHeader).post(Entity.entity(data, contentType));
 
@@ -76,7 +113,7 @@ public class DmaapClientUtil {
                return target.request().get();
 
        }
-       
+
        public static Response postResponsewtNoAuth(WebTarget target, byte[] data, String contentType) {
                return target.request().post(Entity.entity(data, contentType));