Return-Path: X-Original-To: apmail-hc-commits-archive@www.apache.org Delivered-To: apmail-hc-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9ADF5177D6 for ; Sat, 8 Nov 2014 21:47:47 +0000 (UTC) Received: (qmail 47584 invoked by uid 500); 8 Nov 2014 21:47:47 -0000 Delivered-To: apmail-hc-commits-archive@hc.apache.org Received: (qmail 47544 invoked by uid 500); 8 Nov 2014 21:47:47 -0000 Mailing-List: contact commits-help@hc.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "HttpComponents Project" Delivered-To: mailing list commits@hc.apache.org Received: (qmail 47535 invoked by uid 99); 8 Nov 2014 21:47:47 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Nov 2014 21:47:47 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 08 Nov 2014 21:47:17 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 32AF823888E4 for ; Sat, 8 Nov 2014 21:47:14 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1637599 - in /httpcomponents/httpclient/trunk/httpclient-cache/src: main/java-deprecated/org/apache/http/impl/client/cache/ main/java/org/apache/http/client/cache/ main/java/org/apache/http/impl/client/cache/ test/java/org/apache/http/impl... Date: Sat, 08 Nov 2014 21:47:13 -0000 To: commits@hc.apache.org From: fx@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20141108214714.32AF823888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 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(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 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()); } /** @@ -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(), requestMethod); + new HashMap(),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 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(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");