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.


Reply via email to