Add headers to asynchronous get in HttpClient
Issue-ID: POLICY-1625
Signed-off-by: Jim Hahn <jrh3@att.com>
Change-Id: I61ef2fcfde5eb361652d2d6e3f55324af7ca7b4e
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/HttpClient.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/HttpClient.java
index ebed1d7..9e4e412 100644
--- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/HttpClient.java
+++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/HttpClient.java
@@ -53,19 +53,21 @@
* Asynchronous GET request.
*
* @param callback callback to be invoked, asynchronously, when the request completes
- * @param path context uri path.
+ * @param path context uri path
+ * @param headers request headers
*
* @return future that can be used to cancel the request or await the response
*/
- Future<Response> get(InvocationCallback<Response> callback, String path);
+ Future<Response> get(InvocationCallback<Response> callback, String path, Map<String, Object> headers);
/**
* Asynchronous GET request.
*
* @param callback callback to be invoked, asynchronously, when the request completes
+ * @param headers request headers
* @return future that can be used to cancel the request or await the response
*/
- Future<Response> get(InvocationCallback<Response> callback);
+ Future<Response> get(InvocationCallback<Response> callback, Map<String, Object> headers);
/**
* PUT request.
diff --git a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java
index 1a822ff..38ec682 100644
--- a/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java
+++ b/policy-endpoints/src/main/java/org/onap/policy/common/endpoints/http/client/internal/JerseyClient.java
@@ -26,6 +26,7 @@
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
+import java.util.Collections;
import java.util.Map;
import java.util.Map.Entry;
import java.util.concurrent.Future;
@@ -171,17 +172,23 @@
}
@Override
- public Future<Response> get(InvocationCallback<Response> callback, String path) {
+ public Future<Response> get(InvocationCallback<Response> callback, String path, Map<String, Object> headers) {
+ Map<String, Object> headers2 = (headers != null ? headers : Collections.emptyMap());
+
if (!StringUtils.isBlank(path)) {
- return this.client.target(this.baseUrl).path(path).request().async().get(callback);
+ return getBuilder(path, headers2).async().get(callback);
} else {
- return this.client.target(this.baseUrl).request().async().get(callback);
+ return get(callback, headers2);
}
}
@Override
- public Future<Response> get(InvocationCallback<Response> callback) {
- return this.client.target(this.baseUrl).request().async().get(callback);
+ public Future<Response> get(InvocationCallback<Response> callback, Map<String, Object> headers) {
+ Builder builder = this.client.target(this.baseUrl).request();
+ if (headers != null) {
+ headers.forEach(builder::header);
+ }
+ return builder.async().get(callback);
}
@Override
diff --git a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpClientTest.java b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpClientTest.java
index d3f94cd..5d609a6 100644
--- a/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpClientTest.java
+++ b/policy-endpoints/src/test/java/org/onap/policy/common/endpoints/http/server/test/HttpClientTest.java
@@ -31,6 +31,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Properties;
+import java.util.TreeMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import javax.ws.rs.client.Entity;
@@ -204,7 +205,7 @@
final HttpClient client = getNoAuthHttpClient(TEST_HTTP_NO_AUTH_CLIENT, false,
6666);
MyCallback callback = new MyCallback();
- final Response response = client.get(callback, HELLO).get();
+ final Response response = client.get(callback, HELLO, new TreeMap<>()).get();
verifyCallback("testHttpGetNoAuthClientAsync", callback, response);
@@ -316,7 +317,7 @@
final HttpClient client = getAuthHttpClient();
MyCallback callback = new MyCallback();
- final Response response = client.get(callback, HELLO).get();
+ final Response response = client.get(callback, HELLO, null).get();
verifyCallback("testHttpAsyncAuthClient", callback, response);
@@ -496,13 +497,13 @@
// try it asynchronously, too
MyCallback callback = new MyCallback();
- response = clientPap.get(callback).get();
+ response = clientPap.get(callback, null).get();
verifyCallback("testHttpAuthClientProps", callback, response);
assertEquals(200, response.getStatus());
// try it asynchronously, with empty path
callback = new MyCallback();
- response = clientPap.get(callback, "").get();
+ response = clientPap.get(callback, "", null).get();
verifyCallback("testHttpAuthClientProps - empty path", callback, response);
assertEquals(200, response.getStatus());
}