Author: fx
Date: Sat Nov 8 21:47:12 2014
New Revision: 1637599
URL: http://svn.apache.org/r1637599
Log:
HTTPCLIENT-1515: Caching responses to HEAD requests
Fixed API change and removed opt-in parameter
Modified:
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java-deprecated/org/apache/http/impl/client/cache/CachingHttpClient.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheEntryUpdater.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheableRequestPolicy.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachedResponseSuitabilityChecker.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingExec.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClientBuilder.java
httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheableRequestPolicy.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingExecChain.java
httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java-deprecated/org/apache/http/impl/client/cache/CachingHttpClient.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java-deprecated/org/apache/http/impl/client/cache/CachingHttpClient.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java-deprecated/org/apache/http/impl/client/cache/CachingHttpClient.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java-deprecated/org/apache/http/impl/client/cache/CachingHttpClient.java Sat Nov 8 21:47:12 2014
@@ -162,7 +162,6 @@ public class CachingHttpClient implement
private final RequestProtocolCompliance requestCompliance;
private final AsynchronousValidator asynchRevalidator;
- private final boolean allowHeadResponseCaching;
private final Log log = LogFactory.getLog(getClass());
@@ -180,8 +179,7 @@ public class CachingHttpClient implement
this.responseCache = cache;
this.validityPolicy = new CacheValidityPolicy();
this.responseCachingPolicy = new ResponseCachingPolicy(maxObjectSizeBytes, sharedCache,
- config.isNeverCacheHTTP10ResponsesWithQuery(), config.is303CachingEnabled(),
- config.isHeadResponseCachingEnabled());
+ config.isNeverCacheHTTP10ResponsesWithQuery(), config.is303CachingEnabled());
this.responseGenerator = new CachedHttpResponseGenerator(this.validityPolicy);
this.cacheableRequestPolicy = new CacheableRequestPolicy();
this.suitabilityChecker = new CachedResponseSuitabilityChecker(this.validityPolicy, config);
@@ -191,7 +189,6 @@ public class CachingHttpClient implement
this.requestCompliance = new RequestProtocolCompliance(config.isWeakETagOnPutDeleteAllowed());
this.asynchRevalidator = makeAsynchronousValidator(config);
- this.allowHeadResponseCaching = config.isHeadResponseCachingEnabled();
}
/**
@@ -304,7 +301,6 @@ public class CachingHttpClient implement
this.responseCompliance = responseCompliance;
this.requestCompliance = requestCompliance;
this.asynchRevalidator = makeAsynchronousValidator(config);
- this.allowHeadResponseCaching = config.isHeadResponseCachingEnabled();
}
private AsynchronousValidator makeAsynchronousValidator(
@@ -449,7 +445,7 @@ public class CachingHttpClient implement
flushEntriesInvalidatedByRequest(target, request);
- if (!cacheableRequestPolicy.isServableFromCache(request, allowHeadResponseCaching)) {
+ if (!cacheableRequestPolicy.isServableFromCache(request)) {
log.debug("Request is not servable from cache");
return callBackend(target, request, context);
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java Sat Nov 8 21:47:12 2014
@@ -33,6 +33,7 @@ import java.util.HashMap;
import java.util.Map;
import org.apache.http.Header;
+import org.apache.http.HeaderIterator;
import org.apache.http.ProtocolVersion;
import org.apache.http.StatusLine;
import org.apache.http.annotation.Immutable;
@@ -54,6 +55,7 @@ import org.apache.http.util.Args;
public class HttpCacheEntry implements Serializable {
private static final long serialVersionUID = -6300496422359477413L;
+ private static final String REQUEST_METHOD_HEADER_NAME = "Hc-Request-Method";
private final Date requestDate;
private final Date responseDate;
@@ -62,7 +64,6 @@ public class HttpCacheEntry implements S
private final Resource resource;
private final Map<String,String> variantMap;
private final Date date;
- private final String requestMethod;
/**
* Create a new {@link HttpCacheEntry} with variants.
@@ -106,7 +107,56 @@ public class HttpCacheEntry implements S
? new HashMap<String,String>(variantMap)
: null;
this.date = parseDate();
- this.requestMethod = requestMethod;
+ }
+
+ /**
+ * Create a new {@link HttpCacheEntry} with variants.
+ * @param requestDate
+ * Date/time when the request was made (Used for age
+ * calculations)
+ * @param responseDate
+ * Date/time that the response came back (Used for age
+ * calculations)
+ * @param statusLine
+ * HTTP status line from origin response
+ * @param responseHeaders
+ * Header[] from original HTTP Response
+ * @param resource representing origin response body
+ * @param variantMap describing cache entries that are variants
+ * of this parent entry; this maps a "variant key" (derived
+ * from the varying request headers) to a "cache key" (where
+ * in the cache storage the particular variant is located)
+ */
+ public HttpCacheEntry(
+ final Date requestDate,
+ final Date responseDate,
+ final StatusLine statusLine,
+ final Header[] responseHeaders,
+ final Resource resource,
+ final Map<String,String> variantMap) {
+ this(requestDate, responseDate, statusLine, responseHeaders, resource,
+ variantMap, null);
+ }
+
+ /**
+ * Create a new {@link HttpCacheEntry}.
+ *
+ * @param requestDate
+ * Date/time when the request was made (Used for age
+ * calculations)
+ * @param responseDate
+ * Date/time that the response came back (Used for age
+ * calculations)
+ * @param statusLine
+ * HTTP status line from origin response
+ * @param responseHeaders
+ * Header[] from original HTTP Response
+ * @param resource representing origin response body
+ */
+ public HttpCacheEntry(final Date requestDate, final Date responseDate, final StatusLine statusLine,
+ final Header[] responseHeaders, final Resource resource) {
+ this(requestDate, responseDate, statusLine, responseHeaders, resource,
+ new HashMap<String,String>());
}
/**
@@ -128,7 +178,7 @@ public class HttpCacheEntry implements S
public HttpCacheEntry(final Date requestDate, final Date responseDate, final StatusLine statusLine,
final Header[] responseHeaders, final Resource resource, final String requestMethod) {
this(requestDate, responseDate, statusLine, responseHeaders, resource,
- new HashMap<String,String>(), requestMethod);
+ new HashMap<String,String>(),requestMethod);
}
/**
@@ -196,7 +246,15 @@ public class HttpCacheEntry implements S
* Returns all the headers that were on the origin response.
*/
public Header[] getAllHeaders() {
- return responseHeaders.getAllHeaders();
+ final HeaderGroup filteredHeaders = new HeaderGroup();
+ for (final HeaderIterator iterator = responseHeaders.iterator(); iterator
+ .hasNext();) {
+ final Header header = (Header) iterator.next();
+ if (!REQUEST_METHOD_HEADER_NAME.equals(header.getName())) {
+ filteredHeaders.addHeader(header);
+ }
+ }
+ return filteredHeaders.getAllHeaders();
}
/**
@@ -204,6 +262,9 @@ public class HttpCacheEntry implements S
* name.
*/
public Header getFirstHeader(final String name) {
+ if (REQUEST_METHOD_HEADER_NAME.equalsIgnoreCase(name)) {
+ return null;
+ }
return responseHeaders.getFirstHeader(name);
}
@@ -212,6 +273,9 @@ public class HttpCacheEntry implements S
* response.
*/
public Header[] getHeaders(final String name) {
+ if (REQUEST_METHOD_HEADER_NAME.equalsIgnoreCase(name)) {
+ return new Header[0];
+ }
return responseHeaders.getHeaders(name);
}
@@ -262,7 +326,12 @@ public class HttpCacheEntry implements S
* @since 4.4
*/
public String getRequestMethod() {
- return requestMethod;
+ final Header requestMethodHeader = responseHeaders
+ .getFirstHeader(REQUEST_METHOD_HEADER_NAME);
+ if (requestMethodHeader != null) {
+ return requestMethodHeader.getValue();
+ }
+ return HeaderConstants.GET_METHOD;
}
/**
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java Sat Nov 8 21:47:12 2014
@@ -69,7 +69,6 @@ class BasicHttpCache implements HttpCach
private final CachedHttpResponseGenerator responseGenerator;
private final HttpCacheInvalidator cacheInvalidator;
private final HttpCacheStorage storage;
- private final boolean allowHeadResponseCaching;
private final Log log = LogFactory.getLog(getClass());
@@ -86,7 +85,6 @@ class BasicHttpCache implements HttpCach
this.responseGenerator = new CachedHttpResponseGenerator();
this.storage = storage;
this.cacheInvalidator = cacheInvalidator;
- this.allowHeadResponseCaching = config.isHeadResponseCachingEnabled();
}
public BasicHttpCache(
@@ -95,7 +93,7 @@ class BasicHttpCache implements HttpCach
final CacheConfig config,
final CacheKeyGenerator uriExtractor) {
this( resourceFactory, storage, config, uriExtractor,
- new CacheInvalidator(uriExtractor, storage, config.isHeadResponseCachingEnabled()));
+ new CacheInvalidator(uriExtractor, storage));
}
public BasicHttpCache(
@@ -256,7 +254,7 @@ class BasicHttpCache implements HttpCach
src.getAllHeaders(),
resource,
variantMap,
- allowHeadResponseCaching ? src.getRequestMethod() : null);
+ src.getRequestMethod());
}
@Override
@@ -268,8 +266,7 @@ class BasicHttpCache implements HttpCach
stale,
requestSent,
responseReceived,
- originResponse,
- allowHeadResponseCaching);
+ originResponse);
storeInCache(target, request, updatedEntry);
return updatedEntry;
}
@@ -283,8 +280,7 @@ class BasicHttpCache implements HttpCach
stale,
requestSent,
responseReceived,
- originResponse,
- allowHeadResponseCaching);
+ originResponse);
storage.putEntry(cacheKey, updatedEntry);
return updatedEntry;
}
@@ -327,7 +323,7 @@ class BasicHttpCache implements HttpCach
originResponse.getStatusLine(),
originResponse.getAllHeaders(),
resource,
- allowHeadResponseCaching ? request.getRequestLine().getMethod() : null);
+ request.getRequestLine().getMethod());
storeInCache(host, request, entry);
return responseGenerator.generateResponse(HttpRequestWrapper.wrap(request, host), entry);
} finally {
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java Sat Nov 8 21:47:12 2014
@@ -175,7 +175,6 @@ public class CacheConfig implements Clon
private int asynchronousWorkerIdleLifetimeSecs;
private int revalidationQueueSize;
private boolean neverCacheHTTP10ResponsesWithQuery;
- private final boolean allowHeadResponseCaching;
/**
* @deprecated (4.3) use {@link Builder}.
@@ -196,7 +195,6 @@ public class CacheConfig implements Clon
this.asynchronousWorkersCore = DEFAULT_ASYNCHRONOUS_WORKERS_CORE;
this.asynchronousWorkerIdleLifetimeSecs = DEFAULT_ASYNCHRONOUS_WORKER_IDLE_LIFETIME_SECS;
this.revalidationQueueSize = DEFAULT_REVALIDATION_QUEUE_SIZE;
- this.allowHeadResponseCaching = false;
}
CacheConfig(
@@ -213,8 +211,7 @@ public class CacheConfig implements Clon
final int asynchronousWorkersCore,
final int asynchronousWorkerIdleLifetimeSecs,
final int revalidationQueueSize,
- final boolean neverCacheHTTP10ResponsesWithQuery,
- final boolean allowHeadResponseCaching) {
+ final boolean neverCacheHTTP10ResponsesWithQuery) {
super();
this.maxObjectSize = maxObjectSize;
this.maxCacheEntries = maxCacheEntries;
@@ -229,7 +226,6 @@ public class CacheConfig implements Clon
this.asynchronousWorkersCore = asynchronousWorkersCore;
this.asynchronousWorkerIdleLifetimeSecs = asynchronousWorkerIdleLifetimeSecs;
this.revalidationQueueSize = revalidationQueueSize;
- this.allowHeadResponseCaching = allowHeadResponseCaching;
}
/**
@@ -505,14 +501,6 @@ public class CacheConfig implements Clon
}
/**
- * Returns whether HEAD response caching is enabled.
- * @return {@code true} if it is enabled.
- */
- public boolean isHeadResponseCachingEnabled() {
- return allowHeadResponseCaching;
- }
-
- /**
* Sets the current maximum queue size for background revalidations.
*
* @deprecated (4.3) use {@link Builder}.
@@ -545,7 +533,6 @@ public class CacheConfig implements Clon
.setAsynchronousWorkersCore(config.getAsynchronousWorkersCore())
.setAsynchronousWorkerIdleLifetimeSecs(config.getAsynchronousWorkerIdleLifetimeSecs())
.setRevalidationQueueSize(config.getRevalidationQueueSize())
- .setAllowHeadResponseCaching(config.isHeadResponseCachingEnabled())
.setNeverCacheHTTP10ResponsesWithQueryString(config.isNeverCacheHTTP10ResponsesWithQuery());
}
@@ -566,7 +553,6 @@ public class CacheConfig implements Clon
private int asynchronousWorkerIdleLifetimeSecs;
private int revalidationQueueSize;
private boolean neverCacheHTTP10ResponsesWithQuery;
- private boolean allowHeadResponseCaching;
Builder() {
this.maxObjectSize = DEFAULT_MAX_OBJECT_SIZE_BYTES;
@@ -582,7 +568,6 @@ public class CacheConfig implements Clon
this.asynchronousWorkersCore = DEFAULT_ASYNCHRONOUS_WORKERS_CORE;
this.asynchronousWorkerIdleLifetimeSecs = DEFAULT_ASYNCHRONOUS_WORKER_IDLE_LIFETIME_SECS;
this.revalidationQueueSize = DEFAULT_REVALIDATION_QUEUE_SIZE;
- this.allowHeadResponseCaching = false;
}
/**
@@ -723,17 +708,6 @@ public class CacheConfig implements Clon
}
/**
- * Sets whether responses to HEAD requests should be cached or not.
- * @param allowHeadResponseCaching should be {@code true} to
- * permit HEAD response caching, {@code false} to disable it.
- * @param allowHeadResponseCaching
- */
- public Builder setAllowHeadResponseCaching(final boolean allowHeadResponseCaching) {
- this.allowHeadResponseCaching = allowHeadResponseCaching;
- return this;
- }
-
- /**
* Sets whether the cache should never cache HTTP 1.0 responses with a query string or not.
* @param neverCacheHTTP10ResponsesWithQuery true to never cache responses with a query
* string, false to cache if explicit cache headers are found. Set this to {@code true}
@@ -761,8 +735,7 @@ public class CacheConfig implements Clon
asynchronousWorkersCore,
asynchronousWorkerIdleLifetimeSecs,
revalidationQueueSize,
- neverCacheHTTP10ResponsesWithQuery,
- allowHeadResponseCaching);
+ neverCacheHTTP10ResponsesWithQuery);
}
}
@@ -784,7 +757,6 @@ public class CacheConfig implements Clon
.append(", asynchronousWorkerIdleLifetimeSecs=").append(this.asynchronousWorkerIdleLifetimeSecs)
.append(", revalidationQueueSize=").append(this.revalidationQueueSize)
.append(", neverCacheHTTP10ResponsesWithQuery=").append(this.neverCacheHTTP10ResponsesWithQuery)
- .append(", headResponseCachingEnabled=").append(this.allowHeadResponseCaching)
.append("]");
return builder.toString();
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheEntryUpdater.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheEntryUpdater.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheEntryUpdater.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheEntryUpdater.java Sat Nov 8 21:47:12 2014
@@ -75,7 +75,6 @@ class CacheEntryUpdater {
* @param requestDate When the request was performed
* @param responseDate When the response was gotten
* @param response The HttpResponse from the backend server call
- * @param allowHeadResponseCaching Should the cache entry include the request method
* @return HttpCacheEntry an updated version of the cache entry
* @throws java.io.IOException if something bad happens while trying to read the body from the original entry
*/
@@ -84,8 +83,7 @@ class CacheEntryUpdater {
final HttpCacheEntry entry,
final Date requestDate,
final Date responseDate,
- final HttpResponse response,
- final boolean allowHeadResponseCaching) throws IOException {
+ final HttpResponse response) throws IOException {
Args.check(response.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_MODIFIED,
"Response must have 304 status code");
final Header[] mergedHeaders = mergeHeaders(entry, response);
@@ -99,7 +97,7 @@ class CacheEntryUpdater {
entry.getStatusLine(),
mergedHeaders,
resource,
- allowHeadResponseCaching ? entry.getRequestMethod() : null);
+ entry.getRequestMethod());
}
protected Header[] mergeHeaders(final HttpCacheEntry entry, final HttpResponse response) {
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java Sat Nov 8 21:47:12 2014
@@ -56,7 +56,6 @@ class CacheInvalidator implements HttpCa
private final HttpCacheStorage storage;
private final CacheKeyGenerator cacheKeyGenerator;
- private final boolean allowHeadResponseCaching;
private final Log log = LogFactory.getLog(getClass());
@@ -66,15 +65,12 @@ class CacheInvalidator implements HttpCa
*
* @param uriExtractor Provides identifiers for the keys to store cache entries
* @param storage the cache to store items away in
- * @param allowHeadResponseCaching is HEAD response caching enabled
*/
public CacheInvalidator(
final CacheKeyGenerator uriExtractor,
- final HttpCacheStorage storage,
- final boolean allowHeadResponseCaching) {
+ final HttpCacheStorage storage) {
this.cacheKeyGenerator = uriExtractor;
this.storage = storage;
- this.allowHeadResponseCaching = allowHeadResponseCaching;
}
/**
@@ -117,7 +113,7 @@ class CacheInvalidator implements HttpCa
}
private boolean shouldInvalidateHeadCacheEntry(final HttpRequest req, final HttpCacheEntry parentCacheEntry) {
- return allowHeadResponseCaching && requestIsGet(req) && isAHeadCacheEntry(parentCacheEntry);
+ return requestIsGet(req) && isAHeadCacheEntry(parentCacheEntry);
}
private boolean requestIsGet(final HttpRequest req) {
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheableRequestPolicy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheableRequestPolicy.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheableRequestPolicy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheableRequestPolicy.java Sat Nov 8 21:47:12 2014
@@ -49,11 +49,11 @@ class CacheableRequestPolicy {
/**
* Determines if an HttpRequest can be served from the cache.
*
- * @param request an HttpRequest
- * @param allowHeadResponseCaching is HEAD response caching enabled
+ * @param request
+ * an HttpRequest
* @return boolean Is it possible to serve this request from cache
*/
- public boolean isServableFromCache(final HttpRequest request, final boolean allowHeadResponseCaching) {
+ public boolean isServableFromCache(final HttpRequest request) {
final String method = request.getRequestLine().getMethod();
final ProtocolVersion pv = request.getRequestLine().getProtocolVersion();
@@ -62,8 +62,8 @@ class CacheableRequestPolicy {
return false;
}
- if (!(method.equals(HeaderConstants.GET_METHOD) ||
- (allowHeadResponseCaching && method.equals(HeaderConstants.HEAD_METHOD)))) {
+ if (!(method.equals(HeaderConstants.GET_METHOD) || method
+ .equals(HeaderConstants.HEAD_METHOD))) {
log.trace("non-GET or non-HEAD request was not serveable from cache");
return false;
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachedResponseSuitabilityChecker.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachedResponseSuitabilityChecker.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachedResponseSuitabilityChecker.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachedResponseSuitabilityChecker.java Sat Nov 8 21:47:12 2014
@@ -56,7 +56,6 @@ class CachedResponseSuitabilityChecker {
private final float heuristicCoefficient;
private final long heuristicDefaultLifetime;
private final CacheValidityPolicy validityStrategy;
- private final boolean allowHeadResponseCaching;
CachedResponseSuitabilityChecker(final CacheValidityPolicy validityStrategy,
final CacheConfig config) {
@@ -66,7 +65,6 @@ class CachedResponseSuitabilityChecker {
this.useHeuristicCaching = config.isHeuristicCachingEnabled();
this.heuristicCoefficient = config.getHeuristicCoefficient();
this.heuristicDefaultLifetime = config.getHeuristicDefaultLifetime();
- this.allowHeadResponseCaching = config.isHeadResponseCachingEnabled();
}
CachedResponseSuitabilityChecker(final CacheConfig config) {
@@ -168,7 +166,7 @@ class CachedResponseSuitabilityChecker {
return false;
}
- if (allowHeadResponseCaching && hasUnsupportedCacheEntryForGet(request, entry)) {
+ if (hasUnsupportedCacheEntryForGet(request, entry)) {
log.debug("HEAD response caching enabled but the cache entry does not contain a " +
"request method, entity or a 204 response");
return false;
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingExec.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingExec.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingExec.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingExec.java Sat Nov 8 21:47:12 2014
@@ -153,8 +153,7 @@ public class CachingExec implements Clie
this.requestCompliance = new RequestProtocolCompliance(this.cacheConfig.isWeakETagOnPutDeleteAllowed());
this.responseCachingPolicy = new ResponseCachingPolicy(
this.cacheConfig.getMaxObjectSize(), this.cacheConfig.isSharedCache(),
- this.cacheConfig.isNeverCacheHTTP10ResponsesWithQuery(), this.cacheConfig.is303CachingEnabled(),
- this.cacheConfig.isHeadResponseCachingEnabled());
+ this.cacheConfig.isNeverCacheHTTP10ResponsesWithQuery(), this.cacheConfig.is303CachingEnabled());
this.asynchRevalidator = asynchRevalidator;
}
@@ -265,7 +264,7 @@ public class CachingExec implements Clie
flushEntriesInvalidatedByRequest(context.getTargetHost(), request);
- if (!cacheableRequestPolicy.isServableFromCache(request, cacheConfig.isHeadResponseCachingEnabled())) {
+ if (!cacheableRequestPolicy.isServableFromCache(request)) {
log.debug("Request is not servable from cache");
return callBackend(route, request, context, execAware);
}
@@ -424,11 +423,8 @@ public class CachingExec implements Clie
}
}
- private CloseableHttpResponse generateCachedResponse(
- final HttpRequestWrapper request,
- final HttpContext context,
- final HttpCacheEntry entry,
- final Date now) {
+ private CloseableHttpResponse generateCachedResponse(final HttpRequestWrapper request,
+ final HttpContext context, final HttpCacheEntry entry, final Date now) {
final CloseableHttpResponse cachedResponse;
if (request.containsHeader(HeaderConstants.IF_NONE_MATCH)
|| request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) {
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClientBuilder.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClientBuilder.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClientBuilder.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClientBuilder.java Sat Nov 8 21:47:12 2014
@@ -140,7 +140,7 @@ public class CachingHttpClientBuilder ex
HttpCacheInvalidator cacheInvalidator = this.httpCacheInvalidator;
if (cacheInvalidator == null) {
- cacheInvalidator = new CacheInvalidator(uriExtractor, storageCopy, config.isHeadResponseCachingEnabled());
+ cacheInvalidator = new CacheInvalidator(uriExtractor, storageCopy);
}
return new CachingExec(mainExec,
@@ -162,7 +162,6 @@ public class CachingHttpClientBuilder ex
return null;
}
- @SuppressWarnings("resource")
private SchedulingStrategy createSchedulingStrategy(final CacheConfig config) {
return schedulingStrategy != null ? schedulingStrategy : new ImmediateSchedulingStrategy(config);
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java Sat Nov 8 21:47:12 2014
@@ -67,7 +67,6 @@ class ResponseCachingPolicy {
HttpStatus.SC_MOVED_PERMANENTLY,
HttpStatus.SC_GONE));
private final Set<Integer> uncacheableStatuses;
- private final boolean allowHeadResponseCaching;
/**
* Define a cache policy that limits the size of things that should be stored
@@ -79,13 +78,11 @@ class ResponseCachingPolicy {
* @param neverCache1_0ResponsesWithQueryString true to never cache HTTP 1.0 responses with a query string, false
* to cache if explicit cache headers are found.
* @param allow303Caching if this policy is permitted to cache 303 response
- * @param allowHeadResponseCaching is HEAD response caching enabled
*/
public ResponseCachingPolicy(final long maxObjectSizeBytes,
final boolean sharedCache,
final boolean neverCache1_0ResponsesWithQueryString,
- final boolean allow303Caching,
- final boolean allowHeadResponseCaching) {
+ final boolean allow303Caching) {
this.maxObjectSizeBytes = maxObjectSizeBytes;
this.sharedCache = sharedCache;
this.neverCache1_0ResponsesWithQueryString = neverCache1_0ResponsesWithQueryString;
@@ -96,7 +93,6 @@ class ResponseCachingPolicy {
uncacheableStatuses = new HashSet<Integer>(Arrays.asList(
HttpStatus.SC_PARTIAL_CONTENT, HttpStatus.SC_SEE_OTHER));
}
- this.allowHeadResponseCaching = allowHeadResponseCaching;
}
/**
@@ -110,7 +106,7 @@ class ResponseCachingPolicy {
boolean cacheable = false;
if (!(HeaderConstants.GET_METHOD.equals(httpMethod) ||
- (allowHeadResponseCaching && HeaderConstants.HEAD_METHOD.equals(httpMethod)))) {
+ HeaderConstants.HEAD_METHOD.equals(httpMethod))) {
log.debug("Response was not cacheable.");
return false;
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java Sat Nov 8 21:47:12 2014
@@ -80,7 +80,7 @@ public class TestCacheEntryUpdater {
throws IOException {
entry = HttpTestUtils.makeCacheEntry();
final HttpCacheEntry newEntry = impl.updateCacheEntry(null, entry,
- requestDate, responseDate, response, false);
+ requestDate, responseDate, response);
assertNotSame(newEntry, entry);
}
@@ -93,7 +93,7 @@ public class TestCacheEntryUpdater {
response.setHeaders(new Header[]{});
final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
- new Date(), new Date(), response, false);
+ new Date(), new Date(), response);
final Header[] updatedHeaders = updatedEntry.getAllHeaders();
@@ -117,7 +117,7 @@ public class TestCacheEntryUpdater {
new BasicHeader("Cache-Control", "public")});
final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
- new Date(), new Date(), response, false);
+ new Date(), new Date(), response);
final Header[] updatedHeaders = updatedEntry.getAllHeaders();
@@ -141,7 +141,7 @@ public class TestCacheEntryUpdater {
new BasicHeader("Cache-Control", "public"),});
final HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry,
- new Date(), new Date(), response, false);
+ new Date(), new Date(), response);
final Header[] updatedHeaders = updatedEntry.getAllHeaders();
assertEquals(4, updatedHeaders.length);
@@ -163,7 +163,7 @@ public class TestCacheEntryUpdater {
response.setHeader("Date", DateUtils.formatDate(tenSecondsAgo));
response.setHeader("ETag", "\"old-etag\"");
final HttpCacheEntry result = impl.updateCacheEntry("A", entry, new Date(),
- new Date(), response, false);
+ new Date(), response);
assertEquals(2, result.getAllHeaders().length);
headersContain(result.getAllHeaders(), "Date", DateUtils.formatDate(oneSecondAgo));
headersContain(result.getAllHeaders(), "ETag", "\"new-etag\"");
@@ -174,7 +174,7 @@ public class TestCacheEntryUpdater {
throws IOException {
entry = HttpTestUtils.makeCacheEntry(tenSecondsAgo, eightSecondsAgo);
final HttpCacheEntry updated = impl.updateCacheEntry(null, entry,
- twoSecondsAgo, oneSecondAgo, response, false);
+ twoSecondsAgo, oneSecondAgo, response);
assertEquals(twoSecondsAgo, updated.getRequestDate());
assertEquals(oneSecondAgo, updated.getResponseDate());
@@ -191,7 +191,7 @@ public class TestCacheEntryUpdater {
response.setHeader("ETag", "\"new\"");
response.setHeader("Date", DateUtils.formatDate(twoSecondsAgo));
final HttpCacheEntry updated = impl.updateCacheEntry(null, entry,
- twoSecondsAgo, oneSecondAgo, response, false);
+ twoSecondsAgo, oneSecondAgo, response);
assertEquals(0, updated.getHeaders("Warning").length);
}
@@ -206,7 +206,7 @@ public class TestCacheEntryUpdater {
response.setHeader("ETag", "\"new\"");
response.setHeader("Date", DateUtils.formatDate(twoSecondsAgo));
final HttpCacheEntry updated = impl.updateCacheEntry(null, entry,
- twoSecondsAgo, oneSecondAgo, response, false);
+ twoSecondsAgo, oneSecondAgo, response);
assertEquals("\"new\"", updated.getFirstHeader("ETag").getValue());
}
@@ -221,7 +221,7 @@ public class TestCacheEntryUpdater {
response.setHeader("ETag", "\"new\"");
response.setHeader("Date", "bad-date");
final HttpCacheEntry updated = impl.updateCacheEntry(null, entry,
- twoSecondsAgo, oneSecondAgo, response, false);
+ twoSecondsAgo, oneSecondAgo, response);
assertEquals("\"new\"", updated.getFirstHeader("ETag").getValue());
}
@@ -233,7 +233,7 @@ public class TestCacheEntryUpdater {
HttpStatus.SC_OK, "OK");
try {
impl.updateCacheEntry("A", entry, new Date(), new Date(),
- response, false);
+ response);
fail("should have thrown exception");
} catch (final IllegalArgumentException expected) {
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java Sat Nov 8 21:47:12 2014
@@ -84,7 +84,7 @@ public class TestCacheInvalidator {
request = HttpTestUtils.makeDefaultRequest();
response = HttpTestUtils.make200Response();
- impl = new CacheInvalidator(cacheKeyGenerator, mockStorage, false);
+ impl = new CacheInvalidator(cacheKeyGenerator, mockStorage);
}
private void replayMocks() {
@@ -223,7 +223,7 @@ public class TestCacheInvalidator {
@Test
public void testInvalidatesHEADCacheEntryIfSubsequentGETRequestsAreMadeToTheSameURI() throws Exception {
- impl = new CacheInvalidator(cacheKeyGenerator, mockStorage, true);
+ impl = new CacheInvalidator(cacheKeyGenerator, mockStorage);
final String theURI = "http://foo.example.com:80/";
request = new BasicHttpRequest("GET", theURI,HTTP_1_1);
@@ -239,7 +239,7 @@ public class TestCacheInvalidator {
@Test
public void testInvalidatesVariantHEADCacheEntriesIfSubsequentGETRequestsAreMadeToTheSameURI() throws Exception {
- impl = new CacheInvalidator(cacheKeyGenerator, mockStorage, true);
+ impl = new CacheInvalidator(cacheKeyGenerator, mockStorage);
final String theURI = "http://foo.example.com:80/";
request = new BasicHttpRequest("GET", theURI,HTTP_1_1);
final String theVariantKey = "{Accept-Encoding=gzip%2Cdeflate&User-Agent=Apache-HttpClient}";
@@ -258,7 +258,7 @@ public class TestCacheInvalidator {
}
@Test
- public void testDoesNotInvalidateHEADCacheEntryIfHEADResponseCachingIsNotEnabled() throws Exception {
+ public void testDoesNotInvalidateHEADCacheEntry() throws Exception {
final String theURI = "http://foo.example.com:80/";
request = new BasicHttpRequest("HEAD", theURI,HTTP_1_1);
@@ -271,7 +271,7 @@ public class TestCacheInvalidator {
@Test
public void testDoesNotInvalidateHEADCacheEntryIfSubsequentHEADRequestsAreMadeToTheSameURI() throws Exception {
- impl = new CacheInvalidator(cacheKeyGenerator, mockStorage, true);
+ impl = new CacheInvalidator(cacheKeyGenerator, mockStorage);
final String theURI = "http://foo.example.com:80/";
request = new BasicHttpRequest("HEAD", theURI,HTTP_1_1);
@@ -284,7 +284,7 @@ public class TestCacheInvalidator {
@Test
public void testDoesNotInvalidateGETCacheEntryIfSubsequentGETRequestsAreMadeToTheSameURI() throws Exception {
- impl = new CacheInvalidator(cacheKeyGenerator, mockStorage, true);
+ impl = new CacheInvalidator(cacheKeyGenerator, mockStorage);
final String theURI = "http://foo.example.com:80/";
request = new BasicHttpRequest("GET", theURI,HTTP_1_1);
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheableRequestPolicy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheableRequestPolicy.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheableRequestPolicy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheableRequestPolicy.java Sat Nov 8 21:47:12 2014
@@ -35,8 +35,6 @@ public class TestCacheableRequestPolicy
private CacheableRequestPolicy policy;
- private final boolean allowHeadResponseCaching = true;
-
@Before
public void setUp() throws Exception {
policy = new CacheableRequestPolicy();
@@ -46,7 +44,7 @@ public class TestCacheableRequestPolicy
public void testIsGetServableFromCache() {
final BasicHttpRequest request = new BasicHttpRequest("GET", "someUri");
- Assert.assertTrue(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertTrue(policy.isServableFromCache(request));
}
@Test
@@ -54,19 +52,19 @@ public class TestCacheableRequestPolicy
BasicHttpRequest request = new BasicHttpRequest("GET", "someUri");
request.addHeader("Cache-Control", "no-cache");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("GET", "someUri");
request.addHeader("Cache-Control", "no-store");
request.addHeader("Cache-Control", "max-age=20");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("GET", "someUri");
request.addHeader("Cache-Control", "public");
request.addHeader("Cache-Control", "no-store, max-age=20");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
}
@Test
@@ -74,26 +72,26 @@ public class TestCacheableRequestPolicy
BasicHttpRequest request = new BasicHttpRequest("GET", "someUri");
request.addHeader("Pragma", "no-cache");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("GET", "someUri");
request.addHeader("Pragma", "value1");
request.addHeader("Pragma", "value2");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
}
@Test
public void testIsHeadServableFromCache() {
BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri");
- Assert.assertTrue(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertTrue(policy.isServableFromCache(request));
request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Cache-Control", "public");
request.addHeader("Cache-Control", "max-age=20");
- Assert.assertTrue(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertTrue(policy.isServableFromCache(request));
}
@Test
@@ -101,19 +99,19 @@ public class TestCacheableRequestPolicy
BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Cache-Control", "no-cache");
- Assert.assertFalse(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Cache-Control", "no-store");
request.addHeader("Cache-Control", "max-age=20");
- Assert.assertFalse(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Cache-Control", "public");
request.addHeader("Cache-Control", "no-store, max-age=20");
- Assert.assertFalse(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
}
@Test
@@ -121,24 +119,24 @@ public class TestCacheableRequestPolicy
BasicHttpRequest request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Pragma", "no-cache");
- Assert.assertFalse(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("HEAD", "someUri");
request.addHeader("Pragma", "value1");
request.addHeader("Pragma", "value2");
- Assert.assertFalse(policy.isServableFromCache(request, allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
}
@Test
public void testIsArbitraryMethodServableFromCache() {
BasicHttpRequest request = new BasicHttpRequest("TRACE", "someUri");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
request = new BasicHttpRequest("get", "someUri");
- Assert.assertFalse(policy.isServableFromCache(request, !allowHeadResponseCaching));
+ Assert.assertFalse(policy.isServableFromCache(request));
}
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java Sat Nov 8 21:47:12 2014
@@ -288,8 +288,8 @@ public class TestCachedResponseSuitabili
}
@Test
- public void testNotSuitableForGETIfHeadResponseCachingEnabledAndEntryDoesNotSpecifyARequestMethodOrEntity() {
- impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().setAllowHeadResponseCaching(true).build());
+ public void testNotSuitableForGETIfEntryDoesNotSpecifyARequestMethodOrEntity() {
+ impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().build());
final Header[] headers = {
new BasicHeader("Date", DateUtils.formatDate(tenSecondsAgo)),
new BasicHeader("Cache-Control", "max-age=3600"),
@@ -301,8 +301,8 @@ public class TestCachedResponseSuitabili
}
@Test
- public void testSuitableForGETIfHeadResponseCachingEnabledAndEntryDoesNotSpecifyARequestMethodButContainsEntity() {
- impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().setAllowHeadResponseCaching(true).build());
+ public void testSuitableForGETIfEntryDoesNotSpecifyARequestMethodButContainsEntity() {
+ impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().build());
final Header[] headers = {
new BasicHeader("Date", DateUtils.formatDate(tenSecondsAgo)),
new BasicHeader("Cache-Control", "max-age=3600"),
@@ -315,7 +315,7 @@ public class TestCachedResponseSuitabili
@Test
public void testSuitableForGETIfHeadResponseCachingEnabledAndEntryDoesNotSpecifyARequestMethodButContains204Response() {
- impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().setAllowHeadResponseCaching(true).build());
+ impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().build());
final Header[] headers = {
new BasicHeader("Date", DateUtils.formatDate(tenSecondsAgo)),
new BasicHeader("Cache-Control", "max-age=3600")
@@ -328,7 +328,7 @@ public class TestCachedResponseSuitabili
@Test
public void testSuitableForHEADIfHeadResponseCachingEnabledAndEntryDoesNotSpecifyARequestMethod() {
final HttpRequest headRequest = new BasicHttpRequest("HEAD", "/foo", HttpVersion.HTTP_1_1);
- impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().setAllowHeadResponseCaching(true).build());
+ impl = new CachedResponseSuitabilityChecker(CacheConfig.custom().build());
final Header[] headers = {
new BasicHeader("Date", DateUtils.formatDate(tenSecondsAgo)),
new BasicHeader("Cache-Control", "max-age=3600"),
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingExecChain.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingExecChain.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingExecChain.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingExecChain.java Sat Nov 8 21:47:12 2014
@@ -27,7 +27,6 @@
package org.apache.http.impl.client.cache;
import static org.easymock.EasyMock.anyObject;
-import static org.easymock.EasyMock.anyBoolean;
import static org.easymock.EasyMock.eq;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
@@ -1765,7 +1764,7 @@ public abstract class TestCachingExecCha
}
protected void requestPolicyAllowsCaching(final boolean allow) {
- expect(mockRequestPolicy.isServableFromCache((HttpRequest) anyObject(), anyBoolean())).andReturn(allow);
+ expect(mockRequestPolicy.isServableFromCache((HttpRequest) anyObject())).andReturn(allow);
}
protected void cacheEntrySuitable(final boolean suitable) {
Modified: httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java?rev=1637599&r1=1637598&r2=1637599&view=diff
==============================================================================
--- httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java (original)
+++ httpcomponents/httpclient/trunk/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java Sat Nov 8 21:47:12 2014
@@ -62,7 +62,7 @@ public class TestResponseCachingPolicy {
sixSecondsAgo = new Date(now.getTime() - 6 * 1000L);
tenSecondsFromNow = new Date(now.getTime() + 10 * 1000L);
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("GET","/",HTTP_1_1);
response = new BasicHttpResponse(
new BasicStatusLine(HTTP_1_1, HttpStatus.SC_OK, ""));
@@ -76,19 +76,12 @@ public class TestResponseCachingPolicy {
}
@Test
- public void testIsHeadCacheableIfHeadResponseCachingIsEnabled() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ public void testIsHeadCacheable() {
+ policy = new ResponseCachingPolicy(0, true, false, false);
Assert.assertTrue(policy.isResponseCacheable("HEAD", response));
}
@Test
- public void testHeadIsNotCacheableIfHeadResponseCachingIsDisabled() {
- request = new BasicHttpRequest("HEAD","/",HTTP_1_1);
- policy = new ResponseCachingPolicy(0, true, false, false, false);
- Assert.assertFalse(policy.isResponseCacheable("HEAD", response));
- }
-
- @Test
public void testResponsesToRequestsWithAuthorizationHeadersAreNotCacheableBySharedCache() {
request = new BasicHttpRequest("GET","/",HTTP_1_1);
request.setHeader("Authorization","Basic dXNlcjpwYXNzd2Q=");
@@ -97,7 +90,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToRequestsWithAuthorizationHeadersAreCacheableByNonSharedCache() {
- policy = new ResponseCachingPolicy(0, false, false, false, false);
+ policy = new ResponseCachingPolicy(0, false, false, false);
request = new BasicHttpRequest("GET","/",HTTP_1_1);
request.setHeader("Authorization","Basic dXNlcjpwYXNzd2Q=");
Assert.assertTrue(policy.isResponseCacheable(request,response));
@@ -149,7 +142,7 @@ public class TestResponseCachingPolicy {
@Test
public void test206ResponseCodeIsNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setStatusCode(HttpStatus.SC_PARTIAL_CONTENT);
@@ -193,7 +186,7 @@ public class TestResponseCachingPolicy {
@Test
public void testPlain303ResponseCodeIsNotCacheableEvenIf303CachingEnabled() {
- policy = new ResponseCachingPolicy(0, true, false, true, false);
+ policy = new ResponseCachingPolicy(0, true, false, true);
response.setStatusCode(HttpStatus.SC_SEE_OTHER);
response.removeHeaders("Expires");
response.removeHeaders("Cache-Control");
@@ -267,7 +260,7 @@ public class TestResponseCachingPolicy {
@Test
public void test200ResponseWithPrivateCacheControlIsCacheableByNonSharedCache() {
- policy = new ResponseCachingPolicy(0, false, false, false, false);
+ policy = new ResponseCachingPolicy(0, false, false, false);
response.setStatusCode(HttpStatus.SC_OK);
response.setHeader("Cache-Control", "private");
Assert.assertTrue(policy.isResponseCacheable("GET", response));
@@ -378,7 +371,7 @@ public class TestResponseCachingPolicy {
@Test
public void testIsHeadWithAnyCacheControlCacheable() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
response.addHeader("Cache-Control", "max=10");
Assert.assertTrue(policy.isResponseCacheable("HEAD", response));
@@ -426,7 +419,7 @@ public class TestResponseCachingPolicy {
@Test
public void testVaryStarIsNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -442,7 +435,7 @@ public class TestResponseCachingPolicy {
@Test
public void testIsHeadWithVaryHeaderCacheable() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
response.addHeader("Vary", "Accept-Encoding");
Assert.assertTrue(policy.isResponseCacheable("HEAD", response));
}
@@ -457,7 +450,7 @@ public class TestResponseCachingPolicy {
@Test
public void testIsArbitraryMethodCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new HttpOptions("http://foo.example.com/");
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
@@ -483,7 +476,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesWithMultipleAgeHeadersAreNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -501,7 +494,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesWithMultipleDateHeadersAreNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -518,7 +511,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesWithMalformedDateHeadersAreNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -535,7 +528,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesWithMultipleExpiresHeadersAreNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -558,7 +551,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponseThatHasTooMuchContentIsNotCacheableUsingSharedPublicCache() {
- policy = new ResponseCachingPolicy(0, true, false, false, false);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request.setHeader("Authorization", "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==");
response.setHeader("Cache-Control", "public");
@@ -586,14 +579,14 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToGETWithQueryParamsButNoExplicitCachingAreNotCacheableEvenWhen1_0QueryCachingDisabled() {
- policy = new ResponseCachingPolicy(0, true, true, false, false);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("GET", "/foo?s=bar");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@Test
public void testResponsesToHEADWithQueryParamsButNoExplicitCachingAreNotCacheableEvenWhen1_0QueryCachingDisabled() {
- policy = new ResponseCachingPolicy(0, true, true, false, true);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
Assert.assertFalse(policy.isResponseCacheable(request, response));
}
@@ -608,7 +601,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToHEADWithQueryParamsAndExplicitCachingAreCacheable() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -617,7 +610,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToGETWithQueryParamsAndExplicitCachingAreCacheableEvenWhen1_0QueryCachingDisabled() {
- policy = new ResponseCachingPolicy(0, true, true, false, false);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -626,7 +619,7 @@ public class TestResponseCachingPolicy {
@Test
public void testResponsesToHEADWithQueryParamsAndExplicitCachingAreCacheableEvenWhen1_0QueryCachingDisabled() {
- policy = new ResponseCachingPolicy(0, true, true, false, true);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -649,7 +642,7 @@ public class TestResponseCachingPolicy {
@Test
public void getsWithQueryParametersDirectlyFrom1_0OriginsAreNotCacheableEvenWithSetting() {
- policy = new ResponseCachingPolicy(0, true, true, false, false);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
Assert.assertFalse(policy.isResponseCacheable(request, response));
@@ -657,7 +650,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersDirectlyFrom1_0OriginsAreNotCacheableEvenWithSetting() {
- policy = new ResponseCachingPolicy(0, true, true, false, true);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
Assert.assertFalse(policy.isResponseCacheable(request, response));
@@ -674,7 +667,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersDirectlyFrom1_0OriginsAreCacheableWithExpires() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
response.setHeader("Date", DateUtils.formatDate(now));
@@ -684,7 +677,7 @@ public class TestResponseCachingPolicy {
@Test
public void getsWithQueryParametersDirectlyFrom1_0OriginsCanBeNotCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, false, false);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
response.setHeader("Date", DateUtils.formatDate(now));
@@ -694,7 +687,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersDirectlyFrom1_0OriginsCanBeNotCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, false, true);
+ policy = new ResponseCachingPolicy(0, true, true, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
response.setHeader("Date", DateUtils.formatDate(now));
@@ -727,7 +720,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersFrom1_0OriginsViaProxiesAreCacheableWithExpires() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -737,7 +730,7 @@ public class TestResponseCachingPolicy {
@Test
public void getsWithQueryParametersFrom1_0OriginsViaProxiesCanNotBeCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, true, false);
+ policy = new ResponseCachingPolicy(0, true, true, true);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -747,7 +740,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersFrom1_0OriginsViaProxiesCanNotBeCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, true, true);
+ policy = new ResponseCachingPolicy(0, true, true, true);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -766,7 +759,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersFrom1_0OriginsViaExplicitProxiesAreCacheableWithExpires() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -776,7 +769,7 @@ public class TestResponseCachingPolicy {
@Test
public void getsWithQueryParametersFrom1_0OriginsViaExplicitProxiesCanNotBeCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, true, false);
+ policy = new ResponseCachingPolicy(0, true, true, true);
request = new BasicHttpRequest("GET", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -786,7 +779,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersFrom1_0OriginsViaExplicitProxiesCanNotBeCacheableEvenWithExpires() {
- policy = new ResponseCachingPolicy(0, true, true, true, true);
+ policy = new ResponseCachingPolicy(0, true, true, true);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Expires", DateUtils.formatDate(tenSecondsFromNow));
@@ -806,7 +799,7 @@ public class TestResponseCachingPolicy {
@Test
public void headsWithQueryParametersFrom1_1OriginsVia1_0ProxiesAreCacheableWithExpires() {
- policy = new ResponseCachingPolicy(0, true, false, false, true);
+ policy = new ResponseCachingPolicy(0, true, false, false);
request = new BasicHttpRequest("HEAD", "/foo?s=bar");
response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK");
response.setHeader("Date", DateUtils.formatDate(now));
@@ -852,7 +845,7 @@ public class TestResponseCachingPolicy {
public void test303WithExplicitCachingHeadersWhenPermittedByConfig() {
// HTTPbis working group says ok if explicitly indicated by
// response headers
- policy = new ResponseCachingPolicy(0, true, false, true, false);
+ policy = new ResponseCachingPolicy(0, true, false, true);
response.setStatusCode(HttpStatus.SC_SEE_OTHER);
response.setHeader("Date", DateUtils.formatDate(now));
response.setHeader("Cache-Control","max-age=300");
|