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 2013/04/30 12:41:38 UTC
svn commit: r1477544 - in /httpcomponents/httpcore/trunk/httpcore-nio/src:
main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java
test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java
Author: olegk
Date: Tue Apr 30 10:41:37 2013
New Revision: 1477544
URL: http://svn.apache.org/r1477544
Log:
Request output if request execution handler is not done (has subsequent requests)
Modified:
httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java
httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java?rev=1477544&r1=1477543&r2=1477544&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncRequestExecutor.java Tue Apr 30 10:41:37 2013
@@ -349,6 +349,9 @@ public class HttpAsyncRequestExecutor im
}
handler.responseCompleted();
state.reset();
+ if (!handler.isDone()) {
+ conn.requestOutput();
+ }
}
private boolean canResponseHaveBody(final HttpRequest request, final HttpResponse response) {
Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java?rev=1477544&r1=1477543&r2=1477544&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/test/java/org/apache/http/nio/protocol/TestHttpAsyncRequestExecutor.java Tue Apr 30 10:41:37 2013
@@ -454,6 +454,7 @@ public class TestHttpAsyncRequestExecuto
state.setRequest(request);
final BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
state.setResponse(response);
+ Mockito.when(this.exchangeHandler.isDone()).thenReturn(Boolean.TRUE);
this.connContext.setAttribute(HttpAsyncRequestExecutor.HTTP_EXCHANGE_STATE, state);
this.connContext.setAttribute(HttpAsyncRequestExecutor.HTTP_HANDLER, this.exchangeHandler);
Mockito.when(this.decoder.isCompleted()).thenReturn(Boolean.TRUE);
@@ -468,6 +469,27 @@ public class TestHttpAsyncRequestExecuto
}
@Test
+ public void testResponseContentOutputCompletedHandlerNotDone() throws Exception {
+ final State state = new HttpAsyncRequestExecutor.State();
+ final HttpRequest request = new BasicHttpRequest("GET", "/");
+ state.setRequest(request);
+ final BasicHttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
+ state.setResponse(response);
+ Mockito.when(this.exchangeHandler.isDone()).thenReturn(Boolean.FALSE);
+ this.connContext.setAttribute(HttpAsyncRequestExecutor.HTTP_EXCHANGE_STATE, state);
+ this.connContext.setAttribute(HttpAsyncRequestExecutor.HTTP_HANDLER, this.exchangeHandler);
+ Mockito.when(this.decoder.isCompleted()).thenReturn(Boolean.TRUE);
+
+ this.protocolHandler.inputReady(this.conn, this.decoder);
+
+ Assert.assertEquals(MessageState.READY, state.getRequestState());
+ Assert.assertEquals(MessageState.READY, state.getResponseState());
+ Mockito.verify(this.exchangeHandler).consumeContent(this.decoder, this.conn);
+ Mockito.verify(this.exchangeHandler).responseCompleted();
+ Mockito.verify(this.conn).requestOutput();
+ }
+
+ @Test
public void testResponseInvalidState() throws Exception {
final State state = new HttpAsyncRequestExecutor.State();
final HttpRequest request = new BasicHttpRequest("GET", "/");