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 2014/04/11 21:54:25 UTC

svn commit: r1586763 - in /httpcomponents/httpasyncclient/trunk/httpasyncclient/src: main/java/org/apache/http/impl/nio/client/ test/java/org/apache/http/localserver/

Author: olegk
Date: Fri Apr 11 19:54:25 2014
New Revision: 1586763

URL: http://svn.apache.org/r1586763
Log:
HTTPASYNC-75: added setter for NHttpClientEventHandler to HttpAsyncClientBuilder
Contributed by Dmitry Potapov <potapov.d at gmail.com>

Modified:
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java
    httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/CloseableHttpAsyncClientBase.java Fri Apr 11 19:54:25 2014
@@ -28,6 +28,7 @@ package org.apache.http.impl.nio.client;
 
 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 @@ abstract class CloseableHttpAsyncClientB
 
     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);

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/HttpAsyncClientBuilder.java Fri Apr 11 19:54:25 2014
@@ -92,6 +92,7 @@ import org.apache.http.impl.cookie.RFC21
 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 @@ public class HttpAsyncClientBuilder {
     private RequestConfig defaultRequestConfig;
 
     private ThreadFactory threadFactory;
+    private NHttpClientEventHandler eventHandler;
 
     private boolean systemProperties;
     private boolean cookieManagementDisabled;
@@ -531,6 +533,16 @@ public class HttpAsyncClientBuilder {
     }
 
     /**
+     * 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 @@ public class HttpAsyncClientBuilder {
             threadFactory = Executors.defaultThreadFactory();
         }
 
+        NHttpClientEventHandler eventHandler = this.eventHandler;
+        if (eventHandler == null) {
+            eventHandler = new LoggingAsyncRequestExecutor();
+        }
+
         final MainClientExec exec = new MainClientExec(
             connManager,
             httpprocessor,
@@ -798,7 +815,8 @@ public class HttpAsyncClientBuilder {
             defaultCookieStore,
             defaultCredentialsProvider,
             defaultRequestConfig,
-            threadFactory);
+            threadFactory,
+            eventHandler);
     }
 
 }

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalHttpAsyncClient.java Fri Apr 11 19:54:25 2014
@@ -41,6 +41,7 @@ import org.apache.http.concurrent.BasicF
 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 @@ class InternalHttpAsyncClient extends Cl
             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;

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/InternalIODispatch.java Fri Apr 11 19:54:25 2014
@@ -38,9 +38,9 @@ class InternalIODispatch extends Abstrac
 
     private final NHttpClientEventHandler handler;
 
-    public InternalIODispatch() {
+    public InternalIODispatch(final NHttpClientEventHandler handler) {
         super();
-        this.handler = new LoggingAsyncRequestExecutor();
+        this.handler = handler;
     }
 
     @Override

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/MinimalHttpAsyncClient.java Fri Apr 11 19:54:25 2014
@@ -38,6 +38,7 @@ import org.apache.http.concurrent.BasicF
 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 @@ class MinimalHttpAsyncClient extends Clo
 
     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 @@ class MinimalHttpAsyncClient extends Clo
     }
 
     public MinimalHttpAsyncClient(
+            final NHttpClientConnectionManager connmgr,
+            final ThreadFactory threadFactory) {
+        this(connmgr, threadFactory, new LoggingAsyncRequestExecutor());
+    }
+
+    public MinimalHttpAsyncClient(
             final NHttpClientConnectionManager connmgr) {
         this(connmgr, Executors.defaultThreadFactory());
     }

Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java?rev=1586763&r1=1586762&r2=1586763&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/localserver/RandomHandler.java Fri Apr 11 19:54:25 2014
@@ -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;