Author: ieb
Date: Sat Nov 22 09:02:01 2008
New Revision: 719870

URL: http://svn.apache.org/viewvc?rev=719870&view=rev
Log:
         SHINDIG-593

Patch by Raul Bajales

iThe problem appears to be that Shindig checks for a BODY in an
incoming GET request. This checking for a BODY that doesn't actually
exist results in this error:

java.lang.RuntimeException: Could not get the post data from the request
org.apache.shindig.social.opensocial.service.RestfulRequestItem.<init>(RestfulRequestItem.java:76)
org.apache.shindig.social.opensocial.service.DataServiceServlet.handleSingleRequest(DataServiceServlet.java:94)
org.apache.shindig.social.opensocial.service.DataServiceServlet.doPost(DataServiceServlet.java:79)
org.apache.shindig.social.opensocial.service.DataServiceServlet.doGet(DataServiceServlet.java:47)
javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.shindig.social.core.oauth.AuthenticationServletFilter.doFilter(AuthenticationServletFilter.java:89)

Thanks

Modified:
    
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
    
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java

Modified: 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java?rev=719870&r1=719869&r2=719870&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/main/java/org/apache/shindig/social/opensocial/service/RestfulRequestItem.java
 Sat Nov 22 09:02:01 2008
@@ -69,11 +69,14 @@
     this.url = servletRequest.getPathInfo();
     this.params = createParameterMap(servletRequest);
 
-    try {
-      ServletInputStream is = servletRequest.getInputStream();
-      postData = IOUtils.toString(is, servletRequest.getCharacterEncoding());
-    } catch (IOException e) {
-      throw new RuntimeException("Could not get the post data from the 
request", e);
+    String method = getMethod(servletRequest);
+    if (method != null && !("GET").equals(method) && !("HEAD").equals(method)) 
{
+      try {
+        ServletInputStream is = servletRequest.getInputStream();
+        postData = IOUtils.toString(is, servletRequest.getCharacterEncoding());
+      } catch (IOException e) {
+        throw new RuntimeException("Could not get the post data from the 
request", e);
+      }
     }
   }
 

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java?rev=719870&r1=719869&r2=719870&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/dataservice/integration/AbstractLargeRestfulTests.java
 Sat Nov 22 09:02:01 2008
@@ -135,14 +135,16 @@
       postData = "";
     }
 
-    final InputStream stream = new ByteArrayInputStream(postData.getBytes());
-    ServletInputStream servletStream = new ServletInputStream() {
-      @Override
-      public int read() throws IOException {
-        return stream.read();
-      }
-    };
-    EasyMock.expect(req.getInputStream()).andReturn(servletStream);
+    if (!("GET").equals(method) && !("HEAD").equals(method)) {
+      final InputStream stream = new ByteArrayInputStream(postData.getBytes());
+      ServletInputStream servletStream = new ServletInputStream() {
+        @Override
+        public int read() throws IOException {
+          return stream.read();
+        }
+      };
+      EasyMock.expect(req.getInputStream()).andReturn(servletStream);
+    }
 
     ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
     PrintWriter writer = new PrintWriter(outputStream);

Modified: 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java?rev=719870&r1=719869&r2=719870&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java
 (original)
+++ 
incubator/shindig/trunk/java/social-api/src/test/java/org/apache/shindig/social/opensocial/service/DataServiceServletTest.java
 Sat Nov 22 09:02:01 2008
@@ -179,12 +179,14 @@
   private void setupRequest(String pathInfo, String actualMethod, String 
overrideMethod)
       throws IOException {
     EasyMock.expect(req.getCharacterEncoding()).andStubReturn("UTF-8");
-    EasyMock.expect(req.getInputStream()).andStubReturn(dummyPostData);
+    if (!("GET").equals(overrideMethod) && !("HEAD").equals(overrideMethod)) {
+      EasyMock.expect(req.getInputStream()).andStubReturn(dummyPostData);
+    }
     EasyMock.expect(req.getPathInfo()).andStubReturn(pathInfo);
     EasyMock.expect(req.getMethod()).andStubReturn(actualMethod);
     EasyMock.expect(req.getParameterNames()).andStubReturn(new 
StringTokenizer(""));
     
EasyMock.expect(req.getParameter(RestfulRequestItem.X_HTTP_METHOD_OVERRIDE)).andReturn(
-        overrideMethod);
+        overrideMethod).times(2);
     
EasyMock.expect(req.getParameter(DataServiceServlet.FORMAT_PARAM)).andReturn(null);
 
     
EasyMock.expect(req.getAttribute(EasyMock.isA(String.class))).andReturn(FAKE_GADGET_TOKEN);


Reply via email to