You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by gg...@apache.org on 2017/05/18 23:27:06 UTC
[1/2] httpcomponents-core git commit: [HTTPCORE-468]
Repository: httpcomponents-core
Updated Branches:
refs/heads/master 9ec06ec64 -> 28cfcce90
[HTTPCORE-468]
Allow HttpAsyncService subclasses to customize the HTTP
status code.
Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/8374fec6
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/8374fec6
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/8374fec6
Branch: refs/heads/master
Commit: 8374fec658d42a321a671a8c89660d02203fe9f8
Parents: 8099ed1
Author: Gary Gregory <gg...@apache.org>
Authored: Thu May 18 16:18:16 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Thu May 18 16:18:16 2017 -0700
----------------------------------------------------------------------
.../hc/core5/http/impl/io/HttpService.java | 27 ++++++++++++--------
.../http/impl/nio/ServerHttp1StreamHandler.java | 14 ++++++----
2 files changed, 25 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/8374fec6/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
index b0efe13..216d1f4 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/io/HttpService.java
@@ -267,23 +267,28 @@ public class HttpService {
* @param response the HTTP response.
*/
protected void handleException(final HttpException ex, final ClassicHttpResponse response) {
+ response.setCode(toStatusCode(ex, response));
+ String message = ex.getMessage();
+ if (message == null) {
+ message = ex.toString();
+ }
+ response.setEntity(new StringEntity(message, ContentType.TEXT_PLAIN));
+ }
+
+ protected int toStatusCode(final Exception ex, final ClassicHttpResponse response) {
+ final int code;
if (ex instanceof MethodNotSupportedException) {
- response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
+ code = HttpStatus.SC_NOT_IMPLEMENTED;
} else if (ex instanceof UnsupportedHttpVersionException) {
- response.setCode(HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED);
+ code = HttpStatus.SC_HTTP_VERSION_NOT_SUPPORTED;
} else if (ex instanceof NotImplementedException) {
- response.setCode(HttpStatus.SC_NOT_IMPLEMENTED);
+ code = HttpStatus.SC_NOT_IMPLEMENTED;
} else if (ex instanceof ProtocolException) {
- response.setCode(HttpStatus.SC_BAD_REQUEST);
+ code = HttpStatus.SC_BAD_REQUEST;
} else {
- response.setCode(HttpStatus.SC_INTERNAL_SERVER_ERROR);
- }
- String message = ex.getMessage();
- if (message == null) {
- message = ex.toString();
+ code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
}
- final StringEntity entity = new StringEntity(message, ContentType.TEXT_PLAIN);
- response.setEntity(entity);
+ return code;
}
/**
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/8374fec6/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
----------------------------------------------------------------------
diff --git a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
index 8bafa4c..7b2b698 100644
--- a/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
+++ b/httpcore5/src/main/java/org/apache/hc/core5/http/impl/nio/ServerHttp1StreamHandler.java
@@ -206,6 +206,14 @@ class ServerHttp1StreamHandler implements ResourceHolder {
}
AsyncResponseProducer handleException(final Exception ex) {
+ String message = ex.getMessage();
+ if (message == null) {
+ message = ex.toString();
+ }
+ return new BasicResponseProducer(toStatusCode(ex), message);
+ }
+
+ protected int toStatusCode(final Exception ex) {
final int code;
if (ex instanceof MethodNotSupportedException) {
code = HttpStatus.SC_NOT_IMPLEMENTED;
@@ -218,11 +226,7 @@ class ServerHttp1StreamHandler implements ResourceHolder {
} else {
code = HttpStatus.SC_INTERNAL_SERVER_ERROR;
}
- String message = ex.getMessage();
- if (message == null) {
- message = ex.toString();
- }
- return new BasicResponseProducer(code, message);
+ return code;
}
void consumeHeader(final HttpRequest request, final boolean requestEndStream) throws HttpException, IOException {
[2/2] httpcomponents-core git commit: Merge branch
'dev/5.0.x/HTTPCORE-468'
Posted by gg...@apache.org.
Merge branch 'dev/5.0.x/HTTPCORE-468'
[HTTPCORE-468] Allow HttpAsyncService subclasses to customize the HTTP
status code.
Project: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/commit/28cfcce9
Tree: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/tree/28cfcce9
Diff: http://git-wip-us.apache.org/repos/asf/httpcomponents-core/diff/28cfcce9
Branch: refs/heads/master
Commit: 28cfcce90ac732b1f6a4d5d7176330c89d628ed3
Parents: 9ec06ec 8374fec
Author: Gary Gregory <gg...@apache.org>
Authored: Thu May 18 16:27:03 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Thu May 18 16:27:03 2017 -0700
----------------------------------------------------------------------
RELEASE_NOTES.txt | 9 +++++++
.../hc/core5/http/impl/io/HttpService.java | 27 ++++++++++++--------
.../http/impl/nio/ServerHttp1StreamHandler.java | 14 ++++++----
3 files changed, 34 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/httpcomponents-core/blob/28cfcce9/RELEASE_NOTES.txt
----------------------------------------------------------------------
diff --cc RELEASE_NOTES.txt
index 7c1c829,7c1c829..6ea30f9
--- a/RELEASE_NOTES.txt
+++ b/RELEASE_NOTES.txt
@@@ -1,3 -1,3 +1,12 @@@
++Release 5.0-ALPHA4
++-------------------
++
++Changelog
++-------------------
++
++* HTTPCORE-468: Allow HttpAsyncService subclasses to customize the HTTP status code.
++
++
Release 5.0-ALPHA3
-------------------