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> {