HTTPASYNC-75: added setter for NHttpClientEventHandler to HttpAsyncClientBuilder
Contributed by Dmitry Potapov <potapov.d at gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpasyncclient/trunk@1586763 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java
index 5c5381f..7ee0202 100644
--- a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java
+++ b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java
@@ -28,6 +28,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.http.nio.NHttpClientEventHandler;
import org.apache.http.nio.conn.NHttpClientConnectionManager;
import org.apache.http.nio.reactor.IOEventDispatch;
@@ -48,22 +49,23 @@
public CloseableHttpAsyncClientBase(
final NHttpClientConnectionManager connmgr,
- final ThreadFactory threadFactory) {
+ final ThreadFactory threadFactory,
+ final NHttpClientEventHandler handler) {
super();
this.connmgr = connmgr;
this.reactorThread = threadFactory.newThread(new Runnable() {
public void run() {
- doExecute();
+ doExecute(handler);
}
});
this.status = new AtomicReference<Status>(Status.INACTIVE);
}
- private void doExecute() {
+ private void doExecute(final NHttpClientEventHandler handler) {
try {
- final IOEventDispatch ioEventDispatch = new InternalIODispatch();
+ final IOEventDispatch ioEventDispatch = new InternalIODispatch(handler);
this.connmgr.execute(ioEventDispatch);
} catch (final Exception ex) {
this.log.error("I/O reactor terminated abnormally", ex);
diff --git a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java
index 638fd36..71e8434 100644
--- a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java
+++ b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java
@@ -92,6 +92,7 @@
import org.apache.http.impl.cookie.RFC2965SpecFactory;
import org.apache.http.impl.nio.conn.PoolingNHttpClientConnectionManager;
import org.apache.http.impl.nio.reactor.IOReactorConfig;
+import org.apache.http.nio.NHttpClientEventHandler;
import org.apache.http.nio.conn.NHttpClientConnectionManager;
import org.apache.http.nio.conn.NoopIOSessionStrategy;
import org.apache.http.nio.conn.SchemeIOSessionStrategy;
@@ -181,6 +182,7 @@
private RequestConfig defaultRequestConfig;
private ThreadFactory threadFactory;
+ private NHttpClientEventHandler eventHandler;
private boolean systemProperties;
private boolean cookieManagementDisabled;
@@ -531,6 +533,16 @@
}
/**
+ * Assigns {@link NHttpClientEventHandler} instance.
+ *
+ * @since 4.1
+ */
+ public final HttpAsyncClientBuilder setEventHandler(final NHttpClientEventHandler eventHandler) {
+ this.eventHandler = eventHandler;
+ return this;
+ }
+
+ /**
* Disables connection state tracking.
*/
public final HttpAsyncClientBuilder disableConnectionState() {
@@ -779,6 +791,11 @@
threadFactory = Executors.defaultThreadFactory();
}
+ NHttpClientEventHandler eventHandler = this.eventHandler;
+ if (eventHandler == null) {
+ eventHandler = new LoggingAsyncRequestExecutor();
+ }
+
final MainClientExec exec = new MainClientExec(
connManager,
httpprocessor,
@@ -798,7 +815,8 @@
defaultCookieStore,
defaultCredentialsProvider,
defaultRequestConfig,
- threadFactory);
+ threadFactory,
+ eventHandler);
}
}
diff --git a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java
index fac96d3..8e6dc10 100644
--- a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java
+++ b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java
@@ -41,6 +41,7 @@
import org.apache.http.concurrent.FutureCallback;
import org.apache.http.config.Lookup;
import org.apache.http.cookie.CookieSpecProvider;
+import org.apache.http.nio.NHttpClientEventHandler;
import org.apache.http.nio.conn.NHttpClientConnectionManager;
import org.apache.http.nio.protocol.HttpAsyncRequestProducer;
import org.apache.http.nio.protocol.HttpAsyncResponseConsumer;
@@ -68,8 +69,9 @@
final CookieStore cookieStore,
final CredentialsProvider credentialsProvider,
final RequestConfig defaultConfig,
- final ThreadFactory threadFactory) {
- super(connmgr, threadFactory);
+ final ThreadFactory threadFactory,
+ final NHttpClientEventHandler eventHandler) {
+ super(connmgr, threadFactory, eventHandler);
this.connmgr = connmgr;
this.exec = exec;
this.cookieSpecRegistry = cookieSpecRegistry;
diff --git a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java
index 0c4fd44..cfdd4dc 100644
--- a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java
+++ b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java
@@ -38,9 +38,9 @@
private final NHttpClientEventHandler handler;
- public InternalIODispatch() {
+ public InternalIODispatch(final NHttpClientEventHandler handler) {
super();
- this.handler = new LoggingAsyncRequestExecutor();
+ this.handler = handler;
}
@Override
diff --git a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java
index 0174046..ca5a2f2 100644
--- a/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java
+++ b/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java
@@ -38,6 +38,7 @@
import org.apache.http.concurrent.FutureCallback;
import org.apache.http.impl.DefaultConnectionReuseStrategy;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
+import org.apache.http.nio.NHttpClientEventHandler;
import org.apache.http.nio.conn.NHttpClientConnectionManager;
import org.apache.http.nio.protocol.HttpAsyncRequestProducer;
import org.apache.http.nio.protocol.HttpAsyncResponseConsumer;
@@ -60,8 +61,9 @@
public MinimalHttpAsyncClient(
final NHttpClientConnectionManager connmgr,
- final ThreadFactory threadFactory) {
- super(connmgr, threadFactory);
+ final ThreadFactory threadFactory,
+ final NHttpClientEventHandler eventHandler) {
+ super(connmgr, threadFactory, eventHandler);
this.connmgr = connmgr;
final HttpProcessor httpProcessor = new ImmutableHttpProcessor(new RequestContent(),
new RequestTargetHost(),
@@ -76,6 +78,12 @@
}
public MinimalHttpAsyncClient(
+ final NHttpClientConnectionManager connmgr,
+ final ThreadFactory threadFactory) {
+ this(connmgr, threadFactory, new LoggingAsyncRequestExecutor());
+ }
+
+ public MinimalHttpAsyncClient(
final NHttpClientConnectionManager connmgr) {
this(connmgr, Executors.defaultThreadFactory());
}
diff --git a/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java b/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java
index 65c3166..a774715 100644
--- a/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java
+++ b/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java
@@ -28,7 +28,6 @@
package org.apache.http.localserver;
import java.io.IOException;
-import java.io.UnsupportedEncodingException;
import java.util.Locale;
import org.apache.http.Consts;