Author: zhoresh
Date: Wed Nov 17 03:09:47 2010
New Revision: 1035911

URL: http://svn.apache.org/viewvc?rev=1035911&view=rev
Log:
Ref http://codereview.appspot.com/3087042/
Handle empty response for proxy content

Modified:
    
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
    
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java

Modified: 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java?rev=1035911&r1=1035910&r2=1035911&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerService.java
 Wed Nov 17 03:09:47 2010
@@ -436,10 +436,14 @@ public class GadgetsHandlerService {
 
     GadgetsHandlerApi.HttpResponse beanHttp = null;
     if (httpResponse != null) {
-      // Stream out the base64-encoded data.
-      // Ctor args indicate to encode w/o line breaks.
-      Base64InputStream b64input = new 
Base64InputStream(httpResponse.getResponse(), true, 0, null);
-      String content = IOUtils.toString(b64input);
+      String content = "";
+      if (httpResponse.getContentLength() > 0) {
+        // Stream out the base64-encoded data.
+        // Ctor args indicate to encode w/o line breaks.
+        Base64InputStream b64input =
+            new Base64InputStream(httpResponse.getResponse(), true, 0, null);
+        content = IOUtils.toString(b64input);
+      }
 
       ImmutableList.Builder<GadgetsHandlerApi.NameValuePair> headersBuilder =
           ImmutableList.builder();

Modified: 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
URL: 
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java?rev=1035911&r1=1035910&r2=1035911&view=diff
==============================================================================
--- 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
 (original)
+++ 
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/GadgetsHandlerServiceTest.java
 Wed Nov 17 03:09:47 2010
@@ -458,6 +458,27 @@ public class GadgetsHandlerServiceTest e
     verify();
   }
 
+  @Test
+  public void testGetProxyEmptyData() throws Exception {
+    List<String> fields = ImmutableList.of("proxycontent.*");
+    Uri resUri = Uri.parse("server.com/gadgets/proxy?url=" + RESOURCE);
+    GadgetsHandlerApi.ProxyRequest request = createProxyRequest(RESOURCE, 
CONTAINER, fields);
+    Capture<List<ProxyUri>> uriCapture = new Capture<List<ProxyUri>>();
+    expect(proxyUriManager.make(capture(uriCapture), EasyMock.anyInt()))
+        .andReturn(ImmutableList.of(resUri));
+    HttpResponse httpResponse = new 
HttpResponseBuilder().setHttpStatusCode(504).create();
+    
expect(proxyHandler.fetch(EasyMock.isA(ProxyUri.class))).andReturn(httpResponse);
+    replay();
+    GadgetsHandlerApi.ProxyResponse response = gadgetHandler.getProxy(request);
+    assertEquals(1, uriCapture.getValue().size());
+    ProxyUri pUri = uriCapture.getValue().get(0);
+    assertEquals(CONTAINER, pUri.getContainer());
+    assertNull(response.getProxyUrl());
+    assertEquals("", response.getProxyContent().getContentBase64());
+    assertEquals(504, response.getProxyContent().getCode());
+    verify();
+  }
+
   @Test(expected = ProcessingException.class)
   public void testGetProxyDataFail() throws Exception {
     List<String> fields = ImmutableList.of("proxycontent.*");


Reply via email to