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 2011/12/01 18:20:37 UTC

svn commit: r1209158 [2/3] - in /httpcomponents/httpcore/trunk/httpcore-nio/src: examples/org/apache/http/examples/nio/ main/java/org/apache/http/impl/nio/ main/java/org/apache/http/nio/ main/java/org/apache/http/nio/protocol/ test/java/org/apache/http...

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncServiceHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncServiceHandler.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncServiceHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncServiceHandler.java Thu Dec  1 17:20:25 2011
@@ -49,7 +49,7 @@ import org.apache.http.nio.ContentDecode
 import org.apache.http.nio.ContentEncoder;
 import org.apache.http.nio.NHttpConnection;
 import org.apache.http.nio.NHttpServerConnection;
-import org.apache.http.nio.NHttpServiceHandler;
+import org.apache.http.nio.NHttpServerProtocolHandler;
 import org.apache.http.nio.entity.NStringEntity;
 import org.apache.http.params.DefaultedHttpParams;
 import org.apache.http.params.HttpParams;
@@ -62,7 +62,7 @@ import org.apache.http.protocol.HttpProc
  * @since 4.2
  */
 @Immutable // provided injected dependencies are immutable
-public class HttpAsyncServiceHandler implements NHttpServiceHandler {
+public class HttpAsyncServiceHandler implements NHttpServerProtocolHandler {
 
     static final String HTTP_EXCHANGE_STATE = "http.nio.http-exchange-state";
 
@@ -127,196 +127,183 @@ public class HttpAsyncServiceHandler imp
         }
     }
 
-    public void exception(final NHttpServerConnection conn, final HttpException httpex) {
+    public void exception(
+            final NHttpServerConnection conn, final Exception cause) {
         State state = ensureNotNull(getState(conn));
         if (state != null) {
-            handleProtocolFailure(conn, state, httpex);
-        } else {
-            shutdownConnection(conn);
-            onException(httpex);
-        }
-    }
-
-    public void exception(final NHttpServerConnection conn, final IOException ex) {
-        State state = getState(conn);
-        if (state != null) {
-            handleFailure(conn, state, ex);
+            closeHandlers(state, cause);
+            if (cause instanceof HttpException) {
+                if (conn.isResponseSubmitted() || state.getResponseState() != MessageState.READY) {
+                    // There is not much that we can do if a response
+                    // has already been submitted
+                    closeConnection(conn);
+                } else {
+                    HttpContext context = state.getContext();
+                    HttpAsyncResponseProducer responseProducer = handleException(cause, context);
+                    state.setResponseProducer(responseProducer);
+                    try {
+                        HttpResponse response = responseProducer.generateResponse();
+                        state.setResponse(response);
+                        commitFinalResponse(conn, state);
+                    } catch (Exception ex) {
+                        shutdownConnection(conn);
+                        closeHandlers(state);
+                        state.reset();
+                        if (ex instanceof RuntimeException) {
+                            throw (RuntimeException) ex;
+                        } else {
+                            log(ex);
+                        }
+                    }
+                }
+            } else {
+                shutdownConnection(conn);
+                state.reset();
+            }
         } else {
             shutdownConnection(conn);
-            onException(ex);
+            log(cause);
         }
     }
 
-    public void requestReceived(final NHttpServerConnection conn) {
+    public void requestReceived(
+            final NHttpServerConnection conn) throws IOException, HttpException {
         State state = ensureNotNull(getState(conn));
-        try {
-            HttpRequest request = conn.getHttpRequest();
-            HttpContext context = state.getContext();
-            request.setParams(new DefaultedHttpParams(request.getParams(), this.params));
-
-            context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
-            context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
-            this.httpProcessor.process(request, context);
-
-            state.setRequest(request);
-            HttpAsyncRequestHandler<Object> requestHandler = getRequestHandler(request);
-            state.setRequestHandler(requestHandler);
-            HttpAsyncRequestConsumer<Object> consumer = requestHandler.processRequest(request, context);
-            state.setRequestConsumer(consumer);
-
-            consumer.requestReceived(request);
-
-            if (request instanceof HttpEntityEnclosingRequest) {
-                if (((HttpEntityEnclosingRequest) request).expectContinue()) {
-                    state.setRequestState(MessageState.ACK_EXPECTED);
-                    HttpResponse ack = this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_1,
-                            HttpStatus.SC_CONTINUE, context);
-                    if (this.expectationVerifier != null) {
-                        conn.suspendInput();
-                        HttpAsyncServiceExchange httpex = new Exchange(
-                                request, ack, state, conn);
-                        Cancellable asyncProcess = this.expectationVerifier.verify(httpex, context);
-                        state.setAsyncProcess(asyncProcess);
-                    } else {
-                        conn.submitResponse(ack);
-                        state.setRequestState(MessageState.BODY_STREAM);
-                    }
+        HttpRequest request = conn.getHttpRequest();
+        HttpContext context = state.getContext();
+        request.setParams(new DefaultedHttpParams(request.getParams(), this.params));
+
+        context.setAttribute(ExecutionContext.HTTP_REQUEST, request);
+        context.setAttribute(ExecutionContext.HTTP_CONNECTION, conn);
+        this.httpProcessor.process(request, context);
+
+        state.setRequest(request);
+        HttpAsyncRequestHandler<Object> requestHandler = getRequestHandler(request);
+        state.setRequestHandler(requestHandler);
+        HttpAsyncRequestConsumer<Object> consumer = requestHandler.processRequest(request, context);
+        state.setRequestConsumer(consumer);
+
+        consumer.requestReceived(request);
+
+        if (request instanceof HttpEntityEnclosingRequest) {
+            if (((HttpEntityEnclosingRequest) request).expectContinue()) {
+                state.setRequestState(MessageState.ACK_EXPECTED);
+                HttpResponse ack = this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_1,
+                        HttpStatus.SC_CONTINUE, context);
+                if (this.expectationVerifier != null) {
+                    conn.suspendInput();
+                    HttpAsyncServiceExchange httpex = new Exchange(
+                            request, ack, state, conn);
+                    Cancellable asyncProcess = this.expectationVerifier.verify(httpex, context);
+                    state.setAsyncProcess(asyncProcess);
                 } else {
+                    conn.submitResponse(ack);
                     state.setRequestState(MessageState.BODY_STREAM);
                 }
             } else {
-                // No request content is expected.
-                // Process request right away
-                conn.suspendInput();
-                processRequest(conn, state);
+                state.setRequestState(MessageState.BODY_STREAM);
             }
-        } catch (HttpException ex) {
-            handleProtocolFailure(conn, state, ex);
-        } catch (IOException ex) {
-            handleFailure(conn, state, ex);
-        } catch (RuntimeException ex) {
-            terminate(conn, state);
-            throw ex;
+        } else {
+            // No request content is expected.
+            // Process request right away
+            conn.suspendInput();
+            processRequest(conn, state);
         }
     }
 
-    public void inputReady(final NHttpServerConnection conn, final ContentDecoder decoder) {
+    public void inputReady(
+            final NHttpServerConnection conn,
+            final ContentDecoder decoder) throws IOException, HttpException {
         State state = ensureNotNull(getState(conn));
-        try {
-            HttpAsyncRequestConsumer<?> consumer = ensureNotNull(state.getRequestConsumer());
-            consumer.consumeContent(decoder, conn);
-            state.setRequestState(MessageState.BODY_STREAM);
-            if (decoder.isCompleted()) {
-                conn.suspendInput();
-                processRequest(conn, state);
-            }
-        } catch (HttpException ex) {
-            handleProtocolFailure(conn, state, ex);
-        } catch (IOException ex) {
-            handleFailure(conn, state, ex);
-        } catch (RuntimeException ex) {
-            terminate(conn, state);
-            throw ex;
+        HttpAsyncRequestConsumer<?> consumer = ensureNotNull(state.getRequestConsumer());
+        consumer.consumeContent(decoder, conn);
+        state.setRequestState(MessageState.BODY_STREAM);
+        if (decoder.isCompleted()) {
+            conn.suspendInput();
+            processRequest(conn, state);
         }
     }
 
-    public void responseReady(final NHttpServerConnection conn) {
+    public void responseReady(
+            final NHttpServerConnection conn) throws IOException, HttpException {
         State state = ensureNotNull(getState(conn));
-        try {
-            if (state.getResponse() != null) {
-                return;
-            }
-            HttpAsyncResponseProducer responseProducer = state.getResponseProducer();
-            if (responseProducer == null) {
-                return;
-            }
-            HttpContext context = state.getContext();
-            HttpResponse response = responseProducer.generateResponse();
-            int status = response.getStatusLine().getStatusCode();
-            if (state.getRequestState() == MessageState.ACK_EXPECTED) {
-                if (status == 100) {
-                    state.setResponseProducer(null);
-                    try {
-                        // Make sure 100 response has no entity
-                        response.setEntity(null);
-                        conn.requestInput();
-                        state.setRequestState(MessageState.BODY_STREAM);
-                        conn.submitResponse(response);
-                        responseProducer.responseCompleted(context);
-                    } finally {
-                        responseProducer.close();
-                    }
-                } else if (status >= 400) {
-                    conn.resetInput();
-                    state.setRequestState(MessageState.COMPLETED);
-                    state.setResponse(response);
-                    commitFinalResponse(conn, state);
-                } else {
-                    throw new HttpException("Invalid response: " + response.getStatusLine());
+        if (state.getResponse() != null) {
+            return;
+        }
+        HttpAsyncResponseProducer responseProducer = state.getResponseProducer();
+        if (responseProducer == null) {
+            return;
+        }
+        HttpContext context = state.getContext();
+        HttpResponse response = responseProducer.generateResponse();
+        int status = response.getStatusLine().getStatusCode();
+        if (state.getRequestState() == MessageState.ACK_EXPECTED) {
+            if (status == 100) {
+                state.setResponseProducer(null);
+                try {
+                    // Make sure 100 response has no entity
+                    response.setEntity(null);
+                    conn.requestInput();
+                    state.setRequestState(MessageState.BODY_STREAM);
+                    conn.submitResponse(response);
+                    responseProducer.responseCompleted(context);
+                } finally {
+                    responseProducer.close();
                 }
+            } else if (status >= 400) {
+                conn.resetInput();
+                state.setRequestState(MessageState.COMPLETED);
+                state.setResponse(response);
+                commitFinalResponse(conn, state);
             } else {
-                if (status >= 200) {
-                    state.setResponse(response);
-                    commitFinalResponse(conn, state);
-                } else {
-                    throw new HttpException("Invalid response: " + response.getStatusLine());
-                }
+                throw new HttpException("Invalid response: " + response.getStatusLine());
+            }
+        } else {
+            if (status >= 200) {
+                state.setResponse(response);
+                commitFinalResponse(conn, state);
+            } else {
+                throw new HttpException("Invalid response: " + response.getStatusLine());
             }
-        } catch (HttpException ex) {
-            handleProtocolFailure(conn, state, ex);
-        } catch (IOException ex) {
-            handleFailure(conn, state, ex);
-        } catch (RuntimeException ex) {
-            terminate(conn, state);
-            throw ex;
         }
     }
 
-    public void outputReady(final NHttpServerConnection conn, final ContentEncoder encoder) {
+    public void outputReady(
+            final NHttpServerConnection conn,
+            final ContentEncoder encoder) throws IOException {
         State state = ensureNotNull(getState(conn));
-        try {
-            HttpAsyncResponseProducer responseProducer = state.getResponseProducer();
-            HttpContext context = state.getContext();
-            HttpResponse response = state.getResponse();
+        HttpAsyncResponseProducer responseProducer = state.getResponseProducer();
+        HttpContext context = state.getContext();
+        HttpResponse response = state.getResponse();
 
-            responseProducer.produceContent(encoder, conn);
-            state.setResponseState(MessageState.BODY_STREAM);
-            if (encoder.isCompleted()) {
-                responseProducer.responseCompleted(context);
-                if (!this.connStrategy.keepAlive(response, context)) {
-                    conn.close();
-                } else {
-                    conn.requestInput();
-                }
-                closeHandlers(state);
-                state.reset();
+        responseProducer.produceContent(encoder, conn);
+        state.setResponseState(MessageState.BODY_STREAM);
+        if (encoder.isCompleted()) {
+            responseProducer.responseCompleted(context);
+            if (!this.connStrategy.keepAlive(response, context)) {
+                conn.close();
+            } else {
+                conn.requestInput();
             }
-        } catch (IOException ex) {
-            handleFailure(conn, state, ex);
-        } catch (RuntimeException ex) {
-            terminate(conn, state);
-            throw ex;
+            closeHandlers(state);
+            state.reset();
         }
     }
 
-    public void timeout(final NHttpServerConnection conn) {
+    public void timeout(final NHttpServerConnection conn) throws IOException {
         State state = getState(conn);
         if (state != null) {
             closeHandlers(state, new SocketTimeoutException());
         }
-        try {
-            if (conn.getStatus() == NHttpConnection.ACTIVE) {
-                conn.close();
-                if (conn.getStatus() == NHttpConnection.CLOSING) {
-                    // Give the connection some grace time to
-                    // close itself nicely
-                    conn.setSocketTimeout(250);
-                }
-            } else {
-                conn.shutdown();
+        if (conn.getStatus() == NHttpConnection.ACTIVE) {
+            conn.close();
+            if (conn.getStatus() == NHttpConnection.CLOSING) {
+                // Give the connection some grace time to
+                // close itself nicely
+                conn.setSocketTimeout(250);
             }
-        } catch (IOException ex) {
-            onException(ex);
+        } else {
+            conn.shutdown();
         }
     }
 
@@ -338,14 +325,14 @@ public class HttpAsyncServiceHandler imp
         return requestConsumer;
     }
 
-    protected void onException(final Exception ex) {
+    protected void log(final Exception ex) {
     }
 
     private void closeConnection(final NHttpConnection conn) {
         try {
             conn.close();
         } catch (IOException ex) {
-            onException(ex);
+            log(ex);
         }
     }
 
@@ -353,7 +340,7 @@ public class HttpAsyncServiceHandler imp
         try {
             conn.shutdown();
         } catch (IOException ex) {
-            onException(ex);
+            log(ex);
         }
     }
 
@@ -366,7 +353,7 @@ public class HttpAsyncServiceHandler imp
                 try {
                     consumer.close();
                 } catch (IOException ioex) {
-                    onException(ioex);
+                    log(ioex);
                 }
             }
         }
@@ -378,7 +365,7 @@ public class HttpAsyncServiceHandler imp
                 try {
                     producer.close();
                 } catch (IOException ioex) {
-                    onException(ioex);
+                    log(ioex);
                 }
             }
         }
@@ -390,7 +377,7 @@ public class HttpAsyncServiceHandler imp
             try {
                 consumer.close();
             } catch (IOException ioex) {
-                onException(ioex);
+                log(ioex);
             }
         }
         HttpAsyncResponseProducer producer = state.getResponseProducer();
@@ -398,7 +385,7 @@ public class HttpAsyncServiceHandler imp
             try {
                 producer.close();
             } catch (IOException ioex) {
-                onException(ioex);
+                log(ioex);
             }
         }
     }
@@ -433,49 +420,6 @@ public class HttpAsyncServiceHandler imp
             && status != HttpStatus.SC_RESET_CONTENT;
     }
 
-    private void terminate(
-            final NHttpServerConnection conn,
-            final State state) {
-        shutdownConnection(conn);
-        closeHandlers(state);
-        state.reset();
-    }
-
-    private void handleFailure(
-            final NHttpServerConnection conn,
-            final State state,
-            final Exception ex) {
-        shutdownConnection(conn);
-        closeHandlers(state, ex);
-        state.reset();
-    }
-
-    private void handleProtocolFailure(
-            final NHttpServerConnection conn,
-            final State state,
-            final HttpException httpex) {
-        closeHandlers(state, httpex);
-        if (conn.isResponseSubmitted() || state.getResponseState() != MessageState.READY) {
-            // There is not much that we can do if a response
-            // has already been submitted
-            closeConnection(conn);
-        } else {
-            HttpContext context = state.getContext();
-            HttpAsyncResponseProducer responseProducer = handleException(httpex, context);
-            state.setResponseProducer(responseProducer);
-            try {
-                HttpResponse response = responseProducer.generateResponse();
-                state.setResponse(response);
-                commitFinalResponse(conn, state);
-            } catch (RuntimeException ex) {
-                handleFailure(conn, state, ex);
-                throw ex;
-            } catch (Exception ex) {
-                handleFailure(conn, state, ex);
-            }
-        }
-    }
-
     private void processRequest(
             final NHttpServerConnection conn,
             final State state) throws HttpException, IOException {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/HttpCoreNIOTestBase.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/HttpCoreNIOTestBase.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/HttpCoreNIOTestBase.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/HttpCoreNIOTestBase.java Thu Dec  1 17:20:25 2011
@@ -28,11 +28,11 @@
 package org.apache.http;
 
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.pool.BasicNIOConnFactory;
 import org.apache.http.impl.nio.pool.BasicNIOConnPool;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.protocol.HttpAsyncRequestExecutor;
 import org.apache.http.params.CoreConnectionPNames;
 import org.apache.http.params.CoreProtocolPNames;
@@ -68,10 +68,10 @@ public abstract class HttpCoreNIOTestBas
     protected BasicNIOConnPool connpool;
     protected HttpAsyncRequestExecutor executor;
 
-    protected abstract NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected abstract NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             HttpParams params) throws Exception;
 
-    protected abstract NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected abstract NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             HttpParams params) throws Exception;
 
     public void initServer() throws Exception {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingClientConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingClientConnectionFactory.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingClientConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingClientConnectionFactory.java Thu Dec  1 17:20:25 2011
@@ -27,8 +27,8 @@
 package org.apache.http;
 
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
 import org.apache.http.impl.nio.DefaultNHttpClientConnectionFactory;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.util.ByteBufferAllocator;
 import org.apache.http.nio.util.HeapByteBufferAllocator;
@@ -41,7 +41,7 @@ public class LoggingClientConnectionFact
     }
 
     @Override
-    protected NHttpClientIOTarget createConnection(
+    protected DefaultNHttpClientConnection createConnection(
             final IOSession session,
             final HttpResponseFactory responseFactory,
             final ByteBufferAllocator allocator,

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpClientConnection.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpClientConnection.java Thu Dec  1 17:20:25 2011
@@ -39,7 +39,7 @@ import org.apache.http.HttpRequest;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpResponseFactory;
 import org.apache.http.impl.nio.DefaultNHttpClientConnection;
-import org.apache.http.nio.NHttpClientHandler;
+import org.apache.http.nio.NHttpClientProtocolHandler;
 import org.apache.http.nio.NHttpMessageParser;
 import org.apache.http.nio.NHttpMessageWriter;
 import org.apache.http.nio.reactor.IOSession;
@@ -99,7 +99,7 @@ public class LoggingNHttpClientConnectio
     }
 
     @Override
-    public void consumeInput(final NHttpClientHandler handler) {
+    public void consumeInput(final NHttpClientProtocolHandler handler) {
         if (this.log.isDebugEnabled()) {
             this.log.debug(this.id + ": Consume input");
         }
@@ -107,7 +107,7 @@ public class LoggingNHttpClientConnectio
     }
 
     @Override
-    public void produceOutput(final NHttpClientHandler handler) {
+    public void produceOutput(final NHttpClientProtocolHandler handler) {
         if (this.log.isDebugEnabled()) {
             this.log.debug(this.id + ": Produce output");
         }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpServerConnection.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingNHttpServerConnection.java Thu Dec  1 17:20:25 2011
@@ -41,7 +41,7 @@ import org.apache.http.HttpResponse;
 import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.nio.NHttpMessageParser;
 import org.apache.http.nio.NHttpMessageWriter;
-import org.apache.http.nio.NHttpServiceHandler;
+import org.apache.http.nio.NHttpServerProtocolHandler;
 import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.reactor.SessionInputBuffer;
 import org.apache.http.nio.reactor.SessionOutputBuffer;
@@ -99,7 +99,7 @@ public class LoggingNHttpServerConnectio
     }
 
     @Override
-    public void consumeInput(final NHttpServiceHandler handler) {
+    public void consumeInput(final NHttpServerProtocolHandler handler) {
         if (this.log.isDebugEnabled()) {
             this.log.debug(this.id + ": Consume input");
         }
@@ -107,7 +107,7 @@ public class LoggingNHttpServerConnectio
     }
 
     @Override
-    public void produceOutput(final NHttpServiceHandler handler) {
+    public void produceOutput(final NHttpServerProtocolHandler handler) {
         if (this.log.isDebugEnabled()) {
             this.log.debug(this.id + ": Produce output");
         }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLClientConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLClientConnectionFactory.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLClientConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLClientConnectionFactory.java Thu Dec  1 17:20:25 2011
@@ -29,8 +29,8 @@ package org.apache.http;
 import javax.net.ssl.SSLContext;
 
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
 import org.apache.http.impl.nio.SSLNHttpClientConnectionFactory;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.util.ByteBufferAllocator;
 import org.apache.http.nio.util.HeapByteBufferAllocator;
@@ -45,7 +45,7 @@ public class LoggingSSLClientConnectionF
     }
 
     @Override
-    protected NHttpClientIOTarget createConnection(
+    protected DefaultNHttpClientConnection createConnection(
             final IOSession session,
             final HttpResponseFactory responseFactory,
             final ByteBufferAllocator allocator,

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLServerConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLServerConnectionFactory.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLServerConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingSSLServerConnectionFactory.java Thu Dec  1 17:20:25 2011
@@ -29,8 +29,8 @@ package org.apache.http;
 import javax.net.ssl.SSLContext;
 
 import org.apache.http.impl.DefaultHttpRequestFactory;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.SSLNHttpServerConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.util.ByteBufferAllocator;
 import org.apache.http.nio.util.HeapByteBufferAllocator;
@@ -45,7 +45,7 @@ public class LoggingSSLServerConnectionF
     }
 
     @Override
-    protected NHttpServerIOTarget createConnection(
+    protected DefaultNHttpServerConnection createConnection(
             final IOSession session,
             final HttpRequestFactory requestFactory,
             final ByteBufferAllocator allocator,

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingServerConnectionFactory.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingServerConnectionFactory.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingServerConnectionFactory.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/LoggingServerConnectionFactory.java Thu Dec  1 17:20:25 2011
@@ -27,8 +27,8 @@
 package org.apache.http;
 
 import org.apache.http.impl.DefaultHttpRequestFactory;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.DefaultNHttpServerConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.reactor.IOSession;
 import org.apache.http.nio.util.ByteBufferAllocator;
 import org.apache.http.nio.util.HeapByteBufferAllocator;
@@ -41,7 +41,7 @@ public class LoggingServerConnectionFact
     }
 
     @Override
-    protected NHttpServerIOTarget createConnection(
+    protected DefaultNHttpServerConnection createConnection(
             final IOSession session,
             final HttpRequestFactory requestFactory,
             final ByteBufferAllocator allocator,

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestBaseIOReactorSSL.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestBaseIOReactorSSL.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestBaseIOReactorSSL.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestBaseIOReactorSSL.java Thu Dec  1 17:20:25 2011
@@ -48,9 +48,9 @@ import org.apache.http.LoggingSSLServerC
 import org.apache.http.SSLTestContexts;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
-import org.apache.http.nio.NHttpClientIOTarget;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.NHttpServiceHandler;
 import org.apache.http.nio.protocol.BufferingHttpServiceHandler;
 import org.apache.http.nio.protocol.EventListener;
@@ -79,13 +79,13 @@ public class TestBaseIOReactorSSL extend
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLServerConnectionFactory(SSLTestContexts.createServerSSLContext(), params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLClientConnectionFactory(SSLTestContexts.createClientSSLContext(), params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactors.java Thu Dec  1 17:20:25 2011
@@ -46,13 +46,13 @@ import org.apache.http.LoggingClientConn
 import org.apache.http.LoggingServerConnectionFactory;
 import org.apache.http.OoopsieRuntimeException;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.pool.BasicNIOPoolEntry;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.nio.NHttpClientConnection;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
 import org.apache.http.nio.NHttpServerConnection;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.protocol.BasicAsyncRequestProducer;
 import org.apache.http.nio.protocol.BasicAsyncResponseConsumer;
 import org.apache.http.nio.protocol.BufferingAsyncRequestHandler;
@@ -91,13 +91,13 @@ public class TestDefaultIOReactors exten
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingServerConnectionFactory(params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingClientConnectionFactory(params);
     }
@@ -136,7 +136,9 @@ public class TestDefaultIOReactors exten
         HttpAsyncClientProtocolHandler clientHandler = new HttpAsyncClientProtocolHandler() {
 
             @Override
-            public void connected(final NHttpClientConnection conn, final Object attachment) {
+            public void connected(
+                    final NHttpClientConnection conn,
+                    final Object attachment) throws IOException, HttpException {
                 openClientConns.countDown();
                 super.connected(conn, attachment);
             }
@@ -202,7 +204,19 @@ public class TestDefaultIOReactors exten
                 this.serverHttpProc,
                 new DefaultConnectionReuseStrategy(),
                 registry,
-                this.serverParams);
+                this.serverParams) {
+
+                    @Override
+                    public void exception(
+                            final NHttpServerConnection conn,
+                            final Exception cause) {
+                        super.exception(conn, cause);
+                        if (cause instanceof RuntimeException) {
+                            throw (RuntimeException) cause;
+                        }
+                    }
+
+        };
         HttpAsyncClientProtocolHandler clientHandler = new HttpAsyncClientProtocolHandler();
         this.server.start(serviceHandler);
         this.client.start(clientHandler);
@@ -273,7 +287,19 @@ public class TestDefaultIOReactors exten
                 this.serverHttpProc,
                 new DefaultConnectionReuseStrategy(),
                 registry,
-                this.serverParams);
+                this.serverParams) {
+
+            @Override
+            public void exception(
+                    final NHttpServerConnection conn,
+                    final Exception cause) {
+                super.exception(conn, cause);
+                if (cause instanceof RuntimeException) {
+                    throw (RuntimeException) cause;
+                }
+            }
+
+        };
         HttpAsyncClientProtocolHandler clientHandler = new HttpAsyncClientProtocolHandler();
         this.server.setExceptionHandler(exceptionHandler);
         this.server.start(serviceHandler);
@@ -345,7 +371,19 @@ public class TestDefaultIOReactors exten
                 this.serverHttpProc,
                 new DefaultConnectionReuseStrategy(),
                 registry,
-                this.serverParams);
+                this.serverParams) {
+
+            @Override
+            public void exception(
+                    final NHttpServerConnection conn,
+                    final Exception cause) {
+                super.exception(conn, cause);
+                if (cause instanceof RuntimeException) {
+                    throw (RuntimeException) cause;
+                }
+            }
+
+        };
         HttpAsyncClientProtocolHandler clientHandler = new HttpAsyncClientProtocolHandler();
         this.server.setExceptionHandler(exceptionHandler);
         this.server.start(serviceHandler);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactorsSSL.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactorsSSL.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactorsSSL.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/impl/nio/reactor/TestDefaultIOReactorsSSL.java Thu Dec  1 17:20:25 2011
@@ -30,9 +30,9 @@ package org.apache.http.impl.nio.reactor
 import org.apache.http.LoggingSSLClientConnectionFactory;
 import org.apache.http.LoggingSSLServerConnectionFactory;
 import org.apache.http.SSLTestContexts;
-import org.apache.http.nio.NHttpClientIOTarget;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.params.HttpParams;
 
 /**
@@ -42,13 +42,13 @@ import org.apache.http.params.HttpParams
 public class TestDefaultIOReactorsSSL extends TestDefaultIOReactors {
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLServerConnectionFactory(SSLTestContexts.createServerSSLContext(), params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLClientConnectionFactory(SSLTestContexts.createClientSSLContext(), params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestAsyncNHttpHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestAsyncNHttpHandlers.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestAsyncNHttpHandlers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestAsyncNHttpHandlers.java Thu Dec  1 17:20:25 2011
@@ -47,11 +47,11 @@ import org.apache.http.LoggingClientConn
 import org.apache.http.LoggingServerConnectionFactory;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.message.BasicHttpEntityEnclosingRequest;
 import org.apache.http.message.BasicHttpRequest;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.entity.ConsumingNHttpEntity;
 import org.apache.http.nio.entity.NByteArrayEntity;
 import org.apache.http.nio.entity.NStringEntity;
@@ -106,13 +106,13 @@ public class TestAsyncNHttpHandlers exte
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingServerConnectionFactory(params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingClientConnectionFactory(params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpAsyncHandlers.java Thu Dec  1 17:20:25 2011
@@ -47,12 +47,12 @@ import org.apache.http.concurrent.Cancel
 import org.apache.http.entity.ContentType;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.message.BasicHttpEntityEnclosingRequest;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.message.BasicHttpResponse;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.entity.NStringEntity;
 import org.apache.http.nio.protocol.BasicAsyncRequestConsumer;
 import org.apache.http.nio.protocol.BasicAsyncRequestProducer;
@@ -98,13 +98,13 @@ public class TestHttpAsyncHandlers exten
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingServerConnectionFactory(params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingClientConnectionFactory(params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpsAsyncHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpsAsyncHandlers.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpsAsyncHandlers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestHttpsAsyncHandlers.java Thu Dec  1 17:20:25 2011
@@ -30,9 +30,9 @@ package org.apache.http.nio.integration;
 import org.apache.http.LoggingSSLClientConnectionFactory;
 import org.apache.http.LoggingSSLServerConnectionFactory;
 import org.apache.http.SSLTestContexts;
-import org.apache.http.nio.NHttpClientIOTarget;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.params.HttpParams;
 
 /**
@@ -41,13 +41,13 @@ import org.apache.http.params.HttpParams
 public class TestHttpsAsyncHandlers extends TestHttpAsyncHandlers {
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLServerConnectionFactory(SSLTestContexts.createServerSSLContext(), params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingSSLClientConnectionFactory(SSLTestContexts.createClientSSLContext(), params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestThrottlingNHttpHandlers.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestThrottlingNHttpHandlers.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestThrottlingNHttpHandlers.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestThrottlingNHttpHandlers.java Thu Dec  1 17:20:25 2011
@@ -54,11 +54,11 @@ import org.apache.http.entity.ContentTyp
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.DefaultHttpResponseFactory;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.message.BasicHttpEntityEnclosingRequest;
 import org.apache.http.message.BasicHttpRequest;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.entity.NByteArrayEntity;
 import org.apache.http.nio.entity.NStringEntity;
 import org.apache.http.nio.protocol.HttpRequestExecutionHandler;
@@ -112,13 +112,13 @@ public class TestThrottlingNHttpHandlers
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingServerConnectionFactory(params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingClientConnectionFactory(params);
     }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/integration/TestTruncatedChunks.java Thu Dec  1 17:20:25 2011
@@ -47,15 +47,15 @@ import org.apache.http.entity.ContentLen
 import org.apache.http.entity.InputStreamEntity;
 import org.apache.http.impl.DefaultConnectionReuseStrategy;
 import org.apache.http.impl.io.HttpTransportMetricsImpl;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.DefaultNHttpServerConnectionFactory;
 import org.apache.http.impl.nio.codecs.AbstractContentEncoder;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.nio.ContentDecoder;
 import org.apache.http.nio.ContentEncoder;
 import org.apache.http.nio.IOControl;
-import org.apache.http.nio.NHttpClientIOTarget;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
 import org.apache.http.nio.entity.ContentInputStream;
 import org.apache.http.nio.protocol.AbstractAsyncResponseConsumer;
 import org.apache.http.nio.protocol.BasicAsyncRequestProducer;
@@ -101,13 +101,13 @@ public class TestTruncatedChunks extends
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpServerIOTarget> createServerConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpServerConnection> createServerConnectionFactory(
             final HttpParams params) throws Exception {
         return new CustomServerConnectionFactory(params);
     }
 
     @Override
-    protected NHttpConnectionFactory<NHttpClientIOTarget> createClientConnectionFactory(
+    protected NHttpConnectionFactory<DefaultNHttpClientConnection> createClientConnectionFactory(
             final HttpParams params) throws Exception {
         return new LoggingClientConnectionFactory(params);
     }
@@ -163,7 +163,7 @@ public class TestTruncatedChunks extends
         }
 
         @Override
-        protected NHttpServerIOTarget createConnection(
+        protected DefaultNHttpServerConnection createConnection(
                 final IOSession session,
                 final HttpRequestFactory requestFactory,
                 final ByteBufferAllocator allocator,

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncClientProtocolHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncClientProtocolHandler.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncClientProtocolHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncClientProtocolHandler.java Thu Dec  1 17:20:25 2011
@@ -134,7 +134,7 @@ public class TestHttpAsyncClientProtocol
 
         Mockito.verify(this.exchangeHandler).failed(httpex);
         Mockito.verify(this.exchangeHandler).close();
-        Mockito.verify(this.conn).close();
+        Mockito.verify(this.conn).shutdown();
     }
 
     @Test
@@ -210,37 +210,6 @@ public class TestHttpAsyncClientProtocol
     }
 
     @Test
-    public void testRequestRuntimeException() throws Exception {
-        RuntimeException runtimeex = new RuntimeException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.exchangeHandler.generateRequest()).thenThrow(runtimeex);
-        try {
-            this.protocolHandler.requestReady(this.conn);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.exchangeHandler).close();
-        }
-    }
-
-    @Test
-    public void testRequestHttpException() throws Exception {
-        HttpException httpex = new HttpException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.exchangeHandler.generateRequest()).thenThrow(httpex);
-
-        this.protocolHandler.requestReady(this.conn);
-
-        Mockito.verify(this.conn).close();
-        Mockito.verify(this.exchangeHandler).failed(httpex);
-        Mockito.verify(this.exchangeHandler).close();
-    }
-
-    @Test
     public void testRequestContentOutput() throws Exception {
         State state = new HttpAsyncClientProtocolHandler.State();
         state.setHandler(this.exchangeHandler);
@@ -282,38 +251,6 @@ public class TestHttpAsyncClientProtocol
     }
 
     @Test
-    public void testRequestContentRuntimeException() throws Exception {
-        RuntimeException runtimeex = new RuntimeException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.doThrow(runtimeex).when(this.exchangeHandler).produceContent(this.encoder, this.conn);
-
-        try {
-            this.protocolHandler.outputReady(this.conn, this.encoder);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.exchangeHandler).close();
-        }
-    }
-
-    @Test
-    public void testRequestContentIOException() throws Exception {
-        IOException ioex = new IOException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.doThrow(ioex).when(this.exchangeHandler).produceContent(this.encoder, this.conn);
-
-        this.protocolHandler.outputReady(this.conn, this.encoder);
-
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.exchangeHandler).failed(ioex);
-        Mockito.verify(this.exchangeHandler).close();
-    }
-
-    @Test
     public void testBasicResponse() throws Exception {
         State state = new HttpAsyncClientProtocolHandler.State();
         HttpRequest request = new BasicHttpRequest("GET", "/");
@@ -370,7 +307,7 @@ public class TestHttpAsyncClientProtocol
         Mockito.verify(this.conn, Mockito.never()).requestOutput();
     }
 
-    @Test
+    @Test(expected=HttpException.class)
     public void testResponseUnsupported1xx() throws Exception {
         State state = new HttpAsyncClientProtocolHandler.State();
         state.setRequestState(MessageState.ACK_EXPECTED);
@@ -384,11 +321,6 @@ public class TestHttpAsyncClientProtocol
         Mockito.when(this.conn.getHttpResponse()).thenReturn(response);
 
         this.protocolHandler.responseReceived(this.conn);
-
-        Assert.assertNull(state.getResponse());
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.exchangeHandler).failed(Mockito.any(HttpException.class));
-        Mockito.verify(this.exchangeHandler).close();
     }
 
     @Test
@@ -507,45 +439,6 @@ public class TestHttpAsyncClientProtocol
     }
 
     @Test
-    public void testResponseRuntimeException() throws Exception {
-        RuntimeException runtimeex = new RuntimeException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        HttpRequest request = new BasicHttpRequest("GET", "/");
-        state.setRequest(request);
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
-        Mockito.when(this.conn.getHttpResponse()).thenReturn(response);
-        Mockito.doThrow(runtimeex).when(this.exchangeHandler).responseReceived(response);
-        try {
-            this.protocolHandler.responseReceived(this.conn);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.exchangeHandler).close();
-        }
-    }
-
-    @Test
-    public void testResponseHttpException() throws Exception {
-        HttpException httpex = new HttpException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        HttpRequest request = new BasicHttpRequest("GET", "/");
-        state.setRequest(request);
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
-        Mockito.when(this.conn.getHttpResponse()).thenReturn(response);
-        Mockito.doThrow(httpex).when(this.exchangeHandler).responseReceived(response);
-
-        this.protocolHandler.responseReceived(this.conn);
-
-        Mockito.verify(this.conn).close();
-        Mockito.verify(this.exchangeHandler).failed(httpex);
-        Mockito.verify(this.exchangeHandler).close();
-    }
-
-    @Test
     public void testResponseContentInput() throws Exception {
         State state = new HttpAsyncClientProtocolHandler.State();
         state.setHandler(this.exchangeHandler);
@@ -624,38 +517,6 @@ public class TestHttpAsyncClientProtocol
     }
 
     @Test
-    public void testResponseContentRuntimeException() throws Exception {
-        RuntimeException runtimeex = new RuntimeException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.doThrow(runtimeex).when(this.exchangeHandler).consumeContent(this.decoder, this.conn);
-
-        try {
-            this.protocolHandler.inputReady(this.conn, this.decoder);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.exchangeHandler).close();
-        }
-    }
-
-    @Test
-    public void testResponseContentIOException() throws Exception {
-        IOException ioex = new IOException();
-        State state = new HttpAsyncClientProtocolHandler.State();
-        state.setHandler(this.exchangeHandler);
-        this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.doThrow(ioex).when(this.exchangeHandler).consumeContent(this.decoder, this.conn);
-
-        this.protocolHandler.inputReady(this.conn, this.decoder);
-
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.exchangeHandler).failed(ioex);
-        Mockito.verify(this.exchangeHandler).close();
-    }
-
-    @Test
     public void testTimeoutNoHandler() throws Exception {
         State state = new HttpAsyncClientProtocolHandler.State();
         this.connContext.setAttribute(HttpAsyncClientProtocolHandler.HTTP_EXCHANGE_STATE, state);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncServiceHandler.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncServiceHandler.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncServiceHandler.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncServiceHandler.java Thu Dec  1 17:20:25 2011
@@ -182,6 +182,8 @@ public class TestHttpAsyncServiceHandler
 
         Mockito.verify(this.requestConsumer).failed(httpex);
         Mockito.verify(this.requestConsumer).close();
+        Mockito.verify(this.conn, Mockito.never()).shutdown();
+        Mockito.verify(this.conn, Mockito.never()).close();
     }
 
     @Test
@@ -445,46 +447,6 @@ public class TestHttpAsyncServiceHandler
     }
 
     @Test
-    public void testRequestRuntimeException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-
-        BasicHttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
-        Mockito.when(this.conn.getHttpRequest()).thenReturn(request);
-        Mockito.when(this.requestHandler.processRequest(
-                request, exchangeContext)).thenThrow(new RuntimeException());
-        try {
-            this.protocolHandler.requestReceived(this.conn);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-        }
-    }
-
-    @Test
-    public void testRequestHttpException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-
-        BasicHttpRequest request = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1);
-        Mockito.when(this.conn.getHttpRequest()).thenReturn(request);
-        Mockito.when(this.requestHandler.processRequest(
-                request, exchangeContext)).thenThrow(new HttpException());
-
-        this.protocolHandler.requestReceived(this.conn);
-
-        HttpAsyncResponseProducer responseProducer = state.getResponseProducer();
-        Assert.assertNotNull(responseProducer);
-        HttpResponse response = state.getResponse();
-        Assert.assertNotNull(response);
-        Assert.assertEquals(500, response.getStatusLine().getStatusCode());
-
-        Mockito.verify(this.conn).submitResponse(response);
-    }
-
-    @Test
     public void testRequestExpectationFailed() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
         state.setRequestState(MessageState.ACK_EXPECTED);
@@ -674,58 +636,6 @@ public class TestHttpAsyncServiceHandler
     }
 
     @Test
-    public void testRequestContentRuntimeException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
-                HttpVersion.HTTP_1_1);
-        state.setRequestState(MessageState.BODY_STREAM);
-        state.setRequest(request);
-        state.setRequestConsumer(this.requestConsumer);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.decoder.isCompleted()).thenReturn(true);
-        RuntimeException runtimeex = new RuntimeException();
-        Mockito.doThrow(runtimeex).when(
-                this.requestConsumer).requestCompleted(exchangeContext);
-        try {
-            this.protocolHandler.inputReady(this.conn, this.decoder);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.requestConsumer).close();
-        }
-    }
-
-    @Test
-    public void testRequestContentIOException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
-                HttpVersion.HTTP_1_1);
-        state.setRequestState(MessageState.BODY_STREAM);
-        state.setRequest(request);
-        state.setRequestConsumer(this.requestConsumer);
-        state.setRequestHandler(this.requestHandler);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.decoder.isCompleted()).thenReturn(true);
-        Mockito.when(this.requestConsumer.getException()).thenReturn(null);
-        Object data = new Object();
-        Mockito.when(this.requestConsumer.getResult()).thenReturn(data);
-        IOException ioex = new IOException();
-        Mockito.doThrow(ioex).when(
-                this.requestHandler).handle(
-                        Mockito.eq(data),
-                        Mockito.any(HttpAsyncServiceExchange.class),
-                        Mockito.eq(exchangeContext));
-
-        this.protocolHandler.inputReady(this.conn, this.decoder);
-
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.requestConsumer).failed(ioex);
-        Mockito.verify(this.requestConsumer).close();
-    }
-
-    @Test
     public void testBasicResponse() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
         HttpContext exchangeContext = state.getContext();
@@ -914,10 +824,9 @@ public class TestHttpAsyncServiceHandler
         Mockito.verify(this.responseProducer, Mockito.never()).responseCompleted(exchangeContext);
     }
 
-    @Test
+    @Test(expected=HttpException.class)
     public void testInvalidResponseStatus() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
         BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
                 HttpVersion.HTTP_1_1);
         state.setRequest(request);
@@ -931,25 +840,11 @@ public class TestHttpAsyncServiceHandler
         Mockito.when(this.conn.isResponseSubmitted()).thenReturn(false);
 
         this.protocolHandler.responseReady(this.conn);
-
-        Mockito.verify(this.conn).submitResponse(Mockito.argThat(new ArgumentMatcher<HttpResponse>() {
-
-            @Override
-            public boolean matches(final Object argument) {
-                int status = ((HttpResponse) argument).getStatusLine().getStatusCode();
-                return status == 500;
-            }
-
-        }));
-        Mockito.verify(this.responseProducer, Mockito.never()).responseCompleted(exchangeContext);
-        Mockito.verify(this.responseProducer).failed(Mockito.any(HttpException.class));
-        Mockito.verify(this.responseProducer).close();
     }
 
-    @Test
+    @Test(expected=HttpException.class)
     public void testInvalidResponseStatusToExpection() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
         BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
                 HttpVersion.HTTP_1_1);
         state.setRequest(request);
@@ -964,19 +859,6 @@ public class TestHttpAsyncServiceHandler
         Mockito.when(this.conn.isResponseSubmitted()).thenReturn(false);
 
         this.protocolHandler.responseReady(this.conn);
-
-        Mockito.verify(this.conn).submitResponse(Mockito.argThat(new ArgumentMatcher<HttpResponse>() {
-
-            @Override
-            public boolean matches(final Object argument) {
-                int status = ((HttpResponse) argument).getStatusLine().getStatusCode();
-                return status == 500;
-            }
-
-        }));
-        Mockito.verify(this.responseProducer, Mockito.never()).responseCompleted(exchangeContext);
-        Mockito.verify(this.responseProducer).failed(Mockito.any(HttpException.class));
-        Mockito.verify(this.responseProducer).close();
     }
 
     @Test
@@ -1021,59 +903,6 @@ public class TestHttpAsyncServiceHandler
     }
 
     @Test
-    public void testResponseRuntimeException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
-                HttpVersion.HTTP_1_1);
-        state.setRequest(request);
-        state.setRequestState(MessageState.ACK_EXPECTED);
-        state.setResponseProducer(this.responseProducer);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 417, "Expectation failed");
-        response.setEntity(NStringEntity.create("stuff"));
-        Mockito.when(this.responseProducer.generateResponse()).thenReturn(response);
-
-        RuntimeException runtimeex = new RuntimeException();
-        Mockito.doThrow(runtimeex).when(
-                this.httpProcessor).process(response, exchangeContext);
-        try {
-            this.protocolHandler.responseReady(this.conn);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.responseProducer).close();
-
-        }
-    }
-
-    @Test
-    public void testResponseIOException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        HttpContext exchangeContext = state.getContext();
-        BasicHttpEntityEnclosingRequest request = new BasicHttpEntityEnclosingRequest("POST", "/",
-                HttpVersion.HTTP_1_1);
-        state.setRequest(request);
-        state.setRequestState(MessageState.ACK_EXPECTED);
-        state.setResponseProducer(this.responseProducer);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 417, "Expectation failed");
-        response.setEntity(NStringEntity.create("stuff"));
-        Mockito.when(this.responseProducer.generateResponse()).thenReturn(response);
-        IOException ioex = new IOException();
-        Mockito.doThrow(ioex).when(
-                this.httpProcessor).process(response, exchangeContext);
-
-        this.protocolHandler.responseReady(this.conn);
-
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.responseProducer).failed(ioex);
-        Mockito.verify(this.responseProducer).close();
-    }
-
-    @Test
     public void testResponseContent() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
         BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
@@ -1146,51 +975,6 @@ public class TestHttpAsyncServiceHandler
     }
 
     @Test
-    public void testResponseContentRuntimeException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
-        response.setEntity(NStringEntity.create("stuff"));
-        state.setRequestState(MessageState.COMPLETED);
-        state.setResponseState(MessageState.BODY_STREAM);
-        state.setResponse(response);
-        state.setResponseProducer(this.responseProducer);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.encoder.isCompleted()).thenReturn(false);
-
-        RuntimeException runtimeex = new RuntimeException();
-        Mockito.doThrow(runtimeex).when(
-                this.responseProducer).produceContent(this.encoder, this.conn);
-        try {
-            this.protocolHandler.outputReady(conn, this.encoder);
-            Assert.fail("RuntimeException expected");
-        } catch (RuntimeException ex) {
-            Mockito.verify(this.conn).shutdown();
-            Mockito.verify(this.responseProducer).close();
-        }
-    }
-
-    @Test
-    public void testResponseContentIOException() throws Exception {
-        State state = new HttpAsyncServiceHandler.State();
-        BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
-        response.setEntity(NStringEntity.create("stuff"));
-        state.setRequestState(MessageState.COMPLETED);
-        state.setResponseState(MessageState.BODY_STREAM);
-        state.setResponse(response);
-        state.setResponseProducer(this.responseProducer);
-        this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);
-        Mockito.when(this.encoder.isCompleted()).thenReturn(false);
-
-        IOException ioex = new IOException();
-        Mockito.doThrow(ioex).when(
-                this.responseProducer).produceContent(this.encoder, this.conn);
-        this.protocolHandler.outputReady(conn, this.encoder);
-        Mockito.verify(this.conn).shutdown();
-        Mockito.verify(this.responseProducer).failed(ioex);
-        Mockito.verify(this.responseProducer).close();
-    }
-
-    @Test
     public void testTimeoutActiveConnection() throws Exception {
         State state = new HttpAsyncServiceHandler.State();
         this.connContext.setAttribute(HttpAsyncServiceHandler.HTTP_EXCHANGE_STATE, state);

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpClientNio.java Thu Dec  1 17:20:25 2011
@@ -32,10 +32,11 @@ import java.net.InetSocketAddress;
 import java.util.List;
 
 import org.apache.http.impl.nio.DefaultClientIODispatch;
+import org.apache.http.impl.nio.DefaultNHttpClientConnection;
 import org.apache.http.impl.nio.reactor.DefaultConnectingIOReactor;
 import org.apache.http.impl.nio.reactor.ExceptionEvent;
 import org.apache.http.nio.NHttpClientHandler;
-import org.apache.http.nio.NHttpClientIOTarget;
+import org.apache.http.nio.NHttpClientProtocolHandler;
 import org.apache.http.nio.NHttpConnectionFactory;
 import org.apache.http.nio.reactor.ConnectingIOReactor;
 import org.apache.http.nio.reactor.IOEventDispatch;
@@ -43,15 +44,16 @@ import org.apache.http.nio.reactor.IORea
 import org.apache.http.nio.reactor.IOReactorStatus;
 import org.apache.http.nio.reactor.SessionRequest;
 
+@SuppressWarnings("deprecation")
 public class HttpClientNio {
 
     private final DefaultConnectingIOReactor ioReactor;
-    private final NHttpConnectionFactory<NHttpClientIOTarget> connFactory;
+    private final NHttpConnectionFactory<DefaultNHttpClientConnection> connFactory;
 
     private volatile IOReactorThread thread;
 
     public HttpClientNio(
-            final NHttpConnectionFactory<NHttpClientIOTarget> connFactory) throws IOException {
+            final NHttpConnectionFactory<DefaultNHttpClientConnection> connFactory) throws IOException {
         super();
         this.ioReactor = new DefaultConnectingIOReactor();
         this.connFactory = connFactory;
@@ -61,7 +63,7 @@ public class HttpClientNio {
         this.ioReactor.setExceptionHandler(exceptionHandler);
     }
 
-    private void execute(final NHttpClientHandler clientHandler) throws IOException {
+    private void execute(final NHttpClientProtocolHandler clientHandler) throws IOException {
         IOEventDispatch ioEventDispatch = new DefaultClientIODispatch(clientHandler, this.connFactory);
         this.ioReactor.execute(ioEventDispatch);
     }
@@ -70,11 +72,16 @@ public class HttpClientNio {
         return this.ioReactor.connect(address, null, attachment, null);
     }
 
-    public void start(final NHttpClientHandler clientHandler) {
+    public void start(final NHttpClientProtocolHandler clientHandler) {
         this.thread = new IOReactorThread(clientHandler);
         this.thread.start();
     }
 
+    public void start(final NHttpClientHandler handler) {
+        this.thread = new IOReactorThread(new NHttpClientProtocolHandlerAdaptor(handler));
+        this.thread.start();
+    }
+
     public ConnectingIOReactor getIoReactor() {
         return this.ioReactor;
     }
@@ -111,11 +118,11 @@ public class HttpClientNio {
 
     private class IOReactorThread extends Thread {
 
-        private final NHttpClientHandler clientHandler;
+        private final NHttpClientProtocolHandler clientHandler;
 
         private volatile Exception ex;
 
-        public IOReactorThread(final NHttpClientHandler clientHandler) {
+        public IOReactorThread(final NHttpClientProtocolHandler clientHandler) {
             super();
             this.clientHandler = clientHandler;
         }

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java?rev=1209158&r1=1209157&r2=1209158&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpServerNio.java Thu Dec  1 17:20:25 2011
@@ -31,11 +31,12 @@ import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.util.List;
 
+import org.apache.http.impl.nio.DefaultNHttpServerConnection;
 import org.apache.http.impl.nio.DefaultServerIODispatch;
 import org.apache.http.impl.nio.reactor.DefaultListeningIOReactor;
 import org.apache.http.impl.nio.reactor.ExceptionEvent;
 import org.apache.http.nio.NHttpConnectionFactory;
-import org.apache.http.nio.NHttpServerIOTarget;
+import org.apache.http.nio.NHttpServerProtocolHandler;
 import org.apache.http.nio.NHttpServiceHandler;
 import org.apache.http.nio.reactor.IOEventDispatch;
 import org.apache.http.nio.reactor.IOReactorExceptionHandler;
@@ -43,16 +44,17 @@ import org.apache.http.nio.reactor.IORea
 import org.apache.http.nio.reactor.ListenerEndpoint;
 import org.apache.http.nio.reactor.ListeningIOReactor;
 
+@SuppressWarnings("deprecation")
 public class HttpServerNio {
 
     private final DefaultListeningIOReactor ioReactor;
-    private final NHttpConnectionFactory<NHttpServerIOTarget> connFactory;
+    private final NHttpConnectionFactory<DefaultNHttpServerConnection> connFactory;
 
     private volatile IOReactorThread thread;
     private ListenerEndpoint endpoint;
 
     public HttpServerNio(
-            final NHttpConnectionFactory<NHttpServerIOTarget> connFactory) throws IOException {
+            final NHttpConnectionFactory<DefaultNHttpServerConnection> connFactory) throws IOException {
         super();
         this.ioReactor = new DefaultListeningIOReactor();
         this.connFactory = connFactory;
@@ -62,7 +64,7 @@ public class HttpServerNio {
         this.ioReactor.setExceptionHandler(exceptionHandler);
     }
 
-    private void execute(final NHttpServiceHandler serviceHandler) throws IOException {
+    private void execute(final NHttpServerProtocolHandler serviceHandler) throws IOException {
         IOEventDispatch ioEventDispatch = new DefaultServerIODispatch(serviceHandler, this.connFactory);
         this.ioReactor.execute(ioEventDispatch);
     }
@@ -75,12 +77,18 @@ public class HttpServerNio {
         this.endpoint = endpoint;
     }
 
-    public void start(final NHttpServiceHandler serviceHandler) {
+    public void start(final NHttpServerProtocolHandler serviceHandler) {
         this.endpoint = this.ioReactor.listen(new InetSocketAddress(0));
         this.thread = new IOReactorThread(serviceHandler);
         this.thread.start();
     }
 
+    public void start(final NHttpServiceHandler handler) {
+        this.endpoint = this.ioReactor.listen(new InetSocketAddress(0));
+        this.thread = new IOReactorThread(new NHttpServerProtocolHandlerAdaptor(handler));
+        this.thread.start();
+    }
+
     public ListeningIOReactor getIoReactor() {
         return this.ioReactor;
     }
@@ -117,11 +125,11 @@ public class HttpServerNio {
 
     private class IOReactorThread extends Thread {
 
-        private final NHttpServiceHandler serviceHandler;
+        private final NHttpServerProtocolHandler serviceHandler;
 
         private volatile Exception ex;
 
-        public IOReactorThread(final NHttpServiceHandler serviceHandler) {
+        public IOReactorThread(final NHttpServerProtocolHandler serviceHandler) {
             super();
             this.serviceHandler = serviceHandler;
         }

Added: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java?rev=1209158&view=auto
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java (added)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java Thu Dec  1 17:20:25 2011
@@ -0,0 +1,97 @@
+/*
+ * ====================================================================
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ * ====================================================================
+ *
+ * This software consists of voluntary contributions made by many
+ * individuals on behalf of the Apache Software Foundation.  For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
+ *
+ */
+
+package org.apache.http.testserver;
+
+import java.io.IOException;
+
+import org.apache.http.HttpException;
+import org.apache.http.nio.ContentDecoder;
+import org.apache.http.nio.ContentEncoder;
+import org.apache.http.nio.NHttpClientConnection;
+import org.apache.http.nio.NHttpClientHandler;
+import org.apache.http.nio.NHttpClientProtocolHandler;
+
+@Deprecated
+class NHttpClientProtocolHandlerAdaptor implements NHttpClientProtocolHandler {
+
+    private final NHttpClientHandler handler;
+
+    public NHttpClientProtocolHandlerAdaptor(final NHttpClientHandler handler) {
+        super();
+        this.handler = handler;
+    }
+
+    public void connected(final NHttpClientConnection conn, final Object attachment) {
+        this.handler.connected(conn, attachment);
+    }
+
+    public void requestReady(
+            final NHttpClientConnection conn) throws IOException, HttpException {
+        this.handler.requestReady(conn);
+    }
+
+    public void responseReceived(
+            final NHttpClientConnection conn) throws IOException, HttpException {
+        this.handler.responseReceived(conn);
+    }
+
+    public void inputReady(
+            final NHttpClientConnection conn,
+            final ContentDecoder decoder) throws IOException, HttpException {
+        this.handler.inputReady(conn, decoder);
+    }
+
+    public void outputReady(
+            final NHttpClientConnection conn,
+            final ContentEncoder encoder) throws IOException, HttpException {
+        this.handler.outputReady(conn, encoder);
+    }
+
+    public void exception(final NHttpClientConnection conn, final Exception ex) {
+        if (ex instanceof HttpException) {
+            this.handler.exception(conn, (HttpException) ex);
+        } else if (ex instanceof IOException) {
+            this.handler.exception(conn, (IOException) ex);
+        } else {
+            if (ex instanceof RuntimeException) {
+                throw (RuntimeException) ex;
+            } else {
+                throw new Error("Unexpected exception: ", ex);
+            }
+        }
+    }
+
+    public void timeout(final NHttpClientConnection conn) {
+        this.handler.timeout(conn);
+    }
+
+    public void closed(final NHttpClientConnection conn) {
+        this.handler.closed(conn);
+    }
+
+}

Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/NHttpClientProtocolHandlerAdaptor.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain