Author: etnu
Date: Fri May 29 00:04:05 2009
New Revision: 779801

URL: http://svn.apache.org/viewvc?rev=779801&view=rev
Log:
Fixed a problem with MakeRequestHandler (makeRequest, HttpRequest, etc.) not 
properly handling any response bodies other than 'OK'. Really, any response can 
have a body (even "No Content", as bizarre as that sounds).


Modified:
    
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java?rev=779801&r1=779800&r2=779801&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/MakeRequestHandler.java
 Fri May 29 00:04:05 2009
@@ -18,6 +18,9 @@
  */
 package org.apache.shindig.gadgets.servlet;
 
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
 import org.apache.shindig.auth.AuthInfo;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.JsonSerializer;
@@ -34,9 +37,6 @@
 import org.apache.shindig.gadgets.rewrite.RequestRewriterRegistry;
 import org.apache.shindig.gadgets.rewrite.RewritingException;
 
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
 import java.io.IOException;
 import java.util.Collections;
 import java.util.Map;
@@ -141,7 +141,7 @@
 
     // Set the default content type  for post requests when a content type is 
not specified
     if ("POST".equals(req.getMethod()) && req.getHeader("Content-Type")==null) 
{
-      req.addHeader("Content-Type", "application/x-www-form-urlencoded"); 
+      req.addHeader("Content-Type", "application/x-www-form-urlencoded");
     }
 
     req.setIgnoreCache("1".equals(request.getParameter(NOCACHE_PARAM)));
@@ -182,10 +182,8 @@
   protected String convertResponseToJson(SecurityToken authToken, 
HttpServletRequest request,
       HttpResponse results) throws GadgetException {
     String originalUrl = request.getParameter(ProxyBase.URL_PARAM);
-    String body = "";
-    if (results.getHttpStatusCode() == 200) {
-      body = results.getResponseAsString();
-
+    String body = results.getResponseAsString();
+    if (body.length() > 0) {
       if ("FEED".equals(request.getParameter(CONTENT_TYPE_PARAM))) {
         body = processFeed(originalUrl, request, body);
       }

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java?rev=779801&r1=779800&r2=779801&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/MakeRequestHandlerTest.java
 Fri May 29 00:04:05 2009
@@ -22,6 +22,8 @@
 import static org.easymock.EasyMock.capture;
 import static org.easymock.EasyMock.expect;
 
+import com.google.common.collect.Lists;
+
 import org.apache.shindig.auth.AuthInfo;
 import org.apache.shindig.auth.SecurityToken;
 import org.apache.shindig.common.testing.FakeGadgetToken;
@@ -44,8 +46,6 @@
 
 import javax.servlet.http.HttpServletRequest;
 
-import com.google.common.collect.Lists;
-
 /**
  * Tests for MakeRequestHandler.
  */
@@ -109,7 +109,24 @@
     assertTrue(rewriter.responseWasRewritten());
   }
 
-  public void testGetRequestWIthRefresh() throws Exception {
+  public void testGetRequestWithUncommonStatusCode() throws Exception {
+    HttpRequest req = new HttpRequest(REQUEST_URL);
+    HttpResponse response = new HttpResponseBuilder()
+        .setHttpStatusCode(HttpResponse.SC_CREATED)
+        .setResponseString(RESPONSE_BODY)
+        .create();
+    expect(pipeline.execute(req)).andReturn(response);
+    replay();
+
+    handler.fetch(request, recorder);
+
+    JSONObject results = extractJsonFromResponse();
+    assertEquals(HttpResponse.SC_CREATED, results.getInt("rc"));
+    assertEquals(RESPONSE_BODY, results.get("body"));
+    assertTrue(rewriter.responseWasRewritten());
+  }
+
+  public void testGetRequestWithRefresh() throws Exception {
     
expect(request.getParameter(ProxyBase.REFRESH_PARAM)).andReturn("120").anyTimes();
 
     Capture<HttpRequest> requestCapture = new Capture<HttpRequest>();


Reply via email to