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/08/30 17:16:47 UTC
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...
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
+ * <http://www.apache.org/>.
+ *
+ */
+
+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<Object> {
+
+ 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
+ * <http://www.apache.org/>.
+ *
+ */
+
+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<Object> {
+
+ public NullRequestHandler() {
+ super();
+ }
+
+ public HttpAsyncRequestConsumer<Object> 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
+ * <http://www.apache.org/>.
+ *
+ */
+
+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<Job> queue = new ConcurrentLinkedQueue<Job>();
+ 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<SessionRequest> connRequests = new LinkedList<SessionRequest>();
+ 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 @@
* <http://www.apache.org/>.
*
*/
-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 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<junit.version>4.8.2</junit.version>
<mockito.version>1.8.5</mockito.version>
- <comparisonVersion>4.0</comparisonVersion>
+ <commons-logging.version>1.1.1</commons-logging.version>
+ <comparisonVersion>4.1</comparisonVersion>
</properties>
<dependencyManagement>
@@ -92,6 +93,12 @@
<version>${mockito.version}</version>
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>commons-logging</groupId>
+ <artifactId>commons-logging</artifactId>
+ <version>${commons-logging.version}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</dependencyManagement>