Author: beaton
Date: Thu Jan 15 17:56:05 2009
New Revision: 734885

URL: http://svn.apache.org/viewvc?rev=734885&view=rev
Log:
Tweak the cache interface a bit.
- return a boolean indicating whether a response was cached.
- expose the key generation function a bit.


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/HttpCache.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
    
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.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=734885&r1=734884&r2=734885&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 Jan 15 17:56:05 2009
@@ -62,7 +62,7 @@
     return null;
   }
 
-  public HttpResponse addResponse(HttpRequest request, HttpResponse response) {
+  public boolean addResponse(HttpRequest request, HttpResponse response) {
     if (isCacheable(request) && isCacheable(response)) {
       // Both are cacheable. Check for forced cache TTL overrides.
       HttpResponseBuilder responseBuilder = new HttpResponseBuilder(response);
@@ -74,9 +74,10 @@
       response = responseBuilder.create();
       String keyString = createKey(request);
       addResponseImpl(keyString, response);
+      return true;
     }
 
-    return response;
+    return false;
   }
 
   public HttpResponse removeResponse(HttpRequest request) {

Modified: 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpCache.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpCache.java?rev=734885&r1=734884&r2=734885&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpCache.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/main/java/org/apache/shindig/gadgets/http/HttpCache.java
 Thu Jan 15 17:56:05 2009
@@ -22,15 +22,28 @@
 /**
  * Cache of HttpResponse.
  *
- * Keys are made of more or less arbitrary name/value pairs (the HttpCacheKey)
- * and data about the HttpRequest.  The values are the HttpResponse.
+ * Keys are HttpRequest, values are the HttpResponse.
  */
 @ImplementedBy(DefaultHttpCache.class)
 public interface HttpCache {
 
   HttpResponse getResponse(HttpRequest request);
 
-  HttpResponse addResponse(HttpRequest request, HttpResponse response);
+  /**
+   * Add a request/response pair to the cache.
+   * 
+   * @return true if the response was cached, false if the response was not 
cached.
+   */
+  boolean addResponse(HttpRequest request, HttpResponse response);
 
   HttpResponse removeResponse(HttpRequest key);
+  
+  /**
+   * Create a string representation of the cache key.  If two requests are 
cache equivalent (a
+   * response to one request can be used to respond to the other request), 
their keys are
+   * guaranteed to be identical.
+   * 
+   * Identical keys do not guarantee that two requests are cache equivalent.
+   */
+  String createKey(HttpRequest request);
 }

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java?rev=734885&r1=734884&r2=734885&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/AbstractHttpCacheTest.java
 Thu Jan 15 17:56:05 2009
@@ -20,7 +20,9 @@
 import static 
org.apache.shindig.gadgets.http.AbstractHttpCache.DEFAULT_KEY_VALUE;
 import static org.apache.shindig.gadgets.http.AbstractHttpCache.KEY_SEPARATOR;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
 
 import org.apache.shindig.auth.BasicSecurityToken;
 import org.apache.shindig.auth.SecurityToken;
@@ -310,7 +312,7 @@
     HttpResponse response = new HttpResponse("normal");
     String key = cache.createKey(request);
 
-    cache.addResponse(request, response);
+    assertTrue("response should have been cached", cache.addResponse(request, 
response));
 
     assertEquals(response, cache.map.get(key));
   }
@@ -321,7 +323,7 @@
         .setIgnoreCache(true);
     HttpResponse response = new HttpResponse("does not matter");
 
-    cache.addResponse(request, response);
+    assertFalse("response should not have been cached", 
cache.addResponse(request, response));
 
     assertEquals(0, cache.map.size());
   }
@@ -330,7 +332,7 @@
   public void addResponseNotCacheable() {
     HttpRequest request = new HttpRequest(DEFAULT_URI);
     HttpResponse response = new 
HttpResponseBuilder().setStrictNoCache().create();
-    cache.addResponse(request, response);
+    assertFalse(cache.addResponse(request, response));
 
     assertEquals(0, cache.map.size());
   }
@@ -340,7 +342,7 @@
     HttpRequest request = new HttpRequest(DEFAULT_URI)
         .setMethod("POST");
     HttpResponse response = new HttpResponse("does not matter");
-    cache.addResponse(request, response);
+    assertFalse(cache.addResponse(request, response));
 
     assertEquals(0, cache.map.size());
   }
@@ -353,7 +355,7 @@
     HttpResponse response = new HttpResponse("normal");
     String key = cache.createKey(request);
 
-    cache.addResponse(request, response);
+    assertTrue(cache.addResponse(request, response));
 
     assertEquals(response, cache.map.get(key));
   }
@@ -366,7 +368,7 @@
     String key = cache.createKey(request);
     HttpResponse response = new HttpResponse("result");
 
-    cache.addResponse(request, response);
+    assertTrue(cache.addResponse(request, response));
 
     assertEquals("public,max-age=10", 
cache.map.get(key).getHeader("Cache-Control"));
   }

Modified: 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.java
URL: 
http://svn.apache.org/viewvc/incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.java?rev=734885&r1=734884&r2=734885&view=diff
==============================================================================
--- 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.java
 (original)
+++ 
incubator/shindig/trunk/java/gadgets/src/test/java/org/apache/shindig/gadgets/http/DefaultRequestPipelineTest.java
 Thu Jan 15 17:56:05 2009
@@ -172,10 +172,10 @@
     protected FakeHttpCache() {
     }
 
-    public HttpResponse addResponse(HttpRequest request, HttpResponse 
response) {
+    public boolean addResponse(HttpRequest request, HttpResponse response) {
       writeCount++;
       data.put(request.getUri(), response);
-      return response;
+      return true;
     }
 
     public HttpResponse getResponse(HttpRequest request) {
@@ -186,6 +186,10 @@
     public HttpResponse removeResponse(HttpRequest key) {
       throw new UnsupportedOperationException();
     }
+
+    public String createKey(HttpRequest request) {
+      return request.getUri().getQuery();
+    }
   }
 
   private static class FakeOAuthRequestProvider implements 
Provider<OAuthRequest> {


Reply via email to