Return-Path: X-Original-To: apmail-hc-commits-archive@www.apache.org Delivered-To: apmail-hc-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C1B4E834D for ; Tue, 30 Aug 2011 15:17:18 +0000 (UTC) Received: (qmail 19469 invoked by uid 500); 30 Aug 2011 15:17:18 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 19421 invoked by uid 500); 30 Aug 2011 15:17:18 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 19413 invoked by uid 99); 30 Aug 2011 15:17:18 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Aug 2011 15:17:18 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 30 Aug 2011 15:17:11 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 527282388A33 for ; Tue, 30 Aug 2011 15:16:49 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1163256 [2/2] - in /httpcomponents/httpcore/trunk: ./ httpcore-contrib/ httpcore-nio/ httpcore-nio/src/main/java/org/apache/http/nio/protocol/ httpcore-nio/src/test/java/org/apache/http/nio/protocol/ httpcore-nio/src/test/java/org/apache/h... Date: Tue, 30 Aug 2011 15:16:47 -0000 To: commits@hc.apache.org From: olegk@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110830151649.527282388A33@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NHttpEntityWrapper.java ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Aug 30 15:16:46 2011 @@ -0,0 +1 @@ +/httpcomponents/httpasyncclient/branches/conn-mgmt-redesign/httpasyncclient/src/main/java/org/apache/http/nio/client/methods/NHttpEntityWrapper.java:1155312-1159070 Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NHttpEntityWrapper.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java?rev=1163256&view=auto ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java (added) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java Tue Aug 30 15:16:46 2011 @@ -0,0 +1,76 @@ +/* + * ==================================================================== + * 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 + * . + * + */ + +package org.apache.http.nio.protocol; + +import java.io.IOException; +import java.nio.ByteBuffer; + +import org.apache.http.HttpRequest; +import org.apache.http.nio.ContentDecoder; +import org.apache.http.nio.IOControl; +import org.apache.http.protocol.HttpContext; + +class NullRequestConsumer implements HttpAsyncRequestConsumer { + + private final ByteBuffer buffer; + + NullRequestConsumer() { + super(); + this.buffer = ByteBuffer.allocate(2048); + } + + public void requestReceived(final HttpRequest request) { + } + + public void consumeContent( + final ContentDecoder decoder, final IOControl ioctrl) throws IOException { + int lastRead; + do { + this.buffer.clear(); + lastRead = decoder.read(this.buffer); + } while (lastRead > 0); + } + + public void requestCompleted(final HttpContext context) { + } + + public void failed(final Exception ex) { + } + + public Object getResult() { + return Boolean.TRUE; + } + + public Exception getException() { + return null; + } + + public void close() throws IOException { + } + +} \ No newline at end of file Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestConsumer.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java?rev=1163256&view=auto ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java (added) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java Tue Aug 30 15:16:46 2011 @@ -0,0 +1,56 @@ +/* + * ==================================================================== + * 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 + * . + * + */ + +package org.apache.http.nio.protocol; + +import org.apache.http.HttpRequest; +import org.apache.http.HttpStatus; +import org.apache.http.HttpVersion; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.protocol.HttpContext; + +class NullRequestHandler implements HttpAsyncRequestHandler { + + public NullRequestHandler() { + super(); + } + + public HttpAsyncRequestConsumer processRequest( + final HttpRequest request, final HttpContext context) { + return new NullRequestConsumer(); + } + + public void handle( + final Object obj, + final HttpAsyncResponseTrigger trigger, + final HttpContext context) { + trigger.submitResponse(new ErrorResponseProducer( + HttpVersion.HTTP_1_0, HttpStatus.SC_NOT_IMPLEMENTED, + NStringEntity.create("Service not implemented"), true)); + } + +} Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/NullRequestHandler.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java?rev=1163256&view=auto ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java (added) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java Tue Aug 30 15:16:46 2011 @@ -0,0 +1,295 @@ +/* + * ==================================================================== + * 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 + * . + * + */ + +package org.apache.http.nio.protocol; + +import java.io.UnsupportedEncodingException; +import java.net.InetSocketAddress; +import java.util.LinkedList; +import java.util.Queue; +import java.util.concurrent.ConcurrentLinkedQueue; + +import org.apache.http.HttpCoreNIOTestBase; +import org.apache.http.HttpEntityEnclosingRequest; +import org.apache.http.HttpRequest; +import org.apache.http.HttpRequestInterceptor; +import org.apache.http.HttpResponseInterceptor; +import org.apache.http.HttpStatus; +import org.apache.http.HttpVersion; +import org.apache.http.impl.DefaultConnectionReuseStrategy; +import org.apache.http.message.BasicHttpEntityEnclosingRequest; +import org.apache.http.message.BasicHttpRequest; +import org.apache.http.nio.entity.NStringEntity; +import org.apache.http.nio.reactor.IOReactorStatus; +import org.apache.http.nio.reactor.ListenerEndpoint; +import org.apache.http.nio.reactor.SessionRequest; +import org.apache.http.params.CoreProtocolPNames; +import org.apache.http.protocol.HttpProcessor; +import org.apache.http.protocol.ImmutableHttpProcessor; +import org.apache.http.protocol.RequestConnControl; +import org.apache.http.protocol.RequestContent; +import org.apache.http.protocol.RequestExpectContinue; +import org.apache.http.protocol.RequestTargetHost; +import org.apache.http.protocol.RequestUserAgent; +import org.apache.http.protocol.ResponseConnControl; +import org.apache.http.protocol.ResponseContent; +import org.apache.http.protocol.ResponseDate; +import org.apache.http.protocol.ResponseServer; +import org.apache.http.testserver.SimpleEventListener; +import org.junit.Assert; +import org.junit.Test; + +/** + * HttpCore NIO integration tests for async handlers. + */ +public class TestHttpAsyncHandlers extends HttpCoreNIOTestBase { + + static class BasicHttpAsyncRequestHandlerResolver implements HttpAsyncRequestHandlerResolver { + + private final HttpAsyncRequestHandler handler; + + public BasicHttpAsyncRequestHandlerResolver(final HttpAsyncRequestHandler handler) { + super(); + this.handler = handler; + } + + public HttpAsyncRequestHandler lookup(String requestURI) { + return this.handler; + } + + } + + private void executeStandardTest( + final HttpAsyncRequestHandler requestHandler, + final NHttpRequestExecutionHandler requestExecutionHandler) throws Exception { + int connNo = 3; + int reqNo = 20; + Job[] jobs = new Job[connNo * reqNo]; + for (int i = 0; i < jobs.length; i++) { + jobs[i] = new Job(); + } + Queue queue = new ConcurrentLinkedQueue(); + for (int i = 0; i < jobs.length; i++) { + queue.add(jobs[i]); + } + + HttpProcessor serverHttpProc = new ImmutableHttpProcessor(new HttpResponseInterceptor[] { + new ResponseDate(), + new ResponseServer(), + new ResponseContent(), + new ResponseConnControl() + }); + + HttpAsyncServiceHandler serviceHandler = new HttpAsyncServiceHandler( + new BasicHttpAsyncRequestHandlerResolver(requestHandler), + serverHttpProc, + new DefaultConnectionReuseStrategy(), + this.server.getParams()); + + HttpProcessor clientHttpProc = new ImmutableHttpProcessor(new HttpRequestInterceptor[] { + new RequestContent(), + new RequestTargetHost(), + new RequestConnControl(), + new RequestUserAgent(), + new RequestExpectContinue()}); + + AsyncNHttpClientHandler clientHandler = new AsyncNHttpClientHandler( + clientHttpProc, + requestExecutionHandler, + new DefaultConnectionReuseStrategy(), + this.client.getParams()); + + clientHandler.setEventListener( + new SimpleEventListener()); + + this.server.start(serviceHandler); + this.client.start(clientHandler); + + ListenerEndpoint endpoint = this.server.getListenerEndpoint(); + endpoint.waitFor(); + InetSocketAddress serverAddress = (InetSocketAddress) endpoint.getAddress(); + + Assert.assertEquals("Test server status", IOReactorStatus.ACTIVE, this.server.getStatus()); + + Queue connRequests = new LinkedList(); + for (int i = 0; i < connNo; i++) { + SessionRequest sessionRequest = this.client.openConnection( + new InetSocketAddress("localhost", serverAddress.getPort()), + queue); + connRequests.add(sessionRequest); + } + + while (!connRequests.isEmpty()) { + SessionRequest sessionRequest = connRequests.remove(); + sessionRequest.waitFor(); + if (sessionRequest.getException() != null) { + throw sessionRequest.getException(); + } + Assert.assertNotNull(sessionRequest.getSession()); + } + + Assert.assertEquals("Test client status", IOReactorStatus.ACTIVE, this.client.getStatus()); + + for (int i = 0; i < jobs.length; i++) { + Job testjob = jobs[i]; + testjob.waitFor(); + if (testjob.isSuccessful()) { + Assert.assertEquals(HttpStatus.SC_OK, testjob.getStatusCode()); + Assert.assertEquals(testjob.getExpected(), testjob.getResult()); + } else { + Assert.fail(testjob.getFailureMessage()); + } + } + } + + /** + * This test case executes a series of simple (non-pipelined) GET requests + * over multiple connections. This uses non-blocking output entities. + */ + @Test + public void testHttpGets() throws Exception { + NHttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() { + + @Override + protected HttpRequest generateRequest(Job testjob) { + String s = testjob.getPattern() + "x" + testjob.getCount(); + return new BasicHttpRequest("GET", s); + } + + }; + executeStandardTest(new BufferingAsyncRequestHandler(new RequestHandler()), requestExecutionHandler); + } + + /** + * This test case executes a series of simple (non-pipelined) POST requests + * with content length delimited content over multiple connections. + * It uses purely asynchronous handlers. + */ + @Test + public void testHttpPostsWithContentLength() throws Exception { + NHttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() { + + @Override + protected HttpRequest generateRequest(Job testjob) { + String s = testjob.getPattern() + "x" + testjob.getCount(); + HttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", s); + NStringEntity entity = null; + try { + entity = new NStringEntity(testjob.getExpected(), "US-ASCII"); + entity.setChunked(false); + } catch (UnsupportedEncodingException ignore) { + } + r.setEntity(entity); + return r; + } + + }; + executeStandardTest(new BufferingAsyncRequestHandler(new RequestHandler()), requestExecutionHandler); + } + + /** + * This test case executes a series of simple (non-pipelined) POST requests + * with chunk coded content content over multiple connections. This tests + * with nonblocking handlers & nonblocking entities. + */ + @Test + public void testHttpPostsChunked() throws Exception { + NHttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() { + + @Override + protected HttpRequest generateRequest(Job testjob) { + String s = testjob.getPattern() + "x" + testjob.getCount(); + HttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", s); + NStringEntity entity = null; + try { + entity = new NStringEntity(testjob.getExpected(), "US-ASCII"); + entity.setChunked(true); + } catch (UnsupportedEncodingException ignore) { + } + r.setEntity(entity); + return r; + } + + }; + executeStandardTest(new BufferingAsyncRequestHandler(new RequestHandler()), requestExecutionHandler); + } + + /** + * This test case executes a series of simple (non-pipelined) HTTP/1.0 + * POST requests over multiple persistent connections. This tests with nonblocking + * handlers & entities. + */ + @Test + public void testHttpPostsHTTP10() throws Exception { + NHttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() { + + @Override + protected HttpRequest generateRequest(Job testjob) { + String s = testjob.getPattern() + "x" + testjob.getCount(); + HttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", s, + HttpVersion.HTTP_1_0); + NStringEntity entity = null; + try { + entity = new NStringEntity(testjob.getExpected(), "US-ASCII"); + } catch (UnsupportedEncodingException ignore) { + } + r.setEntity(entity); + return r; + } + + }; + executeStandardTest(new BufferingAsyncRequestHandler(new RequestHandler()), requestExecutionHandler); + } + + /** + * This test case executes a series of simple (non-pipelined) POST requests + * over multiple connections using the 'expect: continue' handshake. This test + * uses nonblocking handlers & entities. + */ + @Test + public void testHttpPostsWithExpectContinue() throws Exception { + NHttpRequestExecutionHandler requestExecutionHandler = new RequestExecutionHandler() { + + @Override + protected HttpRequest generateRequest(Job testjob) { + String s = testjob.getPattern() + "x" + testjob.getCount(); + HttpEntityEnclosingRequest r = new BasicHttpEntityEnclosingRequest("POST", s); + NStringEntity entity = null; + try { + entity = new NStringEntity(testjob.getExpected(), "US-ASCII"); + } catch (UnsupportedEncodingException ignore) { + } + r.setEntity(entity); + r.getParams().setBooleanParameter(CoreProtocolPNames.USE_EXPECT_CONTINUE, true); + return r; + } + + }; + executeStandardTest(new BufferingAsyncRequestHandler(new RequestHandler()), requestExecutionHandler); + } + +} Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java ------------------------------------------------------------------------------ svn:keywords = Date Revision Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncHandlers.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpSSLServer.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpSSLServer.java?rev=1163256&r1=1163255&r2=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpSSLServer.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/HttpSSLServer.java Tue Aug 30 15:16:46 2011 @@ -41,10 +41,12 @@ import javax.net.ssl.SSLContext; import org.apache.http.impl.nio.reactor.DefaultListeningIOReactor; import org.apache.http.impl.nio.reactor.ExceptionEvent; import org.apache.http.impl.nio.ssl.SSLServerIOEventDispatch; +import org.apache.http.nio.NHttpServerIOTarget; import org.apache.http.nio.NHttpServiceHandler; import org.apache.http.nio.reactor.IOEventDispatch; import org.apache.http.nio.reactor.IOReactorExceptionHandler; import org.apache.http.nio.reactor.IOReactorStatus; +import org.apache.http.nio.reactor.IOSession; import org.apache.http.nio.reactor.ListenerEndpoint; import org.apache.http.params.HttpParams; @@ -110,7 +112,18 @@ public class HttpSSLServer { final NHttpServiceHandler serviceHandler, final SSLContext sslcontext, final HttpParams params) { - return new SSLServerIOEventDispatch(serviceHandler, sslcontext, params); + return new SSLServerIOEventDispatch(serviceHandler, sslcontext, params) { + + @Override + protected NHttpServerIOTarget createConnection(final IOSession session) { + return new LoggingNHttpServerConnection( + session, + createHttpRequestFactory(), + createByteBufferAllocator(), + params); + } + + }; } private void execute(final NHttpServiceHandler serviceHandler) throws IOException { 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=1163256&r1=1163255&r2=1163256&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 Tue Aug 30 15:16:46 2011 @@ -34,10 +34,12 @@ import java.util.List; import org.apache.http.impl.nio.DefaultServerIOEventDispatch; import org.apache.http.impl.nio.reactor.DefaultListeningIOReactor; import org.apache.http.impl.nio.reactor.ExceptionEvent; +import org.apache.http.nio.NHttpServerIOTarget; import org.apache.http.nio.NHttpServiceHandler; import org.apache.http.nio.reactor.IOEventDispatch; import org.apache.http.nio.reactor.IOReactorExceptionHandler; import org.apache.http.nio.reactor.IOReactorStatus; +import org.apache.http.nio.reactor.IOSession; import org.apache.http.nio.reactor.ListenerEndpoint; import org.apache.http.params.HttpParams; @@ -69,7 +71,18 @@ public class HttpServerNio { protected IOEventDispatch createIOEventDispatch( final NHttpServiceHandler serviceHandler, final HttpParams params) { - return new DefaultServerIOEventDispatch(serviceHandler, params); + return new DefaultServerIOEventDispatch(serviceHandler, params) { + + @Override + protected NHttpServerIOTarget createConnection(final IOSession session) { + return new LoggingNHttpServerConnection( + session, + createHttpRequestFactory(), + createByteBufferAllocator(), + params); + } + + }; } private void execute(final NHttpServiceHandler serviceHandler) throws IOException { Copied: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java (from r1163243, httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java?p2=httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java&p1=httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java&r1=1163243&r2=1163256&rev=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java Tue Aug 30 15:16:46 2011 @@ -25,7 +25,7 @@ * */ -package org.apache.http.contrib.logging; +package org.apache.http.testserver; import java.io.IOException; import java.net.SocketAddress; Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Aug 30 15:16:46 2011 @@ -0,0 +1 @@ +/httpcomponents/httpcore/branches/ibm_compat_branch/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingIOSession.java:755687-758898 Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingIOSession.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java (from r1163246, httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientConnection.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java?p2=httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java&p1=httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientConnection.java&r1=1163246&r2=1163256&rev=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientConnection.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java Tue Aug 30 15:16:46 2011 @@ -25,7 +25,7 @@ * */ -package org.apache.http.contrib.logging; +package org.apache.http.testserver; import java.io.IOException; import java.nio.channels.ReadableByteChannel; Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Aug 30 15:16:46 2011 @@ -0,0 +1 @@ +/httpcomponents/httpcore/branches/ibm_compat_branch/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpClientConnection.java:755687-758898 Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpClientConnection.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java (from r1163244, httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerConnection.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java?p2=httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java&p1=httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerConnection.java&r1=1163244&r2=1163256&rev=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerConnection.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java Tue Aug 30 15:16:46 2011 @@ -25,7 +25,7 @@ * */ -package org.apache.http.contrib.logging; +package org.apache.http.testserver; import java.io.IOException; import java.nio.channels.ReadableByteChannel; Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Aug 30 15:16:46 2011 @@ -0,0 +1 @@ +/httpcomponents/httpcore/branches/ibm_compat_branch/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/LoggingNHttpServerConnection.java:755687-758898 Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/LoggingNHttpServerConnection.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Copied: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java (from r1163243, httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/Wire.java) URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java?p2=httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java&p1=httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/Wire.java&r1=1163243&r2=1163256&rev=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/Wire.java (original) +++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java Tue Aug 30 15:16:46 2011 @@ -24,7 +24,8 @@ * . * */ -package org.apache.http.contrib.logging; + +package org.apache.http.testserver; import java.nio.ByteBuffer; Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java ------------------------------------------------------------------------------ svn:keywords = Date Author Id Revision HeadURL Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java ------------------------------------------------------------------------------ --- svn:mergeinfo (added) +++ svn:mergeinfo Tue Aug 30 15:16:46 2011 @@ -0,0 +1 @@ +/httpcomponents/httpcore/branches/ibm_compat_branch/httpcore-contrib/src/main/java/org/apache/http/contrib/logging/Wire.java:755687-758898 Propchange: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/testserver/Wire.java ------------------------------------------------------------------------------ svn:mime-type = text/plain Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/BasicHttpContext.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/BasicHttpContext.java?rev=1163256&r1=1163255&r2=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/BasicHttpContext.java (original) +++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/BasicHttpContext.java Tue Aug 30 15:16:46 2011 @@ -90,4 +90,13 @@ public class BasicHttpContext implements } } + /** + * @since 4.2 + */ + public void clear() { + if (this.map != null) { + this.map.clear(); + } + } + } Modified: httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java?rev=1163256&r1=1163255&r2=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java (original) +++ httpcomponents/httpcore/trunk/httpcore/src/main/java/org/apache/http/protocol/SyncBasicHttpContext.java Tue Aug 30 15:16:46 2011 @@ -41,6 +41,13 @@ public class SyncBasicHttpContext extend super(parentContext); } + /** + * @since 4.2 + */ + public SyncBasicHttpContext() { + super(); + } + @Override public synchronized Object getAttribute(final String id) { return super.getAttribute(id); @@ -56,4 +63,12 @@ public class SyncBasicHttpContext extend return super.removeAttribute(id); } + /** + * @since 4.2 + */ + @Override + public synchronized void clear() { + super.clear(); + } + } Modified: httpcomponents/httpcore/trunk/pom.xml URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/pom.xml?rev=1163256&r1=1163255&r2=1163256&view=diff ============================================================================== --- httpcomponents/httpcore/trunk/pom.xml (original) +++ httpcomponents/httpcore/trunk/pom.xml Tue Aug 30 15:16:46 2011 @@ -75,7 +75,8 @@ UTF-8 4.8.2 1.8.5 - 4.0 + 1.1.1 + 4.1 @@ -92,6 +93,12 @@ ${mockito.version} test + + commons-logging + commons-logging + ${commons-logging.version} + test +