Gary Gregory created HTTPCORE-468:
-------------------------------------

             Summary: Allow HttpAsyncService subclasses to customize the HTTP 
status code
                 Key: HTTPCORE-468
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-468
             Project: HttpComponents HttpCore
          Issue Type: Improvement
          Components: HttpCore NIO
    Affects Versions: 4.4.6
            Reporter: Gary Gregory


As a developer, I would like to allow my {{HttpAsyncService}} subclasses to 
customize the HTTP status code. I propose to refactor the method 
{{org.apache.http.nio.protocol.HttpAsyncService.handleException(Exception, 
HttpContext)}} like so:

{noformat}
diff --git 
a/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncService.java 
b/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncService.java
index f941399..789b304 100644
--- 
a/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncService.java
+++ 
b/httpcore-nio/src/main/java/org/apache/http/nio/protocol/HttpAsyncService.java
@@ -614,6 +614,17 @@
 
     protected HttpAsyncResponseProducer handleException(
             final Exception ex, final HttpContext context) {
+        String message = ex.getMessage();
+        if (message == null) {
+            message = ex.toString();
+        }
+        final HttpResponse response = 
this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_1,
+                toStatusCode(ex, context), context);
+        return new ErrorResponseProducer(response,
+                new NStringEntity(message, ContentType.DEFAULT_TEXT), false);
+    }
+
+    protected int toStatusCode(final Exception ex, final HttpContext context) {
         final int code;
         if (ex instanceof MethodNotSupportedException) {
             code = HttpStatus.SC_NOT_IMPLEMENTED;
@@ -624,14 +635,7 @@
         } else {
             code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
         }
-        String message = ex.getMessage();
-        if (message == null) {
-            message = ex.toString();
-        }
-        final HttpResponse response = 
this.responseFactory.newHttpResponse(HttpVersion.HTTP_1_1,
-                code, context);
-        return new ErrorResponseProducer(response,
-                new NStringEntity(message, ContentType.DEFAULT_TEXT), false);
+        return code;
     }
 
     /**
{noformat}

As in {{dev/4.4.x/HTTPCORE-468}}.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to