You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by jo...@apache.org on 2015/09/10 19:11:03 UTC

struts git commit: WW-4545 - Setting status code in HttpHeaders will be ignored

Repository: struts
Updated Branches:
  refs/heads/master e10658cb3 -> 4cd9a74cb


WW-4545 - Setting status code in HttpHeaders will be ignored


Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/4cd9a74c
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/4cd9a74c
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/4cd9a74c

Branch: refs/heads/master
Commit: 4cd9a74cb8efa8dc0d3c57ac267a70b0538f3bf0
Parents: e10658c
Author: Johannes Geppert <jo...@apache.org>
Authored: Thu Sep 10 19:11:12 2015 +0200
Committer: Johannes Geppert <jo...@apache.org>
Committed: Thu Sep 10 19:11:12 2015 +0200

----------------------------------------------------------------------
 .../rest/DefaultContentTypeHandlerManager.java       | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/struts/blob/4cd9a74c/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
----------------------------------------------------------------------
diff --git a/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java b/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
index 2e3201a..5f50bf9 100644
--- a/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
+++ b/plugins/rest/src/main/java/org/apache/struts2/rest/DefaultContentTypeHandlerManager.java
@@ -126,8 +126,12 @@ public class DefaultContentTypeHandlerManager implements ContentTypeHandlerManag
      */
     public String handleResult(ActionConfig actionConfig, Object methodResult, Object target) throws IOException {
         String resultCode = readResultCode(methodResult);
+        Integer statusCode = readStatusCode(methodResult);
         HttpServletRequest req = ServletActionContext.getRequest();
         HttpServletResponse res = ServletActionContext.getResponse();
+        if(statusCode != null) {
+            res.setStatus(statusCode);
+        }
 
         ContentTypeHandler handler = getHandlerForResponse(req, res);
         if (handler != null) {
@@ -143,13 +147,22 @@ public class DefaultContentTypeHandlerManager implements ContentTypeHandlerManag
                     res.setContentLength(data.length);
                     res.setContentType(handler.getContentType());
                     res.getOutputStream().write(data);
-                    res.getOutputStream().close();
+                    res.getOutputStream().flush();
                 }
             }
         }
         return resultCode;
     }
 
+
+    protected Integer readStatusCode(Object methodResult) {
+        if (methodResult instanceof HttpHeaders) {
+            return ((HttpHeaders) methodResult).getStatus();
+        } else {
+            return null;
+        }
+    }
+
     protected String readResultCode(Object methodResult) {
         if (methodResult == null) {
             return null;