[ https://issues.apache.org/jira/browse/HTTPCORE-468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16015264#comment-16015264 ]
Gary Gregory commented on HTTPCORE-468: --------------------------------------- Hi All, Ported to the branch {{dev/5.0.x/HTTPCORE-468}}. Please review. Thank you, Gary > 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 > Assignee: Gary Gregory > Fix For: 4.4.7 > > > 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: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org