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();
 }


Reply via email to