diff --git a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilder.java b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilder.java
index 1a9a7c6a1..e849e15f2 100644
--- a/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilder.java
+++ b/org.hl7.fhir.r4/src/main/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilder.java
@@ -25,16 +25,8 @@ import org.hl7.fhir.utilities.ToolingClientLogger;
import org.hl7.fhir.utilities.http.*;
import org.hl7.fhir.utilities.xhtml.XhtmlUtils;
-import okhttp3.Authenticator;
-import okhttp3.Credentials;
-import okhttp3.Headers;
-import okhttp3.Request;
-
public class FhirRequestBuilder {
- protected static final String HTTP_PROXY_USER = "http.proxyUser";
- protected static final String HTTP_PROXY_PASS = "http.proxyPassword";
- protected static final String HEADER_PROXY_AUTH = "Proxy-Authorization";
protected static final String LOCATION_HEADER = "location";
protected static final String CONTENT_LOCATION_HEADER = "content-location";
protected static final String DEFAULT_CHARSET = "UTF-8";
@@ -72,11 +64,11 @@ public class FhirRequestBuilder {
/**
* Adds necessary default headers, formatting headers, and any passed in
- * {@link Headers} to the passed in {@link okhttp3.Request.Builder}
+ * {@link HTTPHeader}s to the passed in {@link okhttp3.Request.Builder}
*
* @param request {@link okhttp3.Request.Builder} to add headers to.
* @param format Expected {@link Resource} format.
- * @param headers Any additional {@link Headers} to add to the request.
+ * @param headers Any additional {@link HTTPHeader}s to add to the request.
*/
protected static HTTPRequest formatHeaders(HTTPRequest request, String format, Iterable headers) {
List allHeaders = new ArrayList<>();
@@ -99,39 +91,6 @@ public class FhirRequestBuilder {
return headers;
}
- /**
- * Adds necessary headers for all REST requests.
- * User-Agent : hapi-fhir-tooling-client
- *
- * @param request {@link Request.Builder} to add default headers to.
- */
- protected static void addDefaultHeaders(Request.Builder request, Headers headers) {
- if (headers == null || !headers.names().contains("User-Agent")) {
- request.addHeader("User-Agent", "hapi-fhir-tooling-client");
- }
- }
-
- /**
- * Adds necessary headers for the given resource format provided.
- *
- * @param request {@link Request.Builder} to add default headers to.
- */
- protected static void addResourceFormatHeaders(Request.Builder request, String format) {
- request.addHeader("Accept", format);
- request.addHeader("Content-Type", format + ";charset=" + DEFAULT_CHARSET);
- }
-
- /**
- * Iterates through the passed in {@link Headers} and adds them to the provided
- * {@link Request.Builder}.
- *
- * @param request {@link Request.Builder} to add headers to.
- * @param headers {@link Headers} to add to request.
- */
- protected static void addHeaders(Request.Builder request, Headers headers) {
- headers.forEach(header -> request.addHeader(header.getFirst(), header.getSecond()));
- }
-
/**
* Returns true if any of the
* {@link org.hl7.fhir.r4.model.OperationOutcome.OperationOutcomeIssueComponent}
@@ -169,20 +128,6 @@ public class FhirRequestBuilder {
return new ManagedFhirWebAccessBuilder("hapi-fhir-tooling-client", null).withRetries(retryCount).withTimeout(timeout, timeoutUnit).withLogger(logger);
}
-
- @Nonnull
- private static Authenticator getAuthenticator() {
- return (route, response) -> {
- final String httpProxyUser = System.getProperty(HTTP_PROXY_USER);
- final String httpProxyPass = System.getProperty(HTTP_PROXY_PASS);
- if (httpProxyUser != null && httpProxyPass != null) {
- String credential = Credentials.basic(httpProxyUser, httpProxyPass);
- return response.request().newBuilder().header(HEADER_PROXY_AUTH, credential).build();
- }
- return response.request().newBuilder().build();
- };
- }
-
public FhirRequestBuilder withResourceFormat(String resourceFormat) {
this.resourceFormat = resourceFormat;
return this;
diff --git a/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientHeadersTest.java b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientHeadersTest.java
new file mode 100644
index 000000000..93ed42f40
--- /dev/null
+++ b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientHeadersTest.java
@@ -0,0 +1,104 @@
+package org.hl7.fhir.r4.utils.client.network;
+
+import org.hl7.fhir.exceptions.FHIRException;
+import org.hl7.fhir.utilities.http.HTTPHeader;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+
+public class ClientHeadersTest {
+ ClientHeaders clientHeaders;
+
+ HTTPHeader h1 = new HTTPHeader("header1", "value1");
+ HTTPHeader h2 = new HTTPHeader("header2", "value2");
+ HTTPHeader h3 = new HTTPHeader("header3", "value3");
+
+ @BeforeEach
+ void setUp() {
+ clientHeaders = new ClientHeaders();
+ }
+
+ @Test
+ @DisplayName("Happy path add headers individually.")
+ void addHeader() {
+ clientHeaders.addHeader(h1);
+ Assertions.assertEquals(1, clientHeaders.headers().size());
+ clientHeaders.addHeader(h2);
+ Assertions.assertEquals(2, clientHeaders.headers().size());
+ }
+
+ @Test
+ @DisplayName("Test duplicate header added individually throws FHIRException.")
+ void addHeaderDuplicateAdd() {
+ clientHeaders.addHeader(h1);
+ Assertions.assertThrows(FHIRException.class, () -> clientHeaders.addHeader(h1));
+ }
+
+ @Test
+ @DisplayName("Happy path add headers as list.")
+ void addHeaders() {
+ List headersList = Arrays.asList(h1, h2, h3);
+ clientHeaders.addHeaders(headersList);
+ Assertions.assertEquals(3, clientHeaders.headers().size());
+ Assertions.assertEquals(headersList, clientHeaders.headers());
+ }
+
+ @Test
+ @DisplayName("Happy path add headers as list.")
+ void addHeadersDuplicateAdd() {
+ List headersList = Arrays.asList(h1, h2, h1);
+ Assertions.assertThrows(FHIRException.class, () -> clientHeaders.addHeaders(headersList));
+ }
+
+ @Test
+ @DisplayName("Happy path remove existing header.")
+ void removeHeader() {
+ clientHeaders.addHeader(h1);
+ clientHeaders.addHeader(h2);
+ clientHeaders.addHeader(h3);
+ clientHeaders.removeHeader(h2);
+ Assertions.assertEquals(2, clientHeaders.headers().size());
+ clientHeaders.removeHeader(new HTTPHeader("header3", "value3"));
+ Assertions.assertEquals(1, clientHeaders.headers().size());
+ }
+
+ @Test
+ @DisplayName("Remove header not contained in list.")
+ void removeHeaderUnknown() {
+ clientHeaders.addHeader(h1);
+ clientHeaders.addHeader(h2);
+ Assertions.assertThrows(FHIRException.class, () -> clientHeaders.removeHeader(h3));
+ }
+
+ @Test
+ @DisplayName("Happy path remove list of existing headers.")
+ void removeHeaders() {
+ List headersToAddList = Arrays.asList(h1, h2, h3);
+ List headersToRemoveList = Arrays.asList(h2, h3);
+ clientHeaders.addHeaders(headersToAddList);
+ clientHeaders.removeHeaders(headersToRemoveList);
+ Assertions.assertEquals(1, clientHeaders.headers().size());
+ }
+
+ @Test
+ @DisplayName("Remove list containing unknown header.")
+ void removeHeadersUnknown() {
+ List headersToAddList = Arrays.asList(h1, h3);
+ List headersToRemoveList = Arrays.asList(h2, h3);
+ clientHeaders.addHeaders(headersToAddList);
+ Assertions.assertThrows(FHIRException.class, () -> clientHeaders.removeHeaders(headersToRemoveList));
+ }
+
+ @Test
+ void clearHeaders() {
+ List headersToAddList = Arrays.asList(h1, h3);
+ clientHeaders.addHeaders(headersToAddList);
+ Assertions.assertEquals(2, clientHeaders.headers().size());
+ clientHeaders.clearHeaders();
+ Assertions.assertEquals(0, clientHeaders.headers().size());
+ }
+}
diff --git a/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/ClientTest.java b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientTest.java
similarity index 96%
rename from org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/ClientTest.java
rename to org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientTest.java
index 759170025..19cc74d1d 100644
--- a/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/ClientTest.java
+++ b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/ClientTest.java
@@ -1,4 +1,4 @@
-package org.hl7.fhir.r4.utils.client;
+package org.hl7.fhir.r4.utils.client.network;
import okhttp3.HttpUrl;
import okhttp3.mockwebserver.MockWebServer;
@@ -7,9 +7,6 @@ import okhttp3.mockwebserver.RecordedRequest;
import org.hl7.fhir.r4.context.HTMLClientLogger;
import org.hl7.fhir.r4.formats.JsonParser;
import org.hl7.fhir.r4.model.*;
-import org.hl7.fhir.r4.utils.client.network.ByteUtils;
-import org.hl7.fhir.r4.utils.client.network.Client;
-import org.hl7.fhir.r4.utils.client.network.ResourceRequest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
diff --git a/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilderTest.java b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilderTest.java
new file mode 100644
index 000000000..f5b921eec
--- /dev/null
+++ b/org.hl7.fhir.r4/src/test/java/org/hl7/fhir/r4/utils/client/network/FhirRequestBuilderTest.java
@@ -0,0 +1,153 @@
+package org.hl7.fhir.r4.utils.client.network;
+
+import okhttp3.Request;
+import org.hl7.fhir.utilities.http.HTTPHeader;
+import org.hl7.fhir.utilities.http.HTTPHeaderUtil;
+import org.hl7.fhir.utilities.http.HTTPRequest;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class FhirRequestBuilderTest {
+ @Test
+ @DisplayName("Test resource format headers are added correctly.")
+ void addResourceFormatHeadersGET() {
+ String testFormat = "yaml";
+ HTTPRequest request = new HTTPRequest().withUrl("http://www.google.com").withMethod(HTTPRequest.HttpMethod.GET);
+
+ Iterable headers = FhirRequestBuilder.getResourceFormatHeaders(request, testFormat);
+
+ Map> headersMap = HTTPHeaderUtil.getMultimap(headers);
+ Assertions.assertNotNull(headersMap.get("Accept"), "Accept header null.");
+ Assertions.assertEquals(testFormat, headersMap.get("Accept").get(0),
+ "Accept header not populated with expected value " + testFormat + ".");
+
+ Assertions.assertNull(headersMap.get("Content-Type"), "Content-Type header null.");
+ }
+
+ @Test
+ @DisplayName("Test resource format headers are added correctly (POST).")
+ void addResourceFormatHeadersPOST() {
+ //FIXME tested here. Should get list of HTTPHeader.
+ String testFormat = "yaml";
+ HTTPRequest request = new HTTPRequest().withUrl("http://www.google.com").withMethod(HTTPRequest.HttpMethod.POST);
+
+ Iterable headers = FhirRequestBuilder.getResourceFormatHeaders(request, testFormat);
+
+ Map> headersMap = HTTPHeaderUtil.getMultimap(headers);
+ Assertions.assertNotNull(headersMap.get("Accept"), "Accept header null.");
+ Assertions.assertEquals(testFormat, headersMap.get("Accept").get(0),
+ "Accept header not populated with expected value " + testFormat + ".");
+
+ Assertions.assertNotNull(headersMap.get("Content-Type"), "Content-Type header null.");
+ Assertions.assertEquals(testFormat + ";charset=" + FhirRequestBuilder.DEFAULT_CHARSET, headersMap.get("Content-Type").get(0),
+ "Content-Type header not populated with expected value \"" + testFormat + ";charset=" + FhirRequestBuilder.DEFAULT_CHARSET + "\".");
+ }
+
+ @Test
+ @DisplayName("Test a list of provided headers are added correctly.")
+ void addHeaders() {
+ String headerName1 = "headerName1";
+ String headerValue1 = "headerValue1";
+ String headerName2 = "headerName2";
+ String headerValue2 = "headerValue2";
+
+ List headers = List.of(
+ new HTTPHeader(headerName1, headerValue1),
+ new HTTPHeader(headerName2, headerValue2)
+ );
+
+ Request.Builder request = new Request.Builder().url("http://www.google.com");
+ FhirRequestBuilder.addHeaders(request, headers);
+
+ Map> headersMap = request.build().headers().toMultimap();
+ Assertions.assertNotNull(headersMap.get(headerName1), headerName1 + " header null.");
+ Assertions.assertEquals(headerValue1, headersMap.get(headerName1).get(0),
+ headerName1 + " header not populated with expected value " + headerValue1 + ".");
+ Assertions.assertNotNull(headersMap.get(headerName2), headerName2 + " header null.");
+ Assertions.assertEquals(headerValue2, headersMap.get(headerName2).get(0),
+ headerName2 + " header not populated with expected value " + headerValue2 + ".");
+ }
+
+ @Test
+ @DisplayName("Test that FATAL issue severity triggers error.")
+ void hasErrorTestFatal() {
+ OperationOutcome outcome = new OperationOutcome();
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.INFORMATION));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.NULL));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.WARNING));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.FATAL));
+ Assertions.assertTrue(FhirRequestBuilder.hasError(outcome), "Error check not triggered for FATAL issue severity.");
+ }
+
+ @Test
+ @DisplayName("Test that ERROR issue severity triggers error.")
+ void hasErrorTestError() {
+ OperationOutcome outcome = new OperationOutcome();
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.INFORMATION));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.NULL));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.WARNING));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.ERROR));
+ Assertions.assertTrue(FhirRequestBuilder.hasError(outcome), "Error check not triggered for ERROR issue severity.");
+ }
+
+ @Test
+ @DisplayName("Test that no FATAL or ERROR issue severity does not trigger error.")
+ void hasErrorTestNoErrors() {
+ OperationOutcome outcome = new OperationOutcome();
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.INFORMATION));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.NULL));
+ outcome.addIssue(
+ new OperationOutcome.OperationOutcomeIssueComponent().setSeverity(OperationOutcome.IssueSeverity.WARNING));
+ Assertions.assertFalse(FhirRequestBuilder.hasError(outcome), "Error check triggered unexpectedly.");
+ }
+
+ @Test
+ @DisplayName("Test that getLocationHeader returns header for 'location'.")
+ void getLocationHeaderWhenOnlyLocationIsSet() {
+ final String expectedLocationHeader = "location_header_value";
+ Iterable headers = List.of(new HTTPHeader(FhirRequestBuilder.LOCATION_HEADER, expectedLocationHeader));
+ Assertions.assertEquals(expectedLocationHeader, FhirRequestBuilder.getLocationHeader(headers));
+ }
+
+ @Test
+ @DisplayName("Test that getLocationHeader returns header for 'content-location'.")
+ void getLocationHeaderWhenOnlyContentLocationIsSet() {
+ final String expectedContentLocationHeader = "content_location_header_value";
+ Iterable headers = List.of(new HTTPHeader(FhirRequestBuilder.CONTENT_LOCATION_HEADER, expectedContentLocationHeader));
+ Assertions.assertEquals(expectedContentLocationHeader, FhirRequestBuilder.getLocationHeader(headers));
+ }
+
+ @Test
+ @DisplayName("Test that getLocationHeader returns 'location' header when both 'location' and 'content-location' are set.")
+ void getLocationHeaderWhenLocationAndContentLocationAreSet() {
+ final String expectedLocationHeader = "location_header_value";
+ final String expectedContentLocationHeader = "content_location_header_value";
+ Iterable headers = List.of(
+ new HTTPHeader(FhirRequestBuilder.LOCATION_HEADER, expectedLocationHeader),
+ new HTTPHeader(FhirRequestBuilder.CONTENT_LOCATION_HEADER, expectedContentLocationHeader)
+ );
+ Assertions.assertEquals(expectedLocationHeader, FhirRequestBuilder.getLocationHeader(headers));
+ }
+
+ @Test
+ @DisplayName("Test that getLocationHeader returns null when no location available.")
+ void getLocationHeaderWhenNoLocationSet() {
+
+ Assertions.assertNull(FhirRequestBuilder.getLocationHeader(Collections.emptyList()));
+ }
+}
diff --git a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilder.java b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilder.java
index 6fa69e354..b0b2e94bb 100644
--- a/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilder.java
+++ b/org.hl7.fhir.r4b/src/main/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilder.java
@@ -8,7 +8,7 @@ import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
-import okhttp3.*;
+
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.r4b.formats.IParser;
import org.hl7.fhir.r4b.formats.JsonParser;
@@ -32,10 +32,7 @@ public class FhirRequestBuilder {
protected static final String LOCATION_HEADER = "location";
protected static final String CONTENT_LOCATION_HEADER = "content-location";
protected static final String DEFAULT_CHARSET = "UTF-8";
- /**
- * The singleton instance of the HttpClient, used for all requests.
- */
- //private static OkHttpClient okHttpClient;
+
private final HTTPRequest httpRequest;
private String resourceFormat = null;
private Iterable headers = null;
@@ -65,11 +62,11 @@ public class FhirRequestBuilder {
/**
* Adds necessary default headers, formatting headers, and any passed in
- * {@link Headers} to the passed in {@link okhttp3.Request.Builder}
+ * {@link HTTPHeader} to the passed in {@link okhttp3.Request.Builder}
*
* @param request {@link okhttp3.Request.Builder} to add headers to.
* @param format Expected {@link Resource} format.
- * @param headers Any additional {@link Headers} to add to the request.
+ * @param headers Any additional {@link HTTPHeader} to add to the request.
*/
protected static HTTPRequest formatHeaders(HTTPRequest request, String format, Iterable headers) {
List allHeaders = new ArrayList<>();
@@ -92,17 +89,6 @@ public class FhirRequestBuilder {
return headers;
}
- /**
- * Iterates through the passed in {@link Headers} and adds them to the provided
- * {@link Request.Builder}.
- *
- * @param request {@link Request.Builder} to add headers to.
- * @param headers {@link Headers} to add to request.
- */
- protected static void addHeaders(Request.Builder request, Iterable headers) {
- headers.forEach(header -> request.addHeader(header.getName(), header.getValue()));
- }
-
/**
* Returns true if any of the
* {@link org.hl7.fhir.r4b.model.OperationOutcome.OperationOutcomeIssueComponent}
@@ -144,53 +130,6 @@ public class FhirRequestBuilder {
return new ManagedFhirWebAccessBuilder("hapi-fhir-tooling-client", null).withRetries(retryCount).withTimeout(timeout, timeoutUnit).withLogger(logger);
}
- /**
- * We only ever want to have one copy of the HttpClient kicking around at any
- * given time. If we need to make changes to any configuration, such as proxy
- * settings, timeout, caches, etc, we can do a per-call configuration through
- * the {@link OkHttpClient#newBuilder()} method. That will return a builder that
- * shares the same connection pool, dispatcher, and configuration with the
- * original client.
- *
- * The {@link OkHttpClient} uses the proxy auth properties set in the current
- * system properties. The reason we don't set the proxy address and
- * authentication explicitly, is due to the fact that this class is often used
- * in conjunction with other http client tools which rely on the
- * system.properties settings to determine proxy settings. It's easier to keep
- * the method consistent across the board. ...for now.
- *
- * @return {@link OkHttpClient} instance
- */
- /*FIXME remove after refactor
- protected OkHttpClient getHttpClient() {
- if (okHttpClient == null) {
- okHttpClient = new OkHttpClient();
- }
-
- Authenticator proxyAuthenticator = getAuthenticator();
-
- OkHttpClient.Builder builder = okHttpClient.newBuilder();
- if (logger != null)
- builder.addInterceptor(logger);
- builder.addInterceptor(new RetryInterceptor(retryCount));
-
- return builder.connectTimeout(timeout, timeoutUnit).writeTimeout(timeout, timeoutUnit)
- .readTimeout(timeout, timeoutUnit).proxyAuthenticator(proxyAuthenticator).build();
- }
-*/
- @Nonnull
- private static Authenticator getAuthenticator() {
- return (route, response) -> {
- final String httpProxyUser = System.getProperty(HTTP_PROXY_USER);
- final String httpProxyPass = System.getProperty(HTTP_PROXY_PASS);
- if (httpProxyUser != null && httpProxyPass != null) {
- String credential = Credentials.basic(httpProxyUser, httpProxyPass);
- return response.request().newBuilder().header(HEADER_PROXY_AUTH, credential).build();
- }
- return response.request().newBuilder().build();
- };
- }
-
public FhirRequestBuilder withResourceFormat(String resourceFormat) {
this.resourceFormat = resourceFormat;
return this;
diff --git a/org.hl7.fhir.r4b/src/test/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilderTest.java b/org.hl7.fhir.r4b/src/test/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilderTest.java
index b588e331e..a1004d6df 100644
--- a/org.hl7.fhir.r4b/src/test/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilderTest.java
+++ b/org.hl7.fhir.r4b/src/test/java/org/hl7/fhir/r4b/utils/client/network/FhirRequestBuilderTest.java
@@ -1,6 +1,6 @@
package org.hl7.fhir.r4b.utils.client.network;
-import okhttp3.Request;
+
import org.hl7.fhir.r4b.model.OperationOutcome;
import org.hl7.fhir.utilities.http.HTTPHeader;
import org.hl7.fhir.utilities.http.HTTPHeaderUtil;
@@ -49,31 +49,6 @@ class FhirRequestBuilderTest {
"Content-Type header not populated with expected value \"" + testFormat + ";charset=" + FhirRequestBuilder.DEFAULT_CHARSET + "\".");
}
- @Test
- @DisplayName("Test a list of provided headers are added correctly.")
- void addHeaders() {
- String headerName1 = "headerName1";
- String headerValue1 = "headerValue1";
- String headerName2 = "headerName2";
- String headerValue2 = "headerValue2";
-
- List headers = List.of(
- new HTTPHeader(headerName1, headerValue1),
- new HTTPHeader(headerName2, headerValue2)
- );
-
- Request.Builder request = new Request.Builder().url("http://www.google.com");
- FhirRequestBuilder.addHeaders(request, headers);
-
- Map> headersMap = request.build().headers().toMultimap();
- Assertions.assertNotNull(headersMap.get(headerName1), headerName1 + " header null.");
- Assertions.assertEquals(headerValue1, headersMap.get(headerName1).get(0),
- headerName1 + " header not populated with expected value " + headerValue1 + ".");
- Assertions.assertNotNull(headersMap.get(headerName2), headerName2 + " header null.");
- Assertions.assertEquals(headerValue2, headersMap.get(headerName2).get(0),
- headerName2 + " header not populated with expected value " + headerValue2 + ".");
- }
-
@Test
@DisplayName("Test that FATAL issue severity triggers error.")
void hasErrorTestFatal() {
diff --git a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilder.java b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilder.java
index b39519e6b..e42b85793 100644
--- a/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilder.java
+++ b/org.hl7.fhir.r5/src/main/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilder.java
@@ -5,7 +5,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
-import okhttp3.*;
+
import org.apache.commons.lang3.StringUtils;
import org.hl7.fhir.r5.formats.IParser;
import org.hl7.fhir.r5.formats.JsonParser;
@@ -62,12 +62,12 @@ public class FhirRequestBuilder {
}
/**
- * Adds necessary default headers, formatting headers, and any passed in {@link Headers} to the passed in
- * {@link Request.Builder}
+ * Adds necessary default headers, formatting headers, and any passed in {@link HTTPHeader}s to the passed in
+ * {@link HTTPRequest}
*
- * @param request {@link Request.Builder} to add headers to.
+ * @param request {@link HTTPRequest} to add headers to.
* @param format Expected {@link Resource} format.
- * @param headers Any additional {@link Headers} to add to the request.
+ * @param headers Any additional {@link HTTPHeader}s to add to the request.
*/
protected static HTTPRequest formatHeaders(HTTPRequest request, String format, Iterable headers) {
List allHeaders = new ArrayList<>();
@@ -84,7 +84,7 @@ public class FhirRequestBuilder {
/**
* Adds necessary headers for the given resource format provided.
*
- * @param httpRequest {@link Request.Builder} to add default headers to.
+ * @param httpRequest {@link HTTPRequest} to add default headers to.
*/
protected static Iterable getResourceFormatHeaders(HTTPRequest httpRequest, String format) {
List headers = new ArrayList<>();
@@ -98,16 +98,6 @@ public class FhirRequestBuilder {
return headers;
}
- /**
- * Iterates through the passed in {@link Headers} and adds them to the provided {@link Request.Builder}.
- *
- * @param request {@link Request.Builder} to add headers to.
- * @param headers {@link Headers} to add to request.
- */
- protected static void addHeaders(Request.Builder request, Iterable headers) {
- headers.forEach(header -> request.addHeader(header.getName(), header.getValue()));
- }
-
/**
* Returns true if any of the {@link OperationOutcome.OperationOutcomeIssueComponent} within the
* provided {@link OperationOutcome} have an {@link OperationOutcome.IssueSeverity} of
diff --git a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilderTest.java b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilderTest.java
index c03c16bc1..e7e323528 100644
--- a/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilderTest.java
+++ b/org.hl7.fhir.r5/src/test/java/org/hl7/fhir/r5/utils/client/network/FhirRequestBuilderTest.java
@@ -13,8 +13,6 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import okhttp3.Request;
-
class FhirRequestBuilderTest {
@Test
@@ -67,7 +65,7 @@ class FhirRequestBuilderTest {
new HTTPHeader(headerName2, headerValue2)
);
- Request.Builder request = new Request.Builder().url("http://www.google.com");
+ HTTPRequest request = new HTTPRequest().withUrl("http://www.google.com");
headers.forEach(header -> request.addHeader(header.getName(), header.getValue()));
Map> headersMap = request.build().headers().toMultimap();