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]