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()));
}