From d276636bee1a97c2ddb96359cbe3d9d739c18d44 Mon Sep 17 00:00:00 2001 From: Nils Breunese Date: Fri, 19 Oct 2018 14:22:36 +0200 Subject: [PATCH 1/2] Allow setting headers using a Map with a subclass of CharSequence (for instance String) as the key type --- .../org/asynchttpclient/RequestBuilderBase.java | 4 ++-- .../org/asynchttpclient/RequestBuilderTest.java | 15 ++++++++++++--- .../extras/simple/SimpleAsyncHttpClient.java | 4 ++-- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java b/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java index 4a8a9e4474..35c8145776 100644 --- a/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java +++ b/client/src/main/java/org/asynchttpclient/RequestBuilderBase.java @@ -267,7 +267,7 @@ public T setHeaders(HttpHeaders headers) { * @param headers map of header names as the map keys and header values {@link Iterable} as the map values * @return {@code this} */ - public T setHeaders(Map> headers) { + public T setHeaders(Map> headers) { clearHeaders(); if (headers != null) { headers.forEach((name, values) -> this.headers.add(name, values)); @@ -282,7 +282,7 @@ public T setHeaders(Map> headers) { * @param headers map of header names as the map keys and header values as the map values * @return {@code this} */ - public T setSingleHeaders(Map headers) { + public T setSingleHeaders(Map headers) { clearHeaders(); if (headers != null) { headers.forEach((name, value) -> this.headers.add(name, value)); diff --git a/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java b/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java index 8ffb9494f7..41fed53a4c 100644 --- a/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java +++ b/client/src/test/java/org/asynchttpclient/RequestBuilderTest.java @@ -20,10 +20,7 @@ import io.netty.handler.codec.http.cookie.DefaultCookie; import org.testng.annotations.Test; -import java.io.IOException; -import java.io.UnsupportedEncodingException; import java.util.*; -import java.util.concurrent.ExecutionException; import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Collections.singletonList; @@ -174,4 +171,16 @@ public void testSettingQueryParamsBeforeUrlShouldNotProduceNPE() { Request request = requestBuilder.build(); assertEquals(request.getUrl(), "http://localhost?key=value"); } + + @Test + public void testSettingHeadersUsingMapWithStringKeys() { + Map> headers = new HashMap<>(); + headers.put("X-Forwarded-For", singletonList("10.0.0.1")); + + RequestBuilder requestBuilder = new RequestBuilder(); + requestBuilder.setHeaders(headers); + requestBuilder.setUrl("http://localhost"); + Request request = requestBuilder.build(); + assertEquals(request.getHeaders().get("X-Forwarded-For"), "10.0.0.1"); + } } diff --git a/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java b/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java index b58658fb57..8d5bf18afe 100644 --- a/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java +++ b/extras/simple/src/main/java/org/asynchttpclient/extras/simple/SimpleAsyncHttpClient.java @@ -380,7 +380,7 @@ public interface DerivedBuilder { DerivedBuilder setFormParams(Map> params); - DerivedBuilder setHeaders(Map> headers); + DerivedBuilder setHeaders(Map> headers); DerivedBuilder setHeaders(HttpHeaders headers); @@ -465,7 +465,7 @@ public Builder setHeaders(HttpHeaders headers) { return this; } - public Builder setHeaders(Map> headers) { + public Builder setHeaders(Map> headers) { requestBuilder.setHeaders(headers); return this; } From 9197c67dc146eede3534a38c07970181ae1ddd08 Mon Sep 17 00:00:00 2001 From: Nils Breunese Date: Fri, 29 Nov 2019 13:42:38 +0100 Subject: [PATCH 2/2] Added async-http-client-bom --- .gitignore | 1 + README.md | 33 +++++++++++++--- bom/pom.xml | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++ pom.xml | 1 + 4 files changed, 138 insertions(+), 6 deletions(-) create mode 100644 bom/pom.xml diff --git a/.gitignore b/.gitignore index b023787595..d424b2597a 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,4 @@ test-output MANIFEST.MF work atlassian-ide-plugin.xml +/bom/.flattened-pom.xml diff --git a/README.md b/README.md index 218d72037e..a306c4937b 100644 --- a/README.md +++ b/README.md @@ -9,16 +9,37 @@ It's built on top of [Netty](https://github.com/netty/netty). It's currently com ## Installation -Binaries are deployed on Maven central: +Binaries are deployed on Maven Central. + +Import the AsyncHttpClient Bill of Materials (BOM) to add dependency management for AsyncHttpClient artifacts to your project: + +```xml + + + + org.asynchttpclient + async-http-client-bom + LATEST_VERSION + pom + import + + + +``` + +Add a dependency on the main AsyncHttpClient artifact: ```xml - - org.asynchttpclient - async-http-client - LATEST_VERSION - + + + org.asynchttpclient + async-http-client + + ``` +The `async-http-client-extras-*` and other modules can also be added without having to specify the version for each dependency, because they are all managed via the BOM. + ## Version AHC doesn't use SEMVER, and won't. diff --git a/bom/pom.xml b/bom/pom.xml new file mode 100644 index 0000000000..8abb186be7 --- /dev/null +++ b/bom/pom.xml @@ -0,0 +1,109 @@ + + + 4.0.0 + + + org.asynchttpclient + async-http-client-project + 2.10.5-SNAPSHOT + + + async-http-client-bom + pom + Asynchronous Http Client Bill of Materials (BOM) + Importing this BOM will provide dependency management for all AsyncHttpClient artifacts. + http://github.com/AsyncHttpClient/async-http-client/bom + + + + + org.asynchttpclient + async-http-client + ${project.version} + + + org.asynchttpclient + async-http-client-example + ${project.version} + + + org.asynchttpclient + async-http-client-extras-guava + ${project.version} + + + org.asynchttpclient + async-http-client-extras-jdeferred + ${project.version} + + + org.asynchttpclient + async-http-client-extras-registry + ${project.version} + + + org.asynchttpclient + async-http-client-extras-retrofit2 + ${project.version} + + + org.asynchttpclient + async-http-client-extras-rxjava + ${project.version} + + + org.asynchttpclient + async-http-client-extras-rxjava2 + ${project.version} + + + org.asynchttpclient + async-http-client-extras-simple + ${project.version} + + + org.asynchttpclient + async-http-client-extras-typesafe-config + ${project.version} + + + org.asynchttpclient + async-http-client-netty-utils + ${project.version} + + + + + + + + + org.codehaus.mojo + flatten-maven-plugin + 1.1.0 + false + + + flatten + process-resources + + flatten + + + bom + + remove + remove + remove + remove + + + + + + + + diff --git a/pom.xml b/pom.xml index 152b365156..47709923e3 100644 --- a/pom.xml +++ b/pom.xml @@ -240,6 +240,7 @@ + bom netty-utils client extras