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 2012/07/17 17:28:28 UTC
svn commit: r1362541 - in
/httpcomponents/httpasyncclient/trunk/httpasyncclient/src:
main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java
test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java
Author: olegk
Date: Tue Jul 17 15:28:28 2012
New Revision: 1362541
URL: http://svn.apache.org/viewvc?rev=1362541&view=rev
Log:
Temporary workaround for HTTPASYNC-21
Modified:
httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java
httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java
Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java?rev=1362541&r1=1362540&r2=1362541&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/main/java/org/apache/http/impl/nio/client/LoggingAsyncRequestExecutor.java Tue Jul 17 15:28:28 2012
@@ -28,13 +28,16 @@
package org.apache.http.impl.nio.client;
import java.io.IOException;
+import java.lang.reflect.Method;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.http.ConnectionClosedException;
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.protocol.HttpAsyncRequestExecutionHandler;
import org.apache.http.nio.protocol.HttpAsyncRequestExecutor;
class LoggingAsyncRequestExecutor extends HttpAsyncRequestExecutor {
@@ -128,4 +131,23 @@ class LoggingAsyncRequestExecutor extend
super.timeout(conn);
}
+ @Override
+ public void endOfInput(NHttpClientConnection conn) throws IOException {
+ ///
+ /// TODO: remove when fix for HTTPASYNC-21 is available in HttpCore stable release
+ ///
+ HttpAsyncRequestExecutionHandler<?> handler = (HttpAsyncRequestExecutionHandler<?>) conn.getContext().getAttribute(HTTP_HANDLER);
+ Object state = conn.getContext().getAttribute("http.nio.http-exchange-state");
+ try {
+ Method m1 = state.getClass().getDeclaredMethod("getRequestState");
+ m1.setAccessible(true);
+ Object obj = m1.invoke(state);
+ if (!obj.toString().equals("READY")) {
+ handler.failed(new ConnectionClosedException("Connection closed"));
+ }
+ } catch (Exception ex) {
+ }
+ super.endOfInput(conn);
+ }
+
}
Modified: httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java?rev=1362541&r1=1362540&r2=1362541&view=diff
==============================================================================
--- httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java (original)
+++ httpcomponents/httpasyncclient/trunk/httpasyncclient/src/test/java/org/apache/http/nio/client/integration/TestHttpAsyncPrematureTermination.java Tue Jul 17 15:28:28 2012
@@ -65,7 +65,6 @@ import org.apache.http.protocol.HttpCont
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
public class TestHttpAsyncPrematureTermination extends HttpAsyncTestBase {
@@ -115,7 +114,7 @@ public class TestHttpAsyncPrematureTermi
return target;
}
- @Test @Ignore
+ @Test
public void testConnectionTerminatedProcessingRequest() throws Exception {
HttpAsyncRequestHandlerRegistry registry = new HttpAsyncRequestHandlerRegistry();
registry.register("*", new HttpAsyncRequestHandler<HttpRequest>() {
@@ -125,7 +124,6 @@ public class TestHttpAsyncPrematureTermi
final HttpContext context) throws HttpException, IOException {
HttpConnection conn = (HttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- System.out.println("Boom!!!!");
conn.shutdown();
return new BasicAsyncRequestConsumer();
}
@@ -165,7 +163,7 @@ public class TestHttpAsyncPrematureTermi
Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
}
- @Test @Ignore
+ @Test
public void testConnectionTerminatedHandlingRequest() throws Exception {
HttpAsyncRequestHandlerRegistry registry = new HttpAsyncRequestHandlerRegistry();
registry.register("*", new HttpAsyncRequestHandler<HttpRequest>() {
@@ -182,7 +180,6 @@ public class TestHttpAsyncPrematureTermi
final HttpContext context) throws HttpException, IOException {
HttpConnection conn = (HttpConnection) context.getAttribute(
ExecutionContext.HTTP_CONNECTION);
- System.out.println("Boom!!!!");
conn.shutdown();
HttpResponse response = httpExchange.getResponse();
response.setEntity(new NStringEntity("all is well", ContentType.TEXT_PLAIN));