Author: awiner
Date: Fri Mar 20 17:17:26 2009
New Revision: 756644

URL: http://svn.apache.org/viewvc?rev=756644&view=rev
Log:
SHINDIG-989: MakeRequestHandler does not use REFRESH param to affect internal 
caching of request
- Put the refresh parameter onto HttpRequest.setCacheTtl() for consistency with 
other requests (e.g. proxy)
- Add test of refresh parameter

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=756644&r1=756643&r2=756644&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 Mar 20 17:17:26 2009
@@ -140,6 +140,16 @@
       req.setGadget(Uri.parse(request.getParameter(GADGET_PARAM)));
     }
 
+    // If the proxy request specifies a refresh param then we want to force 
the min TTL for
+    // the retrieved entry in the cache regardless of the headers on the 
content when it
+    // is fetched from the original source.
+    if (request.getParameter(REFRESH_PARAM) != null) {
+      try {
+        req.setCacheTtl(Integer.parseInt(request.getParameter(REFRESH_PARAM)));
+      } catch (NumberFormatException nfe) {
+        // Ignore
+      }
+    }
     // Allow the rewriter to use an externally forced mime type. This is needed
     // allows proper rewriting of <script src="x"/> where x is returned with
     // a content type like text/html which unfortunately happens all too often

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=756644&r1=756643&r2=756644&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 Mar 20 17:17:26 2009
@@ -30,7 +30,9 @@
 
 import com.google.common.collect.Lists;
 
-import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.*;
+
+import org.easymock.Capture;
 import org.easymock.IAnswer;
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -107,6 +109,21 @@
     assertTrue(rewriter.responseWasRewritten());
   }
 
+  public void testGetRequestWIthRefresh() throws Exception {
+    
expect(request.getParameter(ProxyBase.REFRESH_PARAM)).andReturn("120").anyTimes();
+
+    Capture<HttpRequest> requestCapture = new Capture<HttpRequest>();
+    expect(pipeline.execute(capture(requestCapture))).andReturn(new 
HttpResponse(RESPONSE_BODY));
+
+    replay();
+
+    handler.fetch(request, recorder);
+
+    HttpRequest httpRequest = requestCapture.getValue();
+    assertEquals("public,max-age=120", recorder.getHeader("Cache-Control"));
+    assertEquals(120, httpRequest.getCacheTtl());
+  }
+
   public void testExplicitHeaders() throws Exception {
     String headerString = "X-Foo=bar&X-Bar=baz%20foo";
 


Reply via email to