From ee27b9411a98a7c6ca1ebbbed0e579ca478fad78 Mon Sep 17 00:00:00 2001 From: Kyle Thomson Date: Tue, 7 Nov 2017 19:09:36 -0800 Subject: [PATCH] Making it easier to supply async http configuration. --- .../core/client/builder/AsyncClientBuilder.java | 17 +++++++++++++++++ .../builder/ClientAsyncHttpConfiguration.java | 1 + .../nio/netty/NettySdkHttpClientFactory.java | 11 +++++++++++ 3 files changed, 29 insertions(+) diff --git a/core/src/main/java/software/amazon/awssdk/core/client/builder/AsyncClientBuilder.java b/core/src/main/java/software/amazon/awssdk/core/client/builder/AsyncClientBuilder.java index 0459de269bfd..0647278e14a8 100644 --- a/core/src/main/java/software/amazon/awssdk/core/client/builder/AsyncClientBuilder.java +++ b/core/src/main/java/software/amazon/awssdk/core/client/builder/AsyncClientBuilder.java @@ -17,6 +17,7 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.ScheduledExecutorService; +import java.util.function.Consumer; /** * This includes required and optional override configuration required by every async client builder. An instance can be acquired @@ -49,4 +50,20 @@ public interface AsyncClientBuilder, C> * finished with it, the SDK will only close HTTP clients that it creates. */ B asyncHttpConfiguration(ClientAsyncHttpConfiguration asyncHttpConfiguration); + + /** + * Configures the HTTP client used by the service client. + * + * Allows just specifying the builder parameters without having to instantiate a builder and call build on it. + * For example + * + *

+     *     builder().asyncHttpConfiguration(b -> b.httpClient(client));
+     * 
+ * + * @see #asyncHttpConfiguration(ClientAsyncHttpConfiguration) + */ + default B asyncHttpConfiguration(Consumer asyncHttpConfiguration) { + return asyncHttpConfiguration(ClientAsyncHttpConfiguration.builder().apply(asyncHttpConfiguration).build()); + } } diff --git a/core/src/main/java/software/amazon/awssdk/core/client/builder/ClientAsyncHttpConfiguration.java b/core/src/main/java/software/amazon/awssdk/core/client/builder/ClientAsyncHttpConfiguration.java index 46ff56f1fe96..c6711c698649 100644 --- a/core/src/main/java/software/amazon/awssdk/core/client/builder/ClientAsyncHttpConfiguration.java +++ b/core/src/main/java/software/amazon/awssdk/core/client/builder/ClientAsyncHttpConfiguration.java @@ -124,6 +124,7 @@ public interface Builder extends CopyableBuilder httpClientFactory(SdkAsyncHttpClientFactory sdkClientFactory); + } /** diff --git a/http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/NettySdkHttpClientFactory.java b/http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/NettySdkHttpClientFactory.java index f92f60f900a9..ffaa395406ab 100644 --- a/http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/NettySdkHttpClientFactory.java +++ b/http-clients/netty-nio-client/src/main/java/software/amazon/awssdk/http/nio/netty/NettySdkHttpClientFactory.java @@ -22,6 +22,7 @@ import io.netty.channel.EventLoopGroup; import java.time.Duration; import java.util.Optional; +import java.util.function.Consumer; import software.amazon.awssdk.annotations.Immutable; import software.amazon.awssdk.http.SdkHttpConfigurationOption; import software.amazon.awssdk.http.async.SdkAsyncHttpClient; @@ -169,6 +170,16 @@ public interface Builder extends CopyableBuilder eventLoopGroupConfiguration) { + return eventLoopGroupConfiguration(EventLoopGroupConfiguration.builder().apply(eventLoopGroupConfiguration).build()); + } } private static final class DefaultBuilder implements Builder {