hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Gregory (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCORE-468) Allow HttpAsyncService subclasses to customize the HTTP status code
Date Thu, 18 May 2017 06:11:04 GMT

    [ 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-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org


Mime
View raw message