Author: gagan
Date: Thu Mar 10 19:00:35 2011
New Revision: 1080320
URL: http://svn.apache.org/viewvc?rev=1080320&view=rev
Log:
Patch by nikhilmadan23 | Issue 4260059: Rename copyResponseToServlet in
ServletUtils | http://codereview.appspot.com/4260059/
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletUtilTest.java
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java?rev=1080320&r1=1080319&r2=1080320&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/HtmlAccelServlet.java
Thu Mar 10 19:00:35 2011
@@ -65,7 +65,7 @@ public class HtmlAccelServlet extends In
response = ServletUtil.errorResponse(e);
}
- ServletUtil.copyResponseToServlet(response, servletResponse);
+ ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response,
servletResponse);
}
@Override
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java?rev=1080320&r1=1080319&r2=1080320&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyServlet.java
Thu Mar 10 19:00:35 2011
@@ -104,6 +104,6 @@ public class ProxyServlet extends Inject
HttpServletResponse.SC_BAD_REQUEST));
}
- ServletUtil.copyResponseToServlet(response, servletResponse);
+ ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response,
servletResponse);
}
}
Modified:
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java?rev=1080320&r1=1080319&r2=1080320&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
(original)
+++
shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ServletUtil.java
Thu Mar 10 19:00:35 2011
@@ -95,15 +95,32 @@ public final class ServletUtil {
}
}
- public static void copyResponseToServlet(HttpResponse response,
HttpServletResponse servletResponse)
+ public static void copyToServletResponseAndOverrideCacheHeaders(
+ HttpResponse response, HttpServletResponse servletResponse)
throws IOException {
- servletResponse.setStatus(response.getHttpStatusCode());
+ copyHeadersAndStatusToServletResponse(response, servletResponse);
+ HttpUtil.setCachingHeaders(servletResponse, (int)(response.getCacheTtl() /
1000L));
+ copyContentToServletResponse(response, servletResponse);
+ }
+
+ public static void copyToServletResponse(
+ HttpResponse response, HttpServletResponse servletResponse) throws
IOException {
+ copyHeadersAndStatusToServletResponse(response, servletResponse);
+ copyContentToServletResponse(response, servletResponse);
+ }
+
+ public static void copyContentToServletResponse(
+ HttpResponse response, HttpServletResponse servletResponse) throws
IOException {
servletResponse.setContentLength(response.getContentLength());
+ IOUtils.copy(response.getResponse(), servletResponse.getOutputStream());
+
+ }
+ public static void copyHeadersAndStatusToServletResponse(
+ HttpResponse response, HttpServletResponse servletResponse) {
+ servletResponse.setStatus(response.getHttpStatusCode());
for (Map.Entry<String, String> header : response.getHeaders().entries()) {
servletResponse.addHeader(header.getKey(), header.getValue());
}
- HttpUtil.setCachingHeaders(servletResponse, (int)(response.getCacheTtl() /
1000L));
- IOUtils.copy(response.getResponse(), servletResponse.getOutputStream());
}
/**
Modified:
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletUtilTest.java
URL:
http://svn.apache.org/viewvc/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletUtilTest.java?rev=1080320&r1=1080319&r2=1080320&view=diff
==============================================================================
---
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletUtilTest.java
(original)
+++
shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/servlet/ServletUtilTest.java
Thu Mar 10 19:00:35 2011
@@ -22,6 +22,7 @@ import org.apache.commons.codec.binary.B
import org.apache.shindig.common.servlet.HttpServletResponseRecorder;
import org.apache.shindig.common.servlet.HttpUtil;
import org.apache.shindig.common.uri.Uri;
+import org.apache.shindig.common.util.DateUtil;
import org.apache.shindig.common.util.FakeTimeSource;
import org.apache.shindig.gadgets.GadgetException;
import org.apache.shindig.gadgets.http.HttpRequest;
@@ -40,6 +41,9 @@ import java.util.Arrays;
import java.util.Enumeration;
import java.util.Vector;
+import static junitx.framework.ComparableAssert.assertGreater;
+import static junitx.framework.ComparableAssert.assertLesser;
+
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
@@ -209,7 +213,7 @@ public class ServletUtilTest {
}
@Test
- public void testCopyResponseToServlet() throws Exception {
+ public void testCopyToServletResponseAndOverrideCacheHeadersForPublic()
throws Exception {
FakeTimeSource fakeTime = new FakeTimeSource();
HttpUtil.setTimeSource(fakeTime);
@@ -220,7 +224,7 @@ public class ServletUtilTest {
HttpServletResponse servletResponse =
EasyMock.createMock(HttpServletResponse.class);
HttpServletResponseRecorder recorder = new
HttpServletResponseRecorder(servletResponse);
- ServletUtil.copyResponseToServlet(response, recorder);
+ ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response,
recorder);
assertEquals(200, recorder.getHttpStatusCode());
assertEquals("response string", recorder.getResponseAsString());
@@ -228,9 +232,55 @@ public class ServletUtilTest {
assertEquals("v2", recorder.getHeader("h2"));
assertEquals("public,max-age=1000", recorder.getHeader("Cache-Control"));
}
+
+ @Test
+ public void testCopyToServletResponse() throws Exception {
+ HttpResponse response = new HttpResponseBuilder()
+ .setResponseString("response
string").setHttpStatusCode(200).addHeader("h1", "v1")
+ .addHeader("h2", "v2").addHeader("Cache-Control",
"private,no-store,max-age=10")
+ .addHeader("Expires", "123").create();
+
+ HttpServletResponse servletResponse =
EasyMock.createMock(HttpServletResponse.class);
+ HttpServletResponseRecorder recorder = new
HttpServletResponseRecorder(servletResponse);
+
+ ServletUtil.copyToServletResponse(response, recorder);
+
+ assertEquals(200, recorder.getHttpStatusCode());
+ assertEquals("response string", recorder.getResponseAsString());
+ assertEquals("v1", recorder.getHeader("h1"));
+ assertEquals("v2", recorder.getHeader("h2"));
+ assertEquals("private,no-store,max-age=10",
recorder.getHeader("Cache-Control"));
+ assertEquals("123", recorder.getHeader("Expires"));
+ }
+
+ @Test
+ public void testCopyToServletResponseAndOverrideCacheHeadersForPrivate()
+ throws Exception {
+ FakeTimeSource fakeTime = new FakeTimeSource();
+ HttpUtil.setTimeSource(fakeTime);
+
+ HttpResponse response = new HttpResponseBuilder()
+ .setResponseString("response
string").setHttpStatusCode(200).addHeader("h1", "v1")
+ .addHeader("h2", "v2").addHeader("Cache-Control",
"private,no-store,max-age=10")
+ .addHeader("Expires", "123").create();
+
+ HttpServletResponse servletResponse =
EasyMock.createMock(HttpServletResponse.class);
+ HttpServletResponseRecorder recorder = new
HttpServletResponseRecorder(servletResponse);
+ long testStartTime = fakeTime.currentTimeMillis();
+ ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response,
recorder);
+ assertEquals(200, recorder.getHttpStatusCode());
+ assertEquals("response string", recorder.getResponseAsString());
+ assertEquals("v1", recorder.getHeader("h1"));
+ assertEquals("v2", recorder.getHeader("h2"));
+ assertEquals("no-cache", recorder.getHeader("Cache-Control"));
+ long expires =
DateUtil.parseRfc1123Date(recorder.getHeader("Expires")).getTime();
+ assertGreater(testStartTime - 2000L, expires);
+ assertLesser(testStartTime + 2000L, expires);
+ }
@Test
- public void testCopyResponseToServletNoCache() throws Exception {
+ public void
testCopyToServletResponseAndOverrideCacheHeadersForStrictNoCache()
+ throws Exception {
HttpResponse response = new HttpResponseBuilder()
.setResponseString("response
string").setHttpStatusCode(200).addHeader("h1", "v1")
.addHeader("h2", "v2").setStrictNoCache().create();
@@ -240,7 +290,7 @@ public class ServletUtilTest {
FakeTimeSource fakeTime = new FakeTimeSource();
HttpUtil.setTimeSource(fakeTime);
- ServletUtil.copyResponseToServlet(response, recorder);
+ ServletUtil.copyToServletResponseAndOverrideCacheHeaders(response,
recorder);
assertEquals(200, recorder.getHttpStatusCode());
assertEquals("response string", recorder.getResponseAsString());