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/06/27 07:24:57 UTC

svn commit: r672115 - in /incubator/shindig/trunk/java/gadgets/src: main/java/org/apache/shindig/gadgets/ main/java/org/apache/shindig/gadgets/http/ test/java/org/apache/shindig/gadgets/http/

Author: etnu
Date: Thu Jun 26 22:24:57 2008
New Revision: 672115

URL: http://svn.apache.org/viewvc?rev=672115&view=rev
Log:
Fixed additional cache-related bugs. Switched back to Date instead of Last-Modified for the basis time so as to avoid breaking fetchers that use If-Modified-Since.


Modified:
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java
    incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
    incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicGadgetSpecFactory.java Thu Jun 26 22:24:57 2008
@@ -156,7 +156,7 @@
     // updates to eventually cascade back into the factory.
     long now = System.currentTimeMillis();
     long expiration = response.getCacheExpiration();
-    expiration = Math.min(now + minTtl, Math.max(now + maxTtl, expiration));
+    expiration = Math.max(now + minTtl, Math.min(now + maxTtl, expiration));
     synchronized (cache) {
       cache.addElement(url, new TimeoutPair(spec, expiration));
     }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/BasicMessageBundleFactory.java Thu Jun 26 22:24:57 2008
@@ -111,7 +111,7 @@
     // updates to eventually cascade back into the factory.
     long now = System.currentTimeMillis();
     long expiration = response.getCacheExpiration();
-    expiration = Math.min(now + minTtl, Math.max(now + maxTtl, expiration));
+    expiration = Math.max(now + minTtl, Math.min(now + maxTtl, expiration));
     synchronized (cache) {
       cache.addElement(url, new TimeoutPair(bundle, expiration));
     }

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/AbstractHttpCache.java Thu Jun 26 22:24:57 2008
@@ -55,8 +55,7 @@
   public HttpResponse addResponse(URI uri, HttpResponse response) {
     if (uri == null || response == null) return response;
     response = checkResponse(response);
-    // Clone the URI to prevent outside references from preventing collection
-    addResponseImpl(URI.create(uri.toString()), response);
+    addResponseImpl(uri, response);
     return response;
   }
 

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/BasicHttpFetcher.java Thu Jun 26 22:24:57 2008
@@ -125,7 +125,7 @@
       // Fall back to zero length response.
       baseIs = new ByteArrayInputStream(new byte[0]);
     }
-    
+
     String encoding = fetcher.getContentEncoding();
     // Create the appropriate stream wrapper based on the encoding type.
     InputStream is = null;

Modified: incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpResponse.java Thu Jun 26 22:24:57 2008
@@ -112,9 +112,8 @@
       }
     }
     // Force Last-Modified header -- caches should be sure to store this value.
-    if (tmpHeaders.get("Last-Modified") == null) {
-      tmpHeaders.put("Last-Modified",
-          Arrays.asList(DateUtil.formatDate(System.currentTimeMillis())));
+    if (tmpHeaders.get("Date") == null) {
+      tmpHeaders.put("Date", Arrays.asList(DateUtil.formatDate(System.currentTimeMillis())));
     }
     this.headers = tmpHeaders;
 
@@ -289,7 +288,7 @@
    */
   public long getCacheExpiration() {
     if (httpStatusCode != SC_OK) {
-      return getLastModified() + NEGATIVE_CACHE_TTL;
+      return getDate() + NEGATIVE_CACHE_TTL;
     }
     if (isStrictNoCache()) {
       return -1;
@@ -302,7 +301,7 @@
     if (expiration != -1) {
       return expiration;
     }
-    return getLastModified() + DEFAULT_TTL;
+    return getDate() + DEFAULT_TTL;
   }
 
   /**
@@ -345,10 +344,10 @@
   }
 
   /**
-   * @return The value of the Last-Modified header.
+   * @return The value of the HTTP Date header.
    */
-  protected long getLastModified() {
-    String date = getHeader("Last-Modified");
+  protected long getDate() {
+    String date = getHeader("Date");
     return DateUtil.parseDate(date).getTime();
   }
 

Modified: incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java?rev=672115&r1=672114&r2=672115&view=diff
==============================================================================
--- incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java (original)
+++ incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/HttpResponseTest.java Thu Jun 26 22:24:57 2008
@@ -195,12 +195,11 @@
     assertEquals(maxAge * 1000, response.getCacheTtl());
   }
 
-  public void testLastModified() throws Exception {
+  public void testFixedDate() throws Exception {
     int time = roundToSeconds(System.currentTimeMillis());
-    addHeader("Last-Modified", DateUtil.formatDate(1000L * time));
+    addHeader("Date", DateUtil.formatDate(1000L * time));
     HttpResponse response = new HttpResponse(200, null, headers);
-    assertEquals(time, roundToSeconds(response.getLastModified()));
-    // 9 because of rounding.
+    assertEquals(time, roundToSeconds(response.getDate()));
     assertEquals(time + roundToSeconds(HttpResponse.DEFAULT_TTL),
         roundToSeconds(response.getCacheExpiration()));
   }