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