You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2020/08/10 12:57:09 UTC
[httpcomponents-client] 01/01: HTTPCLIENT-2103:
ManagedHttpClientConnectionFactory provides a fluent builder
This is an automated email from the ASF dual-hosted git repository.
olegk pushed a commit to branch 5.1.x
in repository https://gitbox.apache.org/repos/asf/httpcomponents-client.git
commit e8b3eec597d8506780638c5e9664687aefdeeba8
Author: Carter Kozak <ck...@apache.org>
AuthorDate: Tue Aug 4 15:06:34 2020 -0400
HTTPCLIENT-2103: ManagedHttpClientConnectionFactory provides a fluent builder
---
.../hc/client5/http/impl/classic/ProxyClient.java | 7 ++-
.../io/ManagedHttpClientConnectionFactory.java | 67 ++++++++++++++++++++++
2 files changed, 73 insertions(+), 1 deletion(-)
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
index ef7a5ea..fa01137 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/classic/ProxyClient.java
@@ -104,7 +104,12 @@ public class ProxyClient {
final CharCodingConfig charCodingConfig,
final RequestConfig requestConfig) {
super();
- this.connFactory = connFactory != null ? connFactory : new ManagedHttpClientConnectionFactory(h1Config, charCodingConfig, null, null);
+ this.connFactory = connFactory != null
+ ? connFactory
+ : ManagedHttpClientConnectionFactory.builder()
+ .http1Config(h1Config)
+ .charCodingConfig(charCodingConfig)
+ .build();
this.requestConfig = requestConfig != null ? requestConfig : RequestConfig.DEFAULT;
this.httpProcessor = new DefaultHttpProcessor(
new RequestTargetHost(), new RequestClientConnControl(), new RequestUserAgent());
diff --git a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/ManagedHttpClientConnectionFactory.java b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/ManagedHttpClientConnectionFactory.java
index 63ae378..cce30ca 100644
--- a/httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/ManagedHttpClientConnectionFactory.java
+++ b/httpclient5/src/main/java/org/apache/hc/client5/http/impl/io/ManagedHttpClientConnectionFactory.java
@@ -139,4 +139,71 @@ public class ManagedHttpClientConnectionFactory implements HttpConnectionFactory
return conn;
}
+ /**
+ * Create a new {@link Builder}.
+ *
+ * @since 5.1
+ */
+ public static Builder builder() {
+ return new Builder();
+ }
+
+ /**
+ * Builder for {@link ManagedHttpClientConnectionFactory}.
+ *
+ * @since 5.1
+ */
+ public static final class Builder {
+
+ private Http1Config http1Config;
+ private CharCodingConfig charCodingConfig;
+ private ContentLengthStrategy incomingContentLengthStrategy;
+ private ContentLengthStrategy outgoingContentLengthStrategy;
+ private HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory;
+ private HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory;
+
+ private Builder() {}
+
+ public Builder http1Config(final Http1Config http1Config) {
+ this.http1Config = http1Config;
+ return this;
+ }
+
+ public Builder charCodingConfig(final CharCodingConfig charCodingConfig) {
+ this.charCodingConfig = charCodingConfig;
+ return this;
+ }
+
+ public Builder incomingContentLengthStrategy(final ContentLengthStrategy incomingContentLengthStrategy) {
+ this.incomingContentLengthStrategy = incomingContentLengthStrategy;
+ return this;
+ }
+
+ public Builder outgoingContentLengthStrategy(final ContentLengthStrategy outgoingContentLengthStrategy) {
+ this.outgoingContentLengthStrategy = outgoingContentLengthStrategy;
+ return this;
+ }
+
+ public Builder requestWriterFactory(
+ final HttpMessageWriterFactory<ClassicHttpRequest> requestWriterFactory) {
+ this.requestWriterFactory = requestWriterFactory;
+ return this;
+ }
+
+ public Builder responseParserFactory(
+ final HttpMessageParserFactory<ClassicHttpResponse> responseParserFactory) {
+ this.responseParserFactory = responseParserFactory;
+ return this;
+ }
+
+ public ManagedHttpClientConnectionFactory build() {
+ return new ManagedHttpClientConnectionFactory(
+ http1Config,
+ charCodingConfig,
+ requestWriterFactory,
+ responseParserFactory,
+ incomingContentLengthStrategy,
+ outgoingContentLengthStrategy);
+ }
+ }
}