Skip to content

Commit a691620

Browse files
committed
Make HTTP headers related methods accept CharSequence names and Object values, close AsyncHttpClient#1307
1 parent 468b6f1 commit a691620

File tree

6 files changed

+24
-22
lines changed

6 files changed

+24
-22
lines changed

client/src/main/java/org/asynchttpclient/RequestBuilderBase.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import static org.asynchttpclient.util.HttpUtils.*;
1919
import static org.asynchttpclient.util.MiscUtils.isNonEmpty;
2020
import io.netty.handler.codec.http.DefaultHttpHeaders;
21+
import io.netty.handler.codec.http.HttpHeaderNames;
2122
import io.netty.handler.codec.http.HttpHeaders;
2223
import io.netty.resolver.DefaultNameResolver;
2324
import io.netty.resolver.NameResolver;
@@ -185,7 +186,7 @@ public T clearHeaders() {
185186
* @param value header value to set
186187
* @return {@code this}
187188
*/
188-
public T setHeader(CharSequence name, String value) {
189+
public T setHeader(CharSequence name, Object value) {
189190
this.headers.set(name, value);
190191
return asDerivedType();
191192
}
@@ -197,7 +198,7 @@ public T setHeader(CharSequence name, String value) {
197198
* @param values {@code Iterable} with multiple header values to set
198199
* @return {@code this}
199200
*/
200-
public T setHeader(CharSequence name, Iterable<String> values) {
201+
public T setHeader(CharSequence name, Iterable<?> values) {
201202
this.headers.set(name, values);
202203
return asDerivedType();
203204
}
@@ -210,7 +211,7 @@ public T setHeader(CharSequence name, Iterable<String> values) {
210211
* @param value header value to add
211212
* @return {@code this}
212213
*/
213-
public T addHeader(CharSequence name, String value) {
214+
public T addHeader(CharSequence name, Object value) {
214215
if (value == null) {
215216
LOGGER.warn("Value was null, set to \"\"");
216217
value = "";
@@ -228,7 +229,7 @@ public T addHeader(CharSequence name, String value) {
228229
* @param values {@code Iterable} with multiple header values to add
229230
* @return {@code}
230231
*/
231-
public T addHeader(CharSequence name, Iterable<String> values) {
232+
public T addHeader(CharSequence name, Iterable<?> values) {
232233
this.headers.add(name, values);
233234
return asDerivedType();
234235
}
@@ -248,7 +249,7 @@ public T setHeaders(HttpHeaders headers) {
248249
* @param headers map of header names as the map keys and header values {@link Iterable} as the map values
249250
* @return {@code this}
250251
*/
251-
public T setHeaders(Map<String, ? extends Iterable<String>> headers) {
252+
public T setHeaders(Map<CharSequence, ? extends Iterable<?>> headers) {
252253
clearHeaders();
253254
if (headers != null) {
254255
headers.forEach((name, values) -> this.headers.add(name, values));
@@ -263,7 +264,7 @@ public T setHeaders(Map<String, ? extends Iterable<String>> headers) {
263264
* @param headers map of header names as the map keys and header values as the map values
264265
* @return {@code this}
265266
*/
266-
public T setSingleHeaders(Map<String, String> headers) {
267+
public T setSingleHeaders(Map<CharSequence, ?> headers) {
267268
clearHeaders();
268269
if (headers != null) {
269270
headers.forEach((name, value) -> this.headers.add(name, value));
@@ -559,7 +560,7 @@ private RequestBuilderBase<?> executeSignatureCalculator() {
559560
private Charset computeCharset() {
560561
if (this.charset == null) {
561562
try {
562-
final String contentType = this.headers.get(HttpHeaders.Names.CONTENT_TYPE);
563+
final String contentType = this.headers.get(HttpHeaderNames.CONTENT_TYPE);
563564
if (contentType != null) {
564565
final Charset charset = parseCharset(contentType);
565566
if (charset != null) {

client/src/main/java/org/asynchttpclient/Response.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,15 @@ public interface Response {
101101
* @param name the header name
102102
* @return the first response header value
103103
*/
104-
String getHeader(String name);
104+
String getHeader(CharSequence name);
105105

106106
/**
107107
* Return a {@link List} of the response header value.
108108
*
109109
* @param name the header name
110110
* @return the response header value
111111
*/
112-
List<String> getHeaders(String name);
112+
List<String> getHeaders(CharSequence name);
113113

114114
HttpHeaders getHeaders();
115115

client/src/main/java/org/asynchttpclient/netty/NettyResponse.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
*/
1414
package org.asynchttpclient.netty;
1515

16-
import static io.netty.handler.codec.http.HttpHeaders.Names.*;
16+
import static io.netty.handler.codec.http.HttpHeaderNames.*;
1717
import static org.asynchttpclient.util.HttpUtils.*;
1818
import static org.asynchttpclient.util.MiscUtils.isNonEmpty;
19+
import io.netty.handler.codec.http.EmptyHttpHeaders;
1920
import io.netty.handler.codec.http.HttpHeaders;
2021

2122
import java.io.ByteArrayInputStream;
@@ -106,18 +107,18 @@ public final String getContentType() {
106107
}
107108

108109
@Override
109-
public final String getHeader(String name) {
110+
public final String getHeader(CharSequence name) {
110111
return headers != null ? getHeaders().get(name) : null;
111112
}
112113

113114
@Override
114-
public final List<String> getHeaders(String name) {
115+
public final List<String> getHeaders(CharSequence name) {
115116
return headers != null ? getHeaders().getAll(name) : Collections.<String> emptyList();
116117
}
117118

118119
@Override
119120
public final HttpHeaders getHeaders() {
120-
return headers != null ? headers.getHeaders() : HttpHeaders.EMPTY_HEADERS;
121+
return headers != null ? headers.getHeaders() : EmptyHttpHeaders.INSTANCE;
121122
}
122123

123124
@Override

client/src/main/java/org/asynchttpclient/webdav/WebDavResponse.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,11 @@ public String getContentType() {
7575
return response.getContentType();
7676
}
7777

78-
public String getHeader(String name) {
78+
public String getHeader(CharSequence name) {
7979
return response.getHeader(name);
8080
}
8181

82-
public List<String> getHeaders(String name) {
82+
public List<String> getHeaders(CharSequence name) {
8383
return response.getHeaders(name);
8484
}
8585

client/src/test/java/org/asynchttpclient/RequestBuilderTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void testSetHeaders() {
125125
RequestBuilder requestBuilder = new RequestBuilder();
126126
assertTrue(requestBuilder.headers.isEmpty(), "Headers should be empty by default.");
127127

128-
Map<String, Collection<String>> headers = new HashMap<>();
128+
Map<CharSequence, Collection<?>> headers = new HashMap<>();
129129
headers.put("Content-Type", Collections.singleton("application/json"));
130130
requestBuilder.setHeaders(headers);
131131
assertTrue(requestBuilder.headers.contains("Content-Type"), "headers set by setHeaders have not been set");

extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -391,17 +391,17 @@ public interface DerivedBuilder {
391391

392392
DerivedBuilder setFormParams(Map<String, List<String>> params);
393393

394-
DerivedBuilder setHeaders(Map<String, Collection<String>> headers);
394+
DerivedBuilder setHeaders(Map<CharSequence, Collection<?>> headers);
395395

396396
DerivedBuilder setHeaders(HttpHeaders headers);
397397

398-
DerivedBuilder setHeader(String name, String value);
398+
DerivedBuilder setHeader(CharSequence name, Object value);
399399

400400
DerivedBuilder addQueryParam(String name, String value);
401401

402402
DerivedBuilder addFormParam(String key, String value);
403403

404-
DerivedBuilder addHeader(String name, String value);
404+
DerivedBuilder addHeader(CharSequence name, Object value);
405405

406406
DerivedBuilder addCookie(Cookie cookie);
407407

@@ -451,7 +451,7 @@ public Builder addCookie(Cookie cookie) {
451451
return this;
452452
}
453453

454-
public Builder addHeader(String name, String value) {
454+
public Builder addHeader(CharSequence name, Object value) {
455455
requestBuilder.addHeader(name, value);
456456
return this;
457457
}
@@ -466,7 +466,7 @@ public Builder addQueryParam(String name, String value) {
466466
return this;
467467
}
468468

469-
public Builder setHeader(String name, String value) {
469+
public Builder setHeader(CharSequence name, Object value) {
470470
requestBuilder.setHeader(name, value);
471471
return this;
472472
}
@@ -476,7 +476,7 @@ public Builder setHeaders(HttpHeaders headers) {
476476
return this;
477477
}
478478

479-
public Builder setHeaders(Map<String, Collection<String>> headers) {
479+
public Builder setHeaders(Map<CharSequence, Collection<?>> headers) {
480480
requestBuilder.setHeaders(headers);
481481
return this;
482482
}

0 commit comments

Comments
 (0)