Author: beaton
Date: Wed Jan 14 18:51:22 2009
New Revision: 734596
URL: http://svn.apache.org/viewvc?rev=734596&view=rev
Log:
Fix caching of negative responses. (awiner actually caught this problem in a
code review last month!)
Also expose createKey API for cache.
Modified:
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/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/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=734596&r1=734595&r2=734596&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
Wed Jan 14 18:51:22 2009
@@ -122,7 +122,7 @@
* Except for the first two, all of these may be "0" depending on
authentication rules. See
* individual methods for details.
*/
- protected String createKey(HttpRequest request) {
+ public String createKey(HttpRequest request) {
String uri = request.getUri().toString();
StringBuilder key = new StringBuilder(uri.length() * 2);
key.append(request.getUri());
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=734596&r1=734595&r2=734596&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
Wed Jan 14 18:51:22 2009
@@ -333,7 +333,7 @@
*/
public boolean isStrictNoCache() {
if (isError() && !NEGATIVE_CACHING_EXEMPT_STATUS.contains(httpStatusCode))
{
- return true;
+ return false;
}
String cacheControl = getHeader("Cache-Control");
if (cacheControl != null) {
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=734596&r1=734595&r2=734596&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
Wed Jan 14 18:51:22 2009
@@ -190,6 +190,26 @@
assertEquals(expected, expires);
assertTrue(response.getCacheTtl() <= HttpResponse.DEFAULT_TTL &&
response.getCacheTtl() > 0);
}
+
+ public void testCachingHeadersIgnoredOnError() throws Exception {
+ HttpResponse response = new HttpResponseBuilder()
+ .addHeader("Cache-Control", "no-cache")
+ .setHttpStatusCode(404)
+ .create();
+ assertFalse(response.isStrictNoCache());
+
+ response = new HttpResponseBuilder()
+ .addHeader("Cache-Control", "no-cache")
+ .setHttpStatusCode(403)
+ .create();
+ assertTrue(response.isStrictNoCache());
+
+ response = new HttpResponseBuilder()
+ .addHeader("Cache-Control", "no-cache")
+ .setHttpStatusCode(401)
+ .create();
+ assertTrue(response.isStrictNoCache());
+ }
/**
* Verifies that the cache TTL is within acceptable ranges.