Skip to content

Commit e1f6371

Browse files
breunslandelle
authored andcommitted
Allow setting headers using a Map with a subclass of CharSequence (for instance String) as the key type (#1587)
1 parent e3bbad7 commit e1f6371

File tree

3 files changed

+16
-7
lines changed

3 files changed

+16
-7
lines changed

Diff for: client/src/main/java/org/asynchttpclient/RequestBuilderBase.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ public T setHeaders(HttpHeaders headers) {
267267
* @param headers map of header names as the map keys and header values {@link Iterable} as the map values
268268
* @return {@code this}
269269
*/
270-
public T setHeaders(Map<CharSequence, ? extends Iterable<?>> headers) {
270+
public T setHeaders(Map<? extends CharSequence, ? extends Iterable<?>> headers) {
271271
clearHeaders();
272272
if (headers != null) {
273273
headers.forEach((name, values) -> this.headers.add(name, values));
@@ -282,7 +282,7 @@ public T setHeaders(Map<CharSequence, ? extends Iterable<?>> headers) {
282282
* @param headers map of header names as the map keys and header values as the map values
283283
* @return {@code this}
284284
*/
285-
public T setSingleHeaders(Map<CharSequence, ?> headers) {
285+
public T setSingleHeaders(Map<? extends CharSequence, ?> headers) {
286286
clearHeaders();
287287
if (headers != null) {
288288
headers.forEach((name, value) -> this.headers.add(name, value));

Diff for: client/src/test/java/org/asynchttpclient/RequestBuilderTest.java

+12-3
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,7 @@
2020
import io.netty.handler.codec.http.cookie.DefaultCookie;
2121
import org.testng.annotations.Test;
2222

23-
import java.io.IOException;
24-
import java.io.UnsupportedEncodingException;
2523
import java.util.*;
26-
import java.util.concurrent.ExecutionException;
2724

2825
import static java.nio.charset.StandardCharsets.UTF_8;
2926
import static java.util.Collections.singletonList;
@@ -174,4 +171,16 @@ public void testSettingQueryParamsBeforeUrlShouldNotProduceNPE() {
174171
Request request = requestBuilder.build();
175172
assertEquals(request.getUrl(), "http://localhost?key=value");
176173
}
174+
175+
@Test
176+
public void testSettingHeadersUsingMapWithStringKeys() {
177+
Map<String, List<String>> headers = new HashMap<>();
178+
headers.put("X-Forwarded-For", singletonList("10.0.0.1"));
179+
180+
RequestBuilder requestBuilder = new RequestBuilder();
181+
requestBuilder.setHeaders(headers);
182+
requestBuilder.setUrl("http://localhost");
183+
Request request = requestBuilder.build();
184+
assertEquals(request.getHeaders().get("X-Forwarded-For"), "10.0.0.1");
185+
}
177186
}

Diff for: extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -380,7 +380,7 @@ public interface DerivedBuilder {
380380

381381
DerivedBuilder setFormParams(Map<String, List<String>> params);
382382

383-
DerivedBuilder setHeaders(Map<CharSequence, Collection<?>> headers);
383+
DerivedBuilder setHeaders(Map<? extends CharSequence, Collection<?>> headers);
384384

385385
DerivedBuilder setHeaders(HttpHeaders headers);
386386

@@ -465,7 +465,7 @@ public Builder setHeaders(HttpHeaders headers) {
465465
return this;
466466
}
467467

468-
public Builder setHeaders(Map<CharSequence, Collection<?>> headers) {
468+
public Builder setHeaders(Map<? extends CharSequence, Collection<?>> headers) {
469469
requestBuilder.setHeaders(headers);
470470
return this;
471471
}

0 commit comments

Comments
 (0)