You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by et...@apache.org on 2008/05/28 08:58:42 UTC

svn commit: r660837 - /incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java

Author: etnu
Date: Tue May 27 23:58:42 2008
New Revision: 660837

URL: http://svn.apache.org/viewvc?rev=660837&view=rev
Log:
Updated cache control handling to retain no-cache headers.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java?rev=660837&r1=660836&r2=660837&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/servlet/ProxyHandler.java Tue May 27 23:58:42 2008
@@ -65,7 +65,7 @@
   public static final String SIGN_VIEWER = "signViewer";
   public static final String SIGN_OWNER = "signOwner";
   public static final String URL_PARAM = "url";
-  private static final String REFRESH_PARAM = "refresh";
+  public static final String REFRESH_PARAM = "refresh";
 
   private static final Logger logger =
       Logger.getLogger(ProxyHandler.class.getPackage().getName());
@@ -112,6 +112,22 @@
   }
 
   /**
+   * Sets cache control headers for the response.
+   */
+  private void setCachingHeaders(HttpServletRequest request,
+      HttpServletResponse response, HttpResponse results) {
+    int refreshInterval = 0;
+    if (results.isStrictNoCache()) {
+      refreshInterval = 0;
+    } else  if (request.getParameter(REFRESH_PARAM) != null) {
+      refreshInterval =  Integer.valueOf(request.getParameter(REFRESH_PARAM));
+    } else {
+      refreshInterval = Math.max(60 * 60, (int)(results.getExpiration() / 1000));
+    }
+    HttpUtil.setCachingHeaders(response, refreshInterval);
+  }
+
+  /**
    * Retrieves a file and returns it as a json response.
    *
    * @param request
@@ -136,12 +152,7 @@
     String output = serializeJsonResponse(request, results);
 
     // Find and set the refresh interval
-    int refreshInterval = 0;
-
-    if (request.getParameter(REFRESH_PARAM) != null) {
-      refreshInterval =  Integer.valueOf(request.getParameter(REFRESH_PARAM));
-    }
-    HttpUtil.setCachingHeaders(response, refreshInterval);
+    setCachingHeaders(request, response, results);
 
     response.setStatus(HttpServletResponse.SC_OK);
     response.setContentType("application/json; charset=utf-8");
@@ -316,12 +327,7 @@
     HttpRequest rcr = buildHttpRequest(request);
     HttpResponse results = contentFetcherFactory.get().fetch(rcr);
 
-    // Caching headers
-    int refreshInterval = 0;
-    if (request.getParameter(REFRESH_PARAM) != null) {
-      refreshInterval =  Integer.valueOf(request.getParameter(REFRESH_PARAM));
-    }
-    HttpUtil.setCachingHeaders(response, refreshInterval);
+    setCachingHeaders(request, response, results);
 
     for (Map.Entry<String, List<String>> entry : results.getAllHeaders().entrySet()) {
       String name = entry.getKey();