[prev in list] [next in list] [prev in thread] [next in thread] 

List:       httpclient-commons-dev
Subject:    [jira] [Closed] (HTTPCORE-468) Allow HttpAsyncService subclasses to customize the HTTP status code
From:       "Gary Gregory (JIRA)" <jira () apache ! org>
Date:       2017-05-18 23:31:04
Message-ID: JIRA.13072291.1494899697000.246083.1495150264131 () Atlassian ! JIRA
[Download RAW message or body]


     [ https://issues.apache.org/jira/browse/HTTPCORE-468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]

Gary Gregory closed HTTPCORE-468.
---------------------------------
       Resolution: Fixed
    Fix Version/s: 5.0-alpha4

> 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, 5.0-alpha4
> 
> 
> 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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic