Author: mrdon Date: Sun Oct 21 04:58:21 2007 New Revision: 586887 URL: http://svn.apache.org/viewvc?rev=586887&view=rev Log: Automatic handling to ensure no return from OK PUT, POST, and DELETE
Modified: struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersResource.java struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultRestInfo.java struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestInfo.java Modified: struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersResource.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersResource.java?rev=586887&r1=586886&r2=586887&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersResource.java (original) +++ struts/sandbox/trunk/struts2-rest-plugin/showcase/src/main/java/org/apache/struts2/rest/example/OrdersResource.java Sun Oct 21 04:58:21 2007 @@ -46,13 +46,11 @@ public String destroy() { orders.remove(model.getId()); - model = null; return "success"; } public RestInfo create() { orders.put(model.getId(), model); - model = null; return new DefaultRestInfo() .setLocationId(model.getId()) .renderResult("success"); @@ -60,7 +58,6 @@ public String update() { orders.put(model.getId(), model); - model = null; return "success"; } Modified: struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java?rev=586887&r1=586886&r2=586887&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java (original) +++ struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/ContentTypeHandlerManager.java Sun Oct 21 04:58:21 2007 @@ -28,6 +28,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import static javax.servlet.http.HttpServletResponse.SC_OK; import org.apache.struts2.ServletActionContext; import org.apache.struts2.rest.handler.ContentTypeHandler; @@ -73,12 +74,22 @@ target = ((ModelDriven)target).getModel(); } + boolean statusNotOk = false; if (methodResult instanceof RestInfo) { RestInfo info = (RestInfo) methodResult; resultCode = info.apply(req, res, target); + if (info.getStatus() != SC_OK) { + statusNotOk = true; + } } else { resultCode = (String) methodResult; } + + // Don't return any content for PUT, DELETE, and POST where there are no errors + if (!statusNotOk && !"get".equalsIgnoreCase(req.getMethod())) { + target = null; + } + ContentTypeHandler handler = getHandlerForRequest(req); String extCode = resultCode+"-"+handler.getExtension(); if (actionConfig.getResults().get(extCode) != null) { @@ -95,6 +106,7 @@ } } return resultCode; + } protected String findExtension(String url) { Modified: struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultRestInfo.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultRestInfo.java?rev=586887&r1=586886&r2=586887&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultRestInfo.java (original) +++ struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/DefaultRestInfo.java Sun Oct 21 04:58:21 2007 @@ -101,6 +101,10 @@ } return resultCode; } + + public int getStatus() { + return status; + } Modified: struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestInfo.java URL: http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestInfo.java?rev=586887&r1=586886&r2=586887&view=diff ============================================================================== --- struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestInfo.java (original) +++ struts/sandbox/trunk/struts2-rest-plugin/src/main/java/org/apache/struts2/rest/RestInfo.java Sun Oct 21 04:58:21 2007 @@ -27,4 +27,6 @@ String apply(HttpServletRequest request, HttpServletResponse response, Object target); + + int getStatus(); }