You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2006/08/07 22:00:30 UTC
svn commit: r429453 - in
/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol:
cache/Cache.java cache/CacheBase.java client/CommonsClient.java
util/CacheControlUtil.java
Author: jmsnell
Date: Mon Aug 7 13:00:30 2006
New Revision: 429453
URL: http://svn.apache.org/viewvc?rev=429453&view=rev
Log:
It's a bit inefficient, but let's clear an entry from the cache for every non-idempotent method. There's a better way to do this,
but for now, this works.
Modified:
incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/Cache.java
incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/CacheBase.java
incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/CommonsClient.java
incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/util/CacheControlUtil.java
Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/Cache.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/Cache.java?rev=429453&r1=429452&r2=429453&view=diff
==============================================================================
--- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/Cache.java (original)
+++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/Cache.java Mon Aug 7 13:00:30 2006
@@ -51,6 +51,7 @@
CacheKey key);
Response update(
+ String method,
String uri,
RequestOptions options,
Response response);
Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/CacheBase.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/CacheBase.java?rev=429453&r1=429452&r2=429453&view=diff
==============================================================================
--- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/CacheBase.java (original)
+++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/cache/CacheBase.java Mon Aug 7 13:00:30 2006
@@ -21,6 +21,7 @@
import org.apache.abdera.protocol.client.RequestOptions;
import org.apache.abdera.protocol.client.Response;
+import org.apache.abdera.protocol.util.CacheControlUtil;
public abstract class CacheBase
implements Cache {
@@ -118,11 +119,13 @@
}
public Response update(
+ String method,
String uri,
RequestOptions options,
Response response) {
CacheKey key = getCacheKey(uri, options,response);
- if ((response != null && response.isNoStore())) {
+ if ((response != null && response.isNoStore()) ||
+ !CacheControlUtil.isIdempotent(method)) {
// TODO: Need to get clarification on this.. if the request is no-store, can
// the response be cached.
// if ((response != null && response.isNoStore()) ||
Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/CommonsClient.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/CommonsClient.java?rev=429453&r1=429452&r2=429453&view=diff
==============================================================================
--- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/CommonsClient.java (original)
+++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/client/CommonsClient.java Mon Aug 7 13:00:30 2006
@@ -24,6 +24,7 @@
import org.apache.abdera.protocol.cache.Cache;
import org.apache.abdera.protocol.cache.CacheDisposition;
import org.apache.abdera.protocol.cache.CachedResponse;
+import org.apache.abdera.protocol.util.CacheControlUtil;
import org.apache.abdera.protocol.util.ExtensionMethod;
import org.apache.abdera.util.Version;
import org.apache.commons.httpclient.Credentials;
@@ -68,16 +69,6 @@
HttpClientParams.USE_EXPECT_CONTINUE, true);
}
- /**
- * We're only going to cache GET, HEAD and OPTIONS requests.
- * State modifying requests will be passed on through to the server
- */
- private boolean isPassthroughMethod(String method) {
- return (!method.equals("GET") &&
- !method.equals("HEAD") &&
- !method.equals("OPTIONS"));
- }
-
@Override
public Response execute(
String method,
@@ -90,7 +81,7 @@
CachedResponse cached_response = null;
Cache cache = getCache();
CacheDisposition disp = CacheDisposition.TRANSPARENT;
- if (!isPassthroughMethod(method) &&
+ if (CacheControlUtil.isIdempotent(method) &&
cache != null &&
options.getNoCache() == false &&
options.getNoStore() == false &&
@@ -136,7 +127,7 @@
response = new CommonsResponse(httpMethod);
if (cache != null)
response = cache.update(
- uri, options, response);
+ method, uri, options, response);
}
}
return response;
Modified: incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/util/CacheControlUtil.java
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/util/CacheControlUtil.java?rev=429453&r1=429452&r2=429453&view=diff
==============================================================================
--- incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/util/CacheControlUtil.java (original)
+++ incubator/abdera/java/trunk/client/src/main/java/org/apache/abdera/protocol/util/CacheControlUtil.java Mon Aug 7 13:00:30 2006
@@ -22,6 +22,12 @@
public class CacheControlUtil {
+ public static boolean isIdempotent(String method) {
+ return (method.equalsIgnoreCase("GET") ||
+ method.equalsIgnoreCase("HEAD") ||
+ method.equalsIgnoreCase("OPTIONS"));
+ }
+
private static long value(String val) {
return (val != null) ? Long.parseLong(val) : -1;
}