[
https://issues.apache.org/jira/browse/HTTPCORE-468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16015360#comment-16015360
]
Oleg Kalnichevski commented on HTTPCORE-468:
--------------------------------------------
Looks good, other that copying of release notes from the previous release.
Oleg
> 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: [email protected]
For additional commands, e-mail: [email protected]