diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/CacheResponseStatus.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/CacheResponseStatus.java index 81899ab54..aa94bdb29 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/CacheResponseStatus.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/CacheResponseStatus.java @@ -28,7 +28,7 @@ package org.apache.http.client.cache; /** * This enumeration represents the various ways a response can be generated - * by the {@link org.apache.http.impl.client.cache.CachingHttpClient}; + * by the {@link org.apache.http.impl.client.cache.CachingHttpClient}; * if a request is executed with an {@link org.apache.http.protocol.HttpContext} * then a parameter with one of these values will be registered in the * context under the key diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java index 384c0fc13..495660809 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntry.java @@ -110,7 +110,7 @@ public class HttpCacheEntry implements Serializable { ? new HashMap(variantMap) : null; } - + /** * Create a new {@link HttpCacheEntry}. * @@ -207,7 +207,7 @@ public class HttpCacheEntry implements Serializable { public Resource getResource() { return this.resource; } - + /** * Indicates whether the origin response indicated the associated * resource had variants (i.e. that the Vary header was set on the diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntrySerializer.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntrySerializer.java index d95c119db..c5f507450 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntrySerializer.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheEntrySerializer.java @@ -33,7 +33,7 @@ import java.io.OutputStream; /** * Used by some {@link HttpCacheStorage} implementations to serialize * {@link HttpCacheEntry} instances to a byte representation before - * storage. + * storage. */ public interface HttpCacheEntrySerializer { diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheStorage.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheStorage.java index c4b2ecc41..157e5b50d 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheStorage.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheStorage.java @@ -33,7 +33,7 @@ import java.io.IOException; * interface. They can then be plugged into the existing * {@link org.apache.http.impl.client.cache.CachingHttpClient} * implementation. - * + * * @since 4.1 */ public interface HttpCacheStorage { @@ -68,7 +68,7 @@ public interface HttpCacheStorage { * Atomically applies the given callback to update an existing cache * entry under a given key. * @param key indicates which entry to modify - * @param callback performs the update; see + * @param callback performs the update; see * {@link HttpCacheUpdateCallback} for details, but roughly the * callback expects to be handed the current entry and will return * the new value for the entry. diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateCallback.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateCallback.java index ea2e80b41..8c560b7f1 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateCallback.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateCallback.java @@ -49,4 +49,4 @@ public interface HttpCacheUpdateCallback { */ HttpCacheEntry update(HttpCacheEntry existing) throws IOException; -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateException.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateException.java index 956cc8b40..6f819db57 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateException.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/HttpCacheUpdateException.java @@ -45,4 +45,4 @@ public class HttpCacheUpdateException extends Exception { initCause(cause); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/InputLimit.java b/httpclient-cache/src/main/java/org/apache/http/client/cache/InputLimit.java index fd2cf988f..1fef97eba 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/InputLimit.java +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/InputLimit.java @@ -31,7 +31,7 @@ import org.apache.http.annotation.NotThreadSafe; /** * Used to limiting the size of an incoming response body of * unknown size that is optimistically being read in anticipation - * of caching it. + * of caching it. * @since 4.1 */ @NotThreadSafe // reached diff --git a/httpclient-cache/src/main/java/org/apache/http/client/cache/package.html b/httpclient-cache/src/main/java/org/apache/http/client/cache/package.html index 9e765c5ce..58a1e3ff3 100644 --- a/httpclient-cache/src/main/java/org/apache/http/client/cache/package.html +++ b/httpclient-cache/src/main/java/org/apache/http/client/cache/package.html @@ -12,7 +12,7 @@ to you under the Apache License, Version 2.0 (the with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -51,7 +51,7 @@ the {@code CachingHttpClient} to indicate how the request was processed by the caching module itself.

-New storage backends will need to implement the +New storage backends will need to implement the {@link org.apache.http.client.cache.HttpCacheStorage} interface; they can then be passed to one of the {@code CachingHttpClient} constructors, which will happily make use of the new storage mechanism. diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java index 51d647e8e..fcfe93c9e 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidationRequest.java @@ -37,7 +37,7 @@ import org.apache.http.protocol.HttpContext; /** * Class used to represent an asynchronous revalidation event, such as with - * "stale-while-revalidate" + * "stale-while-revalidate" */ class AsynchronousValidationRequest implements Runnable { private final AsynchronousValidator parent; @@ -47,12 +47,12 @@ class AsynchronousValidationRequest implements Runnable { private final HttpContext context; private final HttpCacheEntry cacheEntry; private final String identifier; - + private final Log log = LogFactory.getLog(getClass()); - + /** * Used internally by {@link AsynchronousValidator} to schedule a - * revalidation. + * revalidation. * @param cachingClient * @param target * @param request @@ -74,7 +74,7 @@ class AsynchronousValidationRequest implements Runnable { this.cacheEntry = cacheEntry; this.identifier = identifier; } - + public void run() { try { cachingClient.revalidateCacheEntry(target, request, context, cacheEntry); @@ -90,5 +90,5 @@ class AsynchronousValidationRequest implements Runnable { String getIdentifier() { return identifier; } - + } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java index 023b3972f..0b5fd2e96 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/AsynchronousValidator.java @@ -51,20 +51,20 @@ class AsynchronousValidator { private final ExecutorService executor; private final Set queued; private final CacheKeyGenerator cacheKeyGenerator; - + private final Log log = LogFactory.getLog(getClass()); - + /** * Create AsynchronousValidator which will make revalidation requests - * using the supplied {@link CachingHttpClient}, and + * using the supplied {@link CachingHttpClient}, and * a {@link ThreadPoolExecutor} generated according to the thread - * pool settings provided in the given {@link CacheConfig}. + * pool settings provided in the given {@link CacheConfig}. * @param cachingClient used to execute asynchronous requests * @param config specifies thread pool settings. See * {@link CacheConfig#getAsynchronousWorkersMax()}, * {@link CacheConfig#getAsynchronousWorkersCore()}, * {@link CacheConfig#getAsynchronousWorkerIdleLifetimeSecs()}, - * and {@link CacheConfig#getRevalidationQueueSize()}. + * and {@link CacheConfig#getRevalidationQueueSize()}. */ public AsynchronousValidator(CachingHttpClient cachingClient, CacheConfig config) { @@ -76,7 +76,7 @@ class AsynchronousValidator { new ArrayBlockingQueue(config.getRevalidationQueueSize())) ); } - + /** * Create AsynchronousValidator which will make revalidation requests * using the supplied {@link CachingHttpClient} and @@ -91,10 +91,10 @@ class AsynchronousValidator { this.queued = new HashSet(); this.cacheKeyGenerator = new CacheKeyGenerator(); } - + /** * Schedules an asynchronous revalidation - * + * * @param target * @param request * @param context @@ -104,7 +104,7 @@ class AsynchronousValidator { HttpRequest request, HttpContext context, HttpCacheEntry entry) { // getVariantURI will fall back on getURI if no variants exist String uri = cacheKeyGenerator.getVariantURI(target, request, entry); - + if (!queued.contains(uri)) { AsynchronousValidationRequest revalidationRequest = new AsynchronousValidationRequest(this, cachingClient, target, @@ -121,7 +121,7 @@ class AsynchronousValidator { /** * Removes an identifier from the internal list of revalidation jobs in - * progress. This is meant to be called by + * progress. This is meant to be called by * {@link AsynchronousValidationRequest#run()} once the revalidation is * complete, using the identifier passed in during constructions. * @param identifier @@ -129,11 +129,11 @@ class AsynchronousValidator { synchronized void markComplete(String identifier) { queued.remove(identifier); } - + Set getScheduledIdentifiers() { return Collections.unmodifiableSet(queued); } - + ExecutorService getExecutor() { return executor; } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java index 1635b7676..16dee1b31 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicHttpCache.java @@ -83,7 +83,7 @@ class BasicHttpCache implements HttpCache { String uri = uriExtractor.getURI(host, request); storage.removeEntry(uri); } - + public void flushInvalidatedCacheEntriesFor(HttpHost host, HttpRequest request, HttpResponse response) { cacheInvalidator.flushInvalidatedCacheEntries(host, request, response); } @@ -193,7 +193,7 @@ class BasicHttpCache implements HttpCache { if (src == null) { src = entry; } - + Resource resource = resourceFactory.copy(requestId, src.getResource()); Map variantMap = new HashMap(src.getVariantMap()); variantMap.put(variantKey, variantCacheKey); @@ -231,7 +231,7 @@ class BasicHttpCache implements HttpCache { storage.putEntry(cacheKey, updatedEntry); return updatedEntry; } - + public HttpResponse cacheAndReturnResponse(HttpHost host, HttpRequest request, HttpResponse originResponse, Date requestSent, Date responseReceived) throws IOException { @@ -300,4 +300,4 @@ class BasicHttpCache implements HttpCache { variants.put(etagHeader.getValue(), new Variant(variantKey, variantCacheKey, entry)); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicIdGenerator.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicIdGenerator.java index b13e74268..184a391db 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicIdGenerator.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/BasicIdGenerator.java @@ -82,4 +82,4 @@ class BasicIdGenerator { return buffer.toString(); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java index 821a51a3b..f9922bbab 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheConfig.java @@ -33,19 +33,19 @@ package org.apache.http.impl.client.cache; * {@code CacheConfig} instance has sane and conservative defaults, so the * easiest way to specify options is to get an instance and then set just * the options you want to modify from their defaults.

- * + * *

N.B. This class is only for caching-specific configuration; to - * configure the behavior of the rest of the client, configure the + * configure the behavior of the rest of the client, configure the * {@link org.apache.http.client.HttpClient} used as the "backend" * for the {@code CachingHttpClient}.

- * + * *

Cache configuration can be grouped into the following categories:

- * + * *

Cache size. If the backend storage supports these limits, you * can specify the {@link CacheConfig#setMaxCacheEntries maximum number of * cache entries} as well as the {@link CacheConfig#setMaxObjectSizeBytes * maximum cacheable response body size}.

- * + * *

Public/private caching. By default, the caching module considers * itself to be a shared (public) cache, and will not, for example, cache * responses to requests with {@code Authorization} headers or responses @@ -53,7 +53,7 @@ package org.apache.http.impl.client.cache; * is only going to be used by one logical "user" (behaving similarly to a * browser cache), then you will want to {@link * CacheConfig#setSharedCache(boolean) turn off the shared cache setting}.

- * + * *

Heuristic caching. Per RFC2616, a cache may cache certain cache * entries even if no explicit cache control headers are set by the origin. * This behavior is off by default, but you may want to turn this on if you @@ -67,7 +67,7 @@ package org.apache.http.impl.client.cache; * * 13.2.2 and * 13.2.4 of the HTTP/1.1 RFC for more details on heuristic caching.

- * + * *

Background validation. The cache module supports the * {@code stale-while-revalidate} directive of * RFC5861, which allows @@ -79,7 +79,7 @@ package org.apache.http.impl.client.cache; * CacheConfig#setAsynchronousWorkerIdleLifetimeSecs(int) maximum time they * can be idle before being reclaimed}. You can also control the {@link * CacheConfig#setRevalidationQueueSize(int) size of the queue} used for - * revalidations when there aren't enough workers to keep up with demand. + * revalidations when there aren't enough workers to keep up with demand. */ public class CacheConfig { @@ -115,22 +115,22 @@ public class CacheConfig { /** Default number of worker threads to allow for background revalidations * resulting from the stale-while-revalidate directive. */ - public static final int DEFAULT_ASYNCHRONOUS_WORKERS_MAX = 1; + public static final int DEFAULT_ASYNCHRONOUS_WORKERS_MAX = 1; /** Default minimum number of worker threads to allow for background * revalidations resulting from the stale-while-revalidate directive. */ public static final int DEFAULT_ASYNCHRONOUS_WORKERS_CORE = 1; - + /** Default maximum idle lifetime for a background revalidation thread * before it gets reclaimed. */ public static final int DEFAULT_ASYNCHRONOUS_WORKER_IDLE_LIFETIME_SECS = 60; - - /** Default maximum queue length for background revalidation requests. + + /** Default maximum queue length for background revalidation requests. */ public static final int DEFAULT_REVALIDATION_QUEUE_SIZE = 100; - + private int maxObjectSizeBytes = DEFAULT_MAX_OBJECT_SIZE_BYTES; private int maxCacheEntries = DEFAULT_MAX_CACHE_ENTRIES; private int maxUpdateRetries = DEFAULT_MAX_UPDATE_RETRIES; @@ -236,7 +236,7 @@ public class CacheConfig { * and {@code Date} headers of a cached response during which the cached * response will be considered heuristically fresh. * @param heuristicCoefficient should be between {@code 0.0} and - * {@code 1.0}. + * {@code 1.0}. */ public void setHeuristicCoefficient(float heuristicCoefficient) { this.heuristicCoefficient = heuristicCoefficient; @@ -255,7 +255,7 @@ public class CacheConfig { * calculation is not possible. Explicit cache control directives on * either the request or origin response will override this, as will * the heuristic {@code Last-Modified} freshness calculation if it is - * available. + * available. * @param heuristicDefaultLifetimeSecs is the number of seconds to * consider a cache-eligible response fresh in the absence of other * information. Set this to {@code 0} to disable this style of @@ -276,9 +276,9 @@ public class CacheConfig { /** * Sets the maximum number of threads to allow for background - * revalidations due to the {@code stale-while-revalidate} directive. + * revalidations due to the {@code stale-while-revalidate} directive. * @param max number of threads; a value of 0 disables background - * revalidations. + * revalidations. */ public void setAsynchronousWorkersMax(int max) { this.asynchronousWorkersMax = max; @@ -286,7 +286,7 @@ public class CacheConfig { /** * Returns the minimum number of threads to keep alive for background - * revalidations due to the {@code stale-while-revalidate} directive. + * revalidations due to the {@code stale-while-revalidate} directive. */ public int getAsynchronousWorkersCore() { return asynchronousWorkersCore; @@ -296,7 +296,7 @@ public class CacheConfig { * Sets the minimum number of threads to keep alive for background * revalidations due to the {@code stale-while-revalidate} directive. * @param min should be greater than zero and less than or equal - * to getAsynchronousWorkersMax() + * to getAsynchronousWorkersMax() */ public void setAsynchronousWorkersCore(int min) { this.asynchronousWorkersCore = min; @@ -337,5 +337,5 @@ public class CacheConfig { this.revalidationQueueSize = size; } - + } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java index c73b5e563..8717ac59d 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheInvalidator.java @@ -172,7 +172,7 @@ class CacheInvalidator { } return relURL; } - + protected boolean requestShouldNotBeCached(HttpRequest req) { String method = req.getRequestLine().getMethod(); return notGetOrHeadRequest(method); @@ -184,7 +184,7 @@ class CacheInvalidator { } /** Flushes entries that were invalidated by the given response - * received for the given host/request pair. + * received for the given host/request pair. */ public void flushInvalidatedCacheEntries(HttpHost host, HttpRequest request, HttpResponse response) { @@ -200,7 +200,7 @@ class CacheInvalidator { if (!responseDateNewerThanEntryDate(response, entry)) return; if (!responseAndEntryEtagsDiffer(response, entry)) return; - + flushUriIfSameHost(reqURL, canonURL); } @@ -210,7 +210,7 @@ class CacheInvalidator { String contentLocation = clHeader.getValue(); URL canonURL = getAbsoluteURL(contentLocation); if (canonURL != null) return canonURL; - return getRelativeURL(reqURL, contentLocation); + return getRelativeURL(reqURL, contentLocation); } private boolean responseAndEntryEtagsDiffer(HttpResponse response, diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheKeyGenerator.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheKeyGenerator.java index 647debd85..74fec45e8 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheKeyGenerator.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheKeyGenerator.java @@ -144,7 +144,7 @@ class CacheKeyGenerator { * Compute a "variant key" from the headers of a given request that are * covered by the Vary header of a given cache entry. Any request whose * varying headers match those of this request should have the same - * variant key. + * variant key. * @param req originating request * @param entry cache entry in question that has variants * @return a String variant key @@ -179,4 +179,4 @@ class CacheKeyGenerator { return buf.toString(); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheMap.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheMap.java index 1bb1e3a2b..3bf8247b7 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheMap.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheMap.java @@ -47,4 +47,4 @@ final class CacheMap extends LinkedHashMap { return size() > this.maxEntries; } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheValidityPolicy.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheValidityPolicy.java index bfc4bfabe..61859d2d5 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheValidityPolicy.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CacheValidityPolicy.java @@ -119,7 +119,7 @@ class CacheValidityPolicy { public boolean proxyRevalidate(final HttpCacheEntry entry) { return hasCacheControlDirective(entry, "proxy-revalidate"); } - + public boolean mayReturnStaleWhileRevalidating(final HttpCacheEntry entry, Date now) { for (Header h : entry.getHeaders("Cache-Control")) { for(HeaderElement elt : h.getElements()) { @@ -135,10 +135,10 @@ class CacheValidityPolicy { } } } - + return false; } - + public boolean mayReturnStaleIfError(HttpRequest request, HttpCacheEntry entry, Date now) { long stalenessSecs = getStalenessSecs(entry, now); @@ -147,7 +147,7 @@ class CacheValidityPolicy { || mayReturnStaleIfError(entry.getHeaders("Cache-Control"), stalenessSecs); } - + private boolean mayReturnStaleIfError(Header[] headers, long stalenessSecs) { boolean result = false; for(Header h : headers) { @@ -206,8 +206,8 @@ class CacheValidityPolicy { protected boolean hasContentLengthHeader(HttpCacheEntry entry) { return null != entry.getFirstHeader(HTTP.CONTENT_LEN); - } - + } + /** * This matters for deciding whether the cache entry is valid to serve as a * response. If these values do not match, we might have a partial response diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java index bad6b766b..bd59c57fa 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/CachingHttpClient.java @@ -79,7 +79,7 @@ import org.apache.http.util.VersionInfo; * related configuration you want to do vis-a-vis timeouts and connection * pools should be done on this backend client before constructing a {@code * CachingHttpClient} from it.

- * + * *

Generally speaking, the {@code CachingHttpClient} is implemented as a * Decorator * of the backend client; for any incoming request it attempts to satisfy @@ -92,7 +92,7 @@ import org.apache.http.util.VersionInfo; * This notion of "semantic transparency" means you should be able to drop * a {@link CachingHttpClient} into an existing application without breaking * anything.

- * + * *

Folks that would like to experiment with alternative storage backends * should look at the {@link HttpCacheStorage} interface and the related * package documentation there. You may also be interested in the provided @@ -137,7 +137,7 @@ public class CachingHttpClient implements HttpClient { private final RequestProtocolCompliance requestCompliance; private final AsynchronousValidator asynchRevalidator; - + private final Log log = LogFactory.getLog(getClass()); CachingHttpClient( @@ -226,7 +226,7 @@ public class CachingHttpClient implements HttpClient { * response bodies are managed using the given {@link ResourceFactory}. * @param client used to make origin requests * @param resourceFactory how to manage cached response bodies - * @param storage where to store cache entries + * @param storage where to store cache entries * @param config cache module options */ public CachingHttpClient( @@ -244,7 +244,7 @@ public class CachingHttpClient implements HttpClient { * that stores cache entries in the provided storage backend and uses * the given {@link HttpClient} for backend requests. * @param client used to make origin requests - * @param storage where to store cache entries + * @param storage where to store cache entries * @param config cache module options */ public CachingHttpClient( @@ -282,7 +282,7 @@ public class CachingHttpClient implements HttpClient { this.requestCompliance = requestCompliance; this.asynchRevalidator = makeAsynchronousValidator(config); } - + private AsynchronousValidator makeAsynchronousValidator( CacheConfig config) { if (config.getAsynchronousWorkersMax() > 0) { @@ -292,7 +292,7 @@ public class CachingHttpClient implements HttpClient { } /** - * Reports the number of times that the cache successfully responded + * Reports the number of times that the cache successfully responded * to an {@link HttpRequest} without contacting the origin server. * @return the number of cache hits */ @@ -395,7 +395,7 @@ public class CachingHttpClient implements HttpClient { return handleCacheMiss(target, request, context); } - return handleCacheHit(target, request, context, entry); + return handleCacheHit(target, request, context, entry); } private HttpResponse handleCacheHit(HttpHost target, HttpRequest request, @@ -428,9 +428,9 @@ public class CachingHttpClient implements HttpClient { && !staleResponseNotAllowed(request, entry, now) && validityPolicy.mayReturnStaleWhileRevalidating(entry, now)) { final HttpResponse resp = generateCachedResponse(request, context, entry, now); - + asynchRevalidator.revalidateCacheEntry(target, request, context, entry); - + return resp; } return revalidateCacheEntry(target, request, context, entry); @@ -468,12 +468,12 @@ public class CachingHttpClient implements HttpClient { } return entry; } - + private HttpResponse getFatallyNoncompliantResponse(HttpRequest request, HttpContext context) { HttpResponse fatalErrorResponse = null; List fatalError = requestCompliance.requestIsFatallyNonCompliant(request); - + for (RequestProtocolError error : fatalError) { setResponseStatus(context, CacheResponseStatus.CACHE_MODULE_RESPONSE); fatalErrorResponse = requestCompliance.getErrorForRequest(error); @@ -507,7 +507,7 @@ public class CachingHttpClient implements HttpClient { log.trace("Cache hit [host: " + target + "; uri: " + rl.getUri() + "]"); } } - + private void recordCacheUpdate(HttpContext context) { cacheUpdates.getAndIncrement(); setResponseStatus(context, CacheResponseStatus.VALIDATED); @@ -599,7 +599,7 @@ public class CachingHttpClient implements HttpClient { } return false; } - + private String generateViaHeader(HttpMessage msg) { final VersionInfo vi = VersionInfo.loadVersionInfo("org.apache.http.client", getClass().getClassLoader()); final String release = (vi != null) ? vi.getRelease() : VersionInfo.UNAVAILABLE; @@ -690,7 +690,7 @@ public class CachingHttpClient implements HttpClient { } return false; } - + HttpResponse negotiateResponseFromVariants(HttpHost target, HttpRequest request, HttpContext context, Map variants) throws IOException { @@ -720,12 +720,12 @@ public class CachingHttpClient implements HttpClient { } HttpCacheEntry matchedEntry = matchingVariant.getEntry(); - + if (revalidationResponseIsTooOld(backendResponse, matchedEntry)) { return retryRequestUnconditionally(target, request, context, matchedEntry); } - + recordCacheUpdate(context); HttpCacheEntry responseEntry = getUpdatedVariantEntry(target, @@ -815,13 +815,13 @@ public class CachingHttpClient implements HttpClient { } return responseGenerator.generateResponse(updatedEntry); } - + if (staleIfErrorAppliesTo(statusCode) && !staleResponseNotAllowed(request, cacheEntry, getCurrentDate()) && validityPolicy.mayReturnStaleIfError(request, cacheEntry, responseDate)) { final HttpResponse cachedResponse = responseGenerator.generateResponse(cacheEntry); cachedResponse.addHeader(HeaderConstants.WARNING, "110 localhost \"Response is stale\""); - return cachedResponse; + return cachedResponse; } return handleBackendResponse(target, conditionalRequest, requestDate, responseDate, @@ -829,9 +829,9 @@ public class CachingHttpClient implements HttpClient { } private boolean staleIfErrorAppliesTo(int statusCode) { - return statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR - || statusCode == HttpStatus.SC_BAD_GATEWAY - || statusCode == HttpStatus.SC_SERVICE_UNAVAILABLE + return statusCode == HttpStatus.SC_INTERNAL_SERVER_ERROR + || statusCode == HttpStatus.SC_BAD_GATEWAY + || statusCode == HttpStatus.SC_SERVICE_UNAVAILABLE || statusCode == HttpStatus.SC_GATEWAY_TIMEOUT; } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java index d04e97356..312a0a72b 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ConditionalRequestBuilder.java @@ -46,7 +46,7 @@ import org.apache.http.impl.client.RequestWrapper; class ConditionalRequestBuilder { private static final Log log = LogFactory.getLog(ConditionalRequestBuilder.class); - + /** * When a {@link HttpCacheEntry} is stale but 'might' be used as a response * to an {@link HttpRequest} we will attempt to revalidate the entry with @@ -117,7 +117,7 @@ class ConditionalRequestBuilder { first = false; etags.append(etag); } - + wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, etags.toString()); return wrapperRequest; } @@ -134,7 +134,7 @@ class ConditionalRequestBuilder { * @return an unconditional validation request */ public HttpRequest buildUnconditionalRequest(HttpRequest request, - HttpCacheEntry entry) { + HttpCacheEntry entry) { RequestWrapper wrapped; try { wrapped = new RequestWrapper(request); diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/HttpCache.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/HttpCache.java index 71f494240..ad8d2e311 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/HttpCache.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/HttpCache.java @@ -56,9 +56,9 @@ interface HttpCache { */ void flushInvalidatedCacheEntriesFor(HttpHost host, HttpRequest request) throws IOException; - + /** Clear any entries that may be invalidated by the given response to - * a particular request. + * a particular request. * @param host * @param request * @param response @@ -122,7 +122,7 @@ interface HttpCache { * Update a specific {@link HttpCacheEntry} representing a cached variant * using a 304 {@link HttpResponse}. * @param target host for client request - * @param request actual request from upstream client + * @param request actual request from upstream client * @param stale current variant cache entry * @param originResponse 304 response received from origin * @param requestSent when the validating request was sent diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java index 94e251825..aa2a59bfc 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/RequestProtocolCompliance.java @@ -96,7 +96,7 @@ class RequestProtocolCompliance { */ public HttpRequest makeRequestCompliant(HttpRequest request) throws ClientProtocolException { - + if (requestMustNotHaveEntity(request)) { ((HttpEntityEnclosingRequest) request).setEntity(null); } @@ -116,7 +116,7 @@ class RequestProtocolCompliance { return request; } - + private void stripOtherFreshnessDirectivesWithNoCache(HttpRequest request) { List outElts = new ArrayList(); boolean shouldStrip = false; diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java index 43a3725a7..1804181e8 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseCachingPolicy.java @@ -198,13 +198,13 @@ class ResponseCachingPolicy { log.debug("Response was not cacheable."); return false; } - + String[] uncacheableRequestDirectives = { "no-store" }; if (hasCacheControlParameterFrom(request,uncacheableRequestDirectives)) { return false; } - if (request.getRequestLine().getUri().contains("?") && + if (request.getRequestLine().getUri().contains("?") && (!isExplicitlyCacheable(response) || from1_0Origin(response))) { log.debug("Response was not cacheable."); return false; @@ -213,7 +213,7 @@ class ResponseCachingPolicy { if (expiresHeaderLessOrEqualToDateHeaderAndNoCacheControl(response)) { return false; } - + if (sharedCache) { Header[] authNHeaders = request.getHeaders("Authorization"); if (authNHeaders != null && authNHeaders.length > 0) { @@ -249,7 +249,7 @@ class ResponseCachingPolicy { for(HeaderElement elt : via.getElements()) { String proto = elt.toString().split("\\s")[0]; if (proto.contains("/")) { - return proto.equals("HTTP/1.0"); + return proto.equals("HTTP/1.0"); } else { return proto.equals("1.0"); } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java index 3590aa8be..b038e9a78 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ResponseProtocolCompliance.java @@ -67,7 +67,7 @@ class ResponseProtocolCompliance { * * @param request The {@link HttpRequest} that generated an origin hit and response * @param response The {@link HttpResponse} from the origin server - * @throws IOException + * @throws IOException */ public void ensureProtocolCompliance(HttpRequest request, HttpResponse response) throws IOException { @@ -85,7 +85,7 @@ class ResponseProtocolCompliance { ensure200ForOPTIONSRequestWithNoBodyHasContentLengthZero(request, response); ensure206ContainsDateHeader(response); - + ensure304DoesNotContainExtraEntityHeaders(response); identityIsNotUsedInContentEncoding(response); @@ -167,9 +167,9 @@ class ResponseProtocolCompliance { private void ensurePartialContentIsNotSentToAClientThatDidNotRequestIt(HttpRequest request, HttpResponse response) throws IOException { if (request.getFirstHeader(HeaderConstants.RANGE) != null - || response.getStatusLine().getStatusCode() != HttpStatus.SC_PARTIAL_CONTENT) + || response.getStatusLine().getStatusCode() != HttpStatus.SC_PARTIAL_CONTENT) return; - + consumeBody(response); throw new ClientProtocolException(UNEXPECTED_PARTIAL_CONTENT); } @@ -213,8 +213,8 @@ class ResponseProtocolCompliance { if (response.getStatusLine().getStatusCode() != HttpStatus.SC_CONTINUE) { return; } - - HttpRequest originalRequest = requestWasWrapped(request) ? + + HttpRequest originalRequest = requestWasWrapped(request) ? ((RequestWrapper)request).getOriginal() : request; if (originalRequest instanceof HttpEntityEnclosingRequest) { if (((HttpEntityEnclosingRequest)originalRequest).expectContinue()) return; diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/Variant.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/Variant.java index 0eabe680b..77bcc042e 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/Variant.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/Variant.java @@ -44,11 +44,11 @@ class Variant { public String getVariantKey() { return variantKey; } - + public String getCacheKey() { return cacheKey; } - + public HttpCacheEntry getEntry() { return entry; } diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCacheStorage.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCacheStorage.java index 118b7bc08..bf188c9ac 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCacheStorage.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCacheStorage.java @@ -47,12 +47,12 @@ import org.apache.http.impl.client.cache.DefaultHttpCacheEntrySerializer; * In particular, this backend allows for spillover to disk, where the * cache can be effectively larger than memory, and cached responses are * paged into and out of memory from disk as needed.

- * + * *

N.B. Since the Ehcache is configured ahead of time with a * maximum number of cache entries, this effectively ignores the * {@link CacheConfig#setMaxCacheEntries(int) maximum cache entries} * specified by a provided {@link CacheConfig}.

- * + * *

Please refer to the * Ehcache documentation for details on how to configure the Ehcache * itself.

@@ -154,4 +154,4 @@ public class EhcacheHttpCacheStorage implements HttpCacheStorage { }while(numRetries <= maxUpdateRetries); throw new HttpCacheUpdateException("Failed to update"); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/package.html b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/package.html index 2cdcbca7e..9a2736092 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/package.html +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/package.html @@ -12,7 +12,7 @@ to you under the Apache License, Version 2.0 (the with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -31,7 +31,7 @@ information on the Apache Software Foundation, please see

This package contains a storage backend based on -Ehcache +Ehcache that can be plugged into a {@link org.apache.http.impl.client.cache.CachingHttpClient} and used for storing cache entries. diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/MemcachedHttpCacheStorage.java b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/MemcachedHttpCacheStorage.java index 573c79622..1e6e5e47c 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/MemcachedHttpCacheStorage.java +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/MemcachedHttpCacheStorage.java @@ -58,18 +58,18 @@ import org.apache.http.impl.client.cache.DefaultHttpCacheEntrySerializer; * peering of a sort * * Note that in a shared memcached pool setting you may wish to make use - * of the Ketama consistent hashing algorithm to reduce the number of + * of the Ketama consistent hashing algorithm to reduce the number of * cache misses that might result if one of the memcached cluster members * fails (see the * KetamaConnectionFactory). *

- * + * *

Please refer to the * memcached documentation and in particular to the documentation for * the spymemcached * documentation for details about how to set up and configure memcached * and the Java client used here, respectively.

- * + * * @since 4.1 */ public class MemcachedHttpCacheStorage implements HttpCacheStorage { @@ -166,4 +166,4 @@ public class MemcachedHttpCacheStorage implements HttpCacheStorage { } while(numRetries <= maxUpdateRetries); throw new HttpCacheUpdateException("Failed to update"); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/package.html b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/package.html index a5fd731ca..72c328533 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/package.html +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/memcached/package.html @@ -12,7 +12,7 @@ to you under the Apache License, Version 2.0 (the with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -31,7 +31,7 @@ information on the Apache Software Foundation, please see

This package contains a storage backend based on -memcached +memcached that can be plugged into a {@link org.apache.http.impl.client.cache.CachingHttpClient} and used for storing cache entries. diff --git a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/package.html b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/package.html index 5847fa776..4c208e7a9 100644 --- a/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/package.html +++ b/httpclient-cache/src/main/java/org/apache/http/impl/client/cache/package.html @@ -12,7 +12,7 @@ to you under the Apache License, Version 2.0 (the with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 - + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY diff --git a/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java b/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java index 928067c59..1d6dce344 100644 --- a/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java +++ b/httpclient-cache/src/test/java/org/apache/http/client/cache/TestHttpCacheEntry.java @@ -199,21 +199,21 @@ public class TestHttpCacheEntry { entry = new HttpCacheEntry(new Date(), new Date(), statusLine, new Header[]{}, mockResource); assertSame(statusLine.getProtocolVersion(), - entry.getProtocolVersion()); + entry.getProtocolVersion()); } @Test public void reasonPhraseComesFromOriginalStatusLine() { entry = new HttpCacheEntry(new Date(), new Date(), statusLine, new Header[]{}, mockResource); - assertSame(statusLine.getReasonPhrase(), entry.getReasonPhrase()); + assertSame(statusLine.getReasonPhrase(), entry.getReasonPhrase()); } @Test public void statusCodeComesFromOriginalStatusLine() { entry = new HttpCacheEntry(new Date(), new Date(), statusLine, new Header[]{}, mockResource); - assertEquals(statusLine.getStatusCode(), entry.getStatusCode()); + assertEquals(statusLine.getStatusCode(), entry.getStatusCode()); } @Test @@ -221,7 +221,7 @@ public class TestHttpCacheEntry { final Date requestDate = new Date(); entry = new HttpCacheEntry(requestDate, new Date(), statusLine, new Header[]{}, mockResource); - assertSame(requestDate, entry.getRequestDate()); + assertSame(requestDate, entry.getRequestDate()); } @Test @@ -229,14 +229,14 @@ public class TestHttpCacheEntry { final Date responseDate = new Date(); entry = new HttpCacheEntry(new Date(), responseDate, statusLine, new Header[]{}, mockResource); - assertSame(responseDate, entry.getResponseDate()); + assertSame(responseDate, entry.getResponseDate()); } @Test public void canGetOriginalResource() { entry = new HttpCacheEntry(new Date(), new Date(), statusLine, new Header[]{}, mockResource); - assertSame(mockResource, entry.getResource()); + assertSame(mockResource, entry.getResource()); } @Test @@ -253,7 +253,7 @@ public class TestHttpCacheEntry { assertEquals(headers[i], result[i]); } } - + @Test public void canConstructWithoutVariants() { new HttpCacheEntry(new Date(), new Date(), statusLine, @@ -266,7 +266,7 @@ public class TestHttpCacheEntry { new Header[]{}, mockResource, new HashMap()); } - + @Test public void canRetrieveOriginalVariantMap() { Map variantMap = new HashMap(); @@ -280,7 +280,7 @@ public class TestHttpCacheEntry { assertEquals("B", result.get("A")); assertEquals("D", result.get("C")); } - + @Test public void retrievedVariantMapIsNotModifiable() { Map variantMap = new HashMap(); @@ -301,7 +301,7 @@ public class TestHttpCacheEntry { } catch (UnsupportedOperationException expected) { } } - + @Test public void canConvertToString() { entry = new HttpCacheEntry(new Date(), new Date(), statusLine, diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java index cab7158d7..df5258c68 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/AbstractProtocolTest.java @@ -113,7 +113,7 @@ public abstract class AbstractProtocolTest { mockCache.flushInvalidatedCacheEntriesFor(EasyMock.isA(HttpHost.class), EasyMock.isA(HttpRequest.class)); EasyMock.expectLastCall().anyTimes(); - + mockCache.flushInvalidatedCacheEntriesFor(EasyMock.isA(HttpHost.class), EasyMock.isA(HttpRequest.class), EasyMock.isA(HttpResponse.class)); EasyMock.expectLastCall().anyTimes(); } @@ -127,4 +127,4 @@ public abstract class AbstractProtocolTest { super(); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/Counter.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/Counter.java index ad9b22b52..78e403e12 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/Counter.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/Counter.java @@ -38,4 +38,4 @@ public class Counter { return count; } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/HttpTestUtils.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/HttpTestUtils.java index 34d4ce697..8e154655b 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/HttpTestUtils.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/HttpTestUtils.java @@ -76,11 +76,11 @@ public class HttpTestUtils { "If-None-Match", "If-Range", "If-Unmodified-Since", "Last-Modified", "Location", "Max-Forwards", "Proxy-Authorization", "Range", "Referer", "Retry-After", "Server", "User-Agent", "Vary" }; - + /* * "Entity-header fields define metainformation about the entity-body or, * if no body is present, about the resource identified by the request." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec7.html#sec7.1 */ public static final String[] ENTITY_HEADERS = { "Allow", "Content-Encoding", @@ -341,4 +341,4 @@ public class HttpTestUtils { return new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_INTERNAL_SERVER_ERROR, "Internal Server Error"); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/OKStatus.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/OKStatus.java index c62e8dad1..839045052 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/OKStatus.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/OKStatus.java @@ -38,4 +38,4 @@ public class OKStatus extends BasicStatusLine { super(HttpVersion.HTTP_1_1, HttpStatus.SC_OK, "OK"); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/RequestEquivalent.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/RequestEquivalent.java index 4e2110292..4bfb65fa5 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/RequestEquivalent.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/RequestEquivalent.java @@ -50,4 +50,4 @@ public class RequestEquivalent implements IArgumentMatcher { buf.append(")"); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java index 12ffa6d02..4821f2fd3 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidationRequest.java @@ -46,7 +46,7 @@ public class TestAsynchronousValidationRequest { private HttpRequest request; private HttpContext mockContext; private HttpCacheEntry mockCacheEntry; - + @Before public void setUp() { mockParent = EasyMock.createMock(AsynchronousValidator.class); @@ -56,68 +56,68 @@ public class TestAsynchronousValidationRequest { mockContext = EasyMock.createMock(HttpContext.class); mockCacheEntry = EasyMock.createMock(HttpCacheEntry.class); } - + @Test public void testRunCallsCachingClientAndRemovesIdentifier() throws ProtocolException, IOException { String identifier = "foo"; - + AsynchronousValidationRequest asynchRequest = new AsynchronousValidationRequest( mockParent, mockClient, target, request, mockContext, mockCacheEntry, identifier); - + // response not used EasyMock.expect(mockClient.revalidateCacheEntry(target, request, mockContext, mockCacheEntry)).andReturn(null); mockParent.markComplete(identifier); - + replayMocks(); asynchRequest.run(); verifyMocks(); } - + @Test public void testRunGracefullyHandlesProtocolException() throws IOException, ProtocolException { String identifier = "foo"; - + AsynchronousValidationRequest impl = new AsynchronousValidationRequest( mockParent, mockClient, target, request, mockContext, mockCacheEntry, identifier); - + // response not used EasyMock.expect( mockClient.revalidateCacheEntry(target, request, mockContext, mockCacheEntry)).andThrow(new ProtocolException()); mockParent.markComplete(identifier); - + replayMocks(); impl.run(); verifyMocks(); } - + @Test public void testRunGracefullyHandlesIOException() throws IOException, ProtocolException { String identifier = "foo"; - + AsynchronousValidationRequest impl = new AsynchronousValidationRequest( mockParent, mockClient, target, request, mockContext, mockCacheEntry, identifier); - + // response not used EasyMock.expect( mockClient.revalidateCacheEntry(target, request, mockContext, mockCacheEntry)).andThrow(new IOException()); mockParent.markComplete(identifier); - + replayMocks(); impl.run(); verifyMocks(); } - + public void replayMocks() { EasyMock.replay(mockClient); EasyMock.replay(mockContext); EasyMock.replay(mockCacheEntry); } - + public void verifyMocks() { EasyMock.verify(mockClient); EasyMock.verify(mockContext); diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java index db2364cdf..37cb75b4b 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestAsynchronousValidator.java @@ -48,17 +48,17 @@ import org.junit.Before; import org.junit.Test; public class TestAsynchronousValidator { - + private AsynchronousValidator impl; - + private CachingHttpClient mockClient; private HttpHost target; private HttpRequest request; private HttpContext mockContext; private HttpCacheEntry mockCacheEntry; - + private ExecutorService mockExecutor; - + @Before public void setUp() { mockClient = EasyMock.createMock(CachingHttpClient.class); @@ -66,138 +66,138 @@ public class TestAsynchronousValidator { request = new HttpGet("/"); mockContext = EasyMock.createMock(HttpContext.class); mockCacheEntry = EasyMock.createMock(HttpCacheEntry.class); - + mockExecutor = EasyMock.createMock(ExecutorService.class); - + } - + @Test public void testRevalidateCacheEntrySchedulesExecutionAndPopulatesIdentifier() { impl = new AsynchronousValidator(mockClient, mockExecutor); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); mockExecutor.execute(EasyMock.isA(AsynchronousValidationRequest.class)); - + replayMocks(); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); verifyMocks(); - + Assert.assertEquals(1, impl.getScheduledIdentifiers().size()); } - + @Test public void testMarkCompleteRemovesIdentifier() { impl = new AsynchronousValidator(mockClient, mockExecutor); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); Capture cap = new Capture(); mockExecutor.execute(EasyMock.capture(cap)); - + replayMocks(); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); verifyMocks(); - + Assert.assertEquals(1, impl.getScheduledIdentifiers().size()); - + impl.markComplete(cap.getValue().getIdentifier()); - + Assert.assertEquals(0, impl.getScheduledIdentifiers().size()); } - + @Test public void testRevalidateCacheEntryDoesNotPopulateIdentifierOnRejectedExecutionException() { impl = new AsynchronousValidator(mockClient, mockExecutor); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); mockExecutor.execute(EasyMock.isA(AsynchronousValidationRequest.class)); EasyMock.expectLastCall().andThrow(new RejectedExecutionException()); - + replayMocks(); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); verifyMocks(); - + Assert.assertEquals(0, impl.getScheduledIdentifiers().size()); } - + @Test public void testRevalidateCacheEntryProperlyCollapsesRequest() { impl = new AsynchronousValidator(mockClient, mockExecutor); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); mockExecutor.execute(EasyMock.isA(AsynchronousValidationRequest.class)); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); - + replayMocks(); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); verifyMocks(); - + Assert.assertEquals(1, impl.getScheduledIdentifiers().size()); } - + @Test public void testVariantsBothRevalidated() { impl = new AsynchronousValidator(mockClient, mockExecutor); - + HttpRequest req1 = new HttpGet("/"); req1.addHeader(new BasicHeader("Accept-Encoding", "identity")); - + HttpRequest req2 = new HttpGet("/"); req2.addHeader(new BasicHeader("Accept-Encoding", "gzip")); - + Header[] variantHeaders = new Header[] { new BasicHeader(HeaderConstants.VARY, "Accept-Encoding") }; - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(true).times(2); EasyMock.expect(mockCacheEntry.getHeaders(HeaderConstants.VARY)).andReturn(variantHeaders).times(2); mockExecutor.execute(EasyMock.isA(AsynchronousValidationRequest.class)); EasyMock.expectLastCall().times(2); - + replayMocks(); impl.revalidateCacheEntry(target, req1, mockContext, mockCacheEntry); impl.revalidateCacheEntry(target, req2, mockContext, mockCacheEntry); verifyMocks(); - + Assert.assertEquals(2, impl.getScheduledIdentifiers().size()); - + } - + @Test public void testRevalidateCacheEntryEndToEnd() throws ProtocolException, IOException { CacheConfig config = new CacheConfig(); config.setAsynchronousWorkersMax(1); config.setAsynchronousWorkersCore(1); impl = new AsynchronousValidator(mockClient, config); - + EasyMock.expect(mockCacheEntry.hasVariants()).andReturn(false); EasyMock.expect(mockClient.revalidateCacheEntry(target, request, mockContext, mockCacheEntry)).andReturn(null); - + replayMocks(); impl.revalidateCacheEntry(target, request, mockContext, mockCacheEntry); - + try { // shut down backend executor and make sure all finishes properly, 1 second should be sufficient ExecutorService implExecutor = impl.getExecutor(); implExecutor.shutdown(); implExecutor.awaitTermination(1, TimeUnit.SECONDS); } catch (InterruptedException ie) { - + } finally { verifyMocks(); - + Assert.assertEquals(0, impl.getScheduledIdentifiers().size()); } } - + public void replayMocks() { EasyMock.replay(mockExecutor); EasyMock.replay(mockClient); EasyMock.replay(mockContext); EasyMock.replay(mockCacheEntry); } - + public void verifyMocks() { EasyMock.verify(mockExecutor); EasyMock.verify(mockClient); diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java index 3743f08c4..5e5b7fa92 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheEntryUpdater.java @@ -94,7 +94,7 @@ public class TestCacheEntryUpdater { HttpCacheEntry updatedEntry = impl.updateCacheEntry(null, entry, new Date(), new Date(), response); - + Header[] updatedHeaders = updatedEntry.getAllHeaders(); assertEquals(2, updatedHeaders.length); headersContain(updatedHeaders, "Date", formatDate(responseDate)); @@ -159,7 +159,7 @@ public class TestCacheEntryUpdater { new BasicHeader("Date", formatDate(oneSecondAgo)), new BasicHeader("ETag", "\"new-etag\"") }; - entry = HttpTestUtils.makeCacheEntry(twoSecondsAgo, now, headers); + entry = HttpTestUtils.makeCacheEntry(twoSecondsAgo, now, headers); response.setHeader("Date", formatDate(tenSecondsAgo)); response.setHeader("ETag", "\"old-etag\""); HttpCacheEntry result = impl.updateCacheEntry("A", entry, new Date(), @@ -179,7 +179,7 @@ public class TestCacheEntryUpdater { assertEquals(twoSecondsAgo, updated.getRequestDate()); assertEquals(oneSecondAgo, updated.getResponseDate()); } - + @Test public void entry1xxWarningsAreRemovedOnUpdate() throws Exception { Header[] headers = { @@ -195,7 +195,7 @@ public class TestCacheEntryUpdater { assertEquals(0, updated.getHeaders("Warning").length); } - + @Test public void entryWithMalformedDateIsStillUpdated() throws Exception { Header[] headers = { @@ -225,7 +225,7 @@ public class TestCacheEntryUpdater { assertEquals("\"new\"", updated.getFirstHeader("ETag").getValue()); } - + @Test public void cannotUpdateFromANon304OriginResponse() throws Exception { entry = HttpTestUtils.makeCacheEntry(); diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java index 9d2cc2185..a86f13f9d 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheInvalidator.java @@ -71,7 +71,7 @@ public class TestCacheInvalidator { public void setUp() { now = new Date(); tenSecondsAgo = new Date(now.getTime() - 10 * 1000L); - + host = new HttpHost("foo.example.com"); mockStorage = createMock(HttpCacheStorage.class); cacheKeyGenerator = new CacheKeyGenerator(); @@ -265,7 +265,7 @@ public class TestCacheInvalidator { impl.flushInvalidatedCacheEntries(host, request); verifyMocks(); } - + @Test public void doesNotFlushForResponsesWithoutContentLocation() throws Exception { @@ -273,7 +273,7 @@ public class TestCacheInvalidator { impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void flushesEntryIfFresherAndSpecifiedByContentLocation() throws Exception { @@ -281,20 +281,20 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); mockStorage.removeEntry(theURI); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntryForUnsuccessfulResponse() throws Exception { @@ -303,14 +303,14 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -323,15 +323,15 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String cacheKey = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", "http://foo.example.com/bar"); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(cacheKey)).andReturn(entry).anyTimes(); mockStorage.removeEntry(cacheKey); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -344,15 +344,15 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String cacheKey = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", "/bar"); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(cacheKey)).andReturn(entry).anyTimes(); mockStorage.removeEntry(cacheKey); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -365,21 +365,21 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String cacheKey = "http://baz.example.com:80/bar"; response.setHeader("Content-Location", cacheKey); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(cacheKey)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - - + + @Test public void doesNotFlushEntrySpecifiedByContentLocationIfEtagsMatch() throws Exception { @@ -387,14 +387,14 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"same-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -407,19 +407,19 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(now)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntryIfNotInCache() throws Exception { @@ -427,14 +427,14 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + expect(mockStorage.getEntry(theURI)).andReturn(null).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntrySpecifiedByContentLocationIfResponseHasNoEtag() throws Exception { @@ -442,19 +442,19 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntrySpecifiedByContentLocationIfEntryHasNoEtag() throws Exception { @@ -462,13 +462,13 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("Date", formatDate(tenSecondsAgo)), }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -481,19 +481,19 @@ public class TestCacheInvalidator { response.removeHeaders("Date"); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("ETag", "\"old-etag\""), new BasicHeader("Date", formatDate(tenSecondsAgo)), }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntrySpecifiedByContentLocationIfEntryHasNoDate() throws Exception { @@ -501,13 +501,13 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("ETag", "\"old-etag\"") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); @@ -520,19 +520,19 @@ public class TestCacheInvalidator { response.setHeader("Date", "blarg"); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - - HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { + + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("ETag", "\"old-etag\""), new BasicHeader("Date", formatDate(tenSecondsAgo)) }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + @Test public void doesNotFlushEntrySpecifiedByContentLocationIfEntryHasMalformedDate() throws Exception { @@ -540,20 +540,20 @@ public class TestCacheInvalidator { response.setHeader("Date", formatDate(now)); String theURI = "http://foo.example.com:80/bar"; response.setHeader("Content-Location", theURI); - - HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { + + HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(new Header[] { new BasicHeader("ETag", "\"old-etag\""), new BasicHeader("Date", "foo") }); - + expect(mockStorage.getEntry(theURI)).andReturn(entry).anyTimes(); - + replayMocks(); impl.flushInvalidatedCacheEntries(host, request, response); verifyMocks(); } - + // Expectations private void cacheEntryHasVariantMap(Map variantMap) { expect(mockEntry.getVariantMap()).andReturn(variantMap); @@ -572,4 +572,4 @@ public class TestCacheInvalidator { mockStorage.removeEntry(theUri); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheValidityPolicy.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheValidityPolicy.java index 2a2f2d70c..52d4e00a0 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheValidityPolicy.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCacheValidityPolicy.java @@ -331,7 +331,7 @@ public class TestCacheValidityPolicy { HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(headers); assertFalse(impl.isRevalidatable(entry)); } - + @Test public void testMissingContentLengthDoesntInvalidateEntry() { final int contentLength = 128; @@ -339,7 +339,7 @@ public class TestCacheValidityPolicy { HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(headers, HttpTestUtils.getRandomBytes(contentLength)); assertTrue(impl.contentLengthHeaderMatchesActualLength(entry)); } - + @Test public void testCorrectContentLengthDoesntInvalidateEntry() { final int contentLength = 128; @@ -347,7 +347,7 @@ public class TestCacheValidityPolicy { HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(headers, HttpTestUtils.getRandomBytes(contentLength)); assertTrue(impl.contentLengthHeaderMatchesActualLength(entry)); } - + @Test public void testWrongContentLengthInvalidatesEntry() { final int contentLength = 128; @@ -436,7 +436,7 @@ public class TestCacheValidityPolicy { HttpRequest req = new BasicHttpRequest("GET","/",HttpVersion.HTTP_1_1); assertTrue(impl.mayReturnStaleIfError(req, entry, now)); } - + @Test public void testMayReturnStaleIfErrorInRequestIsTrueWithinStaleness(){ Header[] headers = new Header[] { @@ -475,15 +475,15 @@ public class TestCacheValidityPolicy { @Test public void testMayReturnStaleWhileRevalidatingIsFalseWhenDirectiveIsAbsent() { Date now = new Date(); - + Header[] headers = new Header[] { new BasicHeader("Cache-control", "public") }; HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(headers); - + CacheValidityPolicy impl = new CacheValidityPolicy(); - + assertFalse(impl.mayReturnStaleWhileRevalidating(entry, now)); } - + @Test public void testMayReturnStaleWhileRevalidatingIsTrueWhenWithinStaleness() { Date now = new Date(); @@ -493,12 +493,12 @@ public class TestCacheValidityPolicy { new BasicHeader("Cache-Control", "max-age=5, stale-while-revalidate=15") }; HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(now, now, headers); - + CacheValidityPolicy impl = new CacheValidityPolicy(); - + assertTrue(impl.mayReturnStaleWhileRevalidating(entry, now)); } - + @Test public void testMayReturnStaleWhileRevalidatingIsFalseWhenPastStaleness() { Date now = new Date(); @@ -508,12 +508,12 @@ public class TestCacheValidityPolicy { new BasicHeader("Cache-Control", "max-age=5, stale-while-revalidate=15") }; HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(now, now, headers); - + CacheValidityPolicy impl = new CacheValidityPolicy(); - + assertFalse(impl.mayReturnStaleWhileRevalidating(entry, now)); } - + @Test public void testMayReturnStaleWhileRevalidatingIsFalseWhenDirectiveEmpty() { Date now = new Date(); @@ -523,9 +523,9 @@ public class TestCacheValidityPolicy { new BasicHeader("Cache-Control", "max-age=5, stale-while-revalidate=") }; HttpCacheEntry entry = HttpTestUtils.makeCacheEntry(now, now, headers); - + CacheValidityPolicy impl = new CacheValidityPolicy(); - + assertFalse(impl.mayReturnStaleWhileRevalidating(entry, now)); } } diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java index 782990bcb..b2c7bb086 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachedResponseSuitabilityChecker.java @@ -260,4 +260,4 @@ public class TestCachedResponseSuitabilityChecker { Assert.assertTrue(impl.canCachedResponseBeUsed(host, request, entry, now)); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java index 787a9fa7f..1dd173164 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestCachingHttpClient.java @@ -203,16 +203,16 @@ public class TestCachingHttpClient { @Test public void testCacheableResponsesGoIntoCache() throws Exception { impl = new CachingHttpClient(mockBackend); - + HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","max-age=3600"); - + expect(mockBackend.execute(isA(HttpHost.class), isA(HttpRequest.class), (HttpContext)isNull())).andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); @@ -224,7 +224,7 @@ public class TestCachingHttpClient { impl = new CachingHttpClient(mockBackend); Date now = new Date(); Date fiveSecondsAgo = new Date(now.getTime() - 5 * 1000L); - + HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", DateUtils.formatDate(now)); @@ -233,7 +233,7 @@ public class TestCachingHttpClient { expect(mockBackend.execute(isA(HttpHost.class), isA(HttpRequest.class), (HttpContext)isNull())).andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control","no-cache"); HttpResponse resp2 = HttpTestUtils.make200Response(); @@ -260,7 +260,7 @@ public class TestCachingHttpClient { impl = new CachingHttpClient(mockBackend); Date now = new Date(); Date fiveSecondsAgo = new Date(now.getTime() - 5 * 1000L); - + HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", DateUtils.formatDate(fiveSecondsAgo)); @@ -269,7 +269,7 @@ public class TestCachingHttpClient { expect(mockBackend.execute(isA(HttpHost.class), isA(HttpRequest.class), (HttpContext)isNull())).andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control","max-age=0"); HttpResponse resp2 = HttpTestUtils.make200Response(); @@ -486,7 +486,7 @@ public class TestCachingHttpClient { impl = new CachingHttpClient(mockBackend, new BasicHttpCache(new HeapResourceFactory(), mockStorage, config), config); - + HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","no-cache"); @@ -1012,8 +1012,8 @@ public class TestCachingHttpClient { resp1.setHeader("Last-Modified", DateUtils.formatDate(tenSecondsAgo)); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); replayMocks(); @@ -1048,8 +1048,8 @@ public class TestCachingHttpClient { HttpResponse resp2 = HttpTestUtils.make200Response(); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( mockBackend.execute(isA(HttpHost.class), @@ -1088,8 +1088,8 @@ public class TestCachingHttpClient { .formatDate(tenSecondsAfter)); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1).times(2); replayMocks(); @@ -1116,8 +1116,8 @@ public class TestCachingHttpClient { resp1.setHeader("Cache-Control", "public, max-age=3600"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); replayMocks(); @@ -1147,12 +1147,12 @@ public class TestCachingHttpClient { HttpResponse resp2 = HttpTestUtils.make200Response(); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); replayMocks(); @@ -1185,8 +1185,8 @@ public class TestCachingHttpClient { req2.addHeader("If-Modified-Since", DateUtils.formatDate(now)); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); replayMocks(); @@ -1217,12 +1217,12 @@ public class TestCachingHttpClient { resp1.setHeader("Last-Modified", DateUtils.formatDate(tenSecondsAgo)); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); replayMocks(); @@ -1432,13 +1432,13 @@ public class TestCachingHttpClient { resp2.setHeader("Date", DateUtils.formatDate(now)); resp2.setHeader("Cache-Control", "public, max-age=5"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); replayMocks(); impl.execute(host, req1); @@ -1476,13 +1476,13 @@ public class TestCachingHttpClient { resp2.setHeader("Date", DateUtils.formatDate(tenSecondsAgo)); resp2.setHeader("Cache-Control", "public, max-age=5"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); replayMocks(); impl.execute(host, req1); @@ -1520,13 +1520,13 @@ public class TestCachingHttpClient { resp1.setHeader("Last-Modified", DateUtils.formatDate(tenSecondsAgo)); resp2.setHeader("Cache-Control", "public, max-age=5"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); replayMocks(); impl.execute(host, req1); @@ -1565,13 +1565,13 @@ public class TestCachingHttpClient { resp1.setHeader("Last-Modified", DateUtils.formatDate(now)); resp2.setHeader("Cache-Control", "public, max-age=5"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); replayMocks(); impl.execute(host, req1); @@ -1628,18 +1628,18 @@ public class TestCachingHttpClient { resp3.setHeader("Cache-Control", "public, max-age=3600"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp3); @@ -1702,18 +1702,18 @@ public class TestCachingHttpClient { resp4.setHeader("Cache-Control", "public, max-age=3600"); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp1); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp2); expect( - mockBackend.execute(isA(HttpHost.class), - isA(HttpRequest.class), (HttpContext) + mockBackend.execute(isA(HttpHost.class), + isA(HttpRequest.class), (HttpContext) isNull())).andReturn(resp4); replayMocks(); @@ -1744,7 +1744,7 @@ public class TestCachingHttpClient { mockCache.flushInvalidatedCacheEntriesFor(host, request); expectLastCall().andThrow(new IOException()).anyTimes(); mockCache.flushInvalidatedCacheEntriesFor(isA(HttpHost.class), isA(HttpRequest.class), isA(HttpResponse.class)); - expectLastCall().anyTimes(); + expectLastCall().anyTimes(); expect(mockCache.getCacheEntry(same(host), isA(HttpRequest.class))) .andThrow(new IOException()).anyTimes(); @@ -1853,7 +1853,7 @@ public class TestCachingHttpClient { expect(mockValidityPolicy.isRevalidatable( (HttpCacheEntry)anyObject())).andReturn(b); } - + private void cacheEntryMustRevalidate(boolean b) { expect(mockValidityPolicy.mustRevalidate(mockCacheEntry)) .andReturn(b); @@ -1863,7 +1863,7 @@ public class TestCachingHttpClient { expect(mockValidityPolicy.proxyRevalidate(mockCacheEntry)) .andReturn(b); } - + private void mayReturnStaleWhileRevalidating(boolean b) { expect(mockValidityPolicy.mayReturnStaleWhileRevalidating( (HttpCacheEntry)anyObject(), (Date)anyObject())).andReturn(b); diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java index 6536d1db8..9d0ca152f 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestHttpCacheEntrySerializers.java @@ -54,12 +54,12 @@ public class TestHttpCacheEntrySerializers { private static final Charset UTF8 = Charset.forName("UTF-8"); private HttpCacheEntrySerializer impl; - + @Before public void setUp() { impl = new DefaultHttpCacheEntrySerializer(); } - + @Test public void canSerializeEntriesWithVariantMaps() throws Exception { readWriteVerify(makeCacheEntryWithVariantMap()); @@ -96,7 +96,7 @@ public class TestHttpCacheEntrySerializers { return cacheEntry; } - + private boolean areEqual(HttpCacheEntry one, HttpCacheEntry two) throws IOException { // dates are only stored with second precision, so scrub milliseconds if (!((one.getRequestDate().getTime() / 1000) == (two.getRequestDate() diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolDeviations.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolDeviations.java index 8677d8478..83be6b618 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolDeviations.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolDeviations.java @@ -363,4 +363,4 @@ public class TestProtocolDeviations { Assert.assertSame(originResponse, result); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java index 62212f48d..17003801b 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRecommendations.java @@ -66,7 +66,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { private Date now; private Date tenSecondsAgo; private Date twoMinutesAgo; - + @Override @Before public void setUp() { @@ -76,7 +76,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { twoMinutesAgo = new Date(now.getTime() - 2 * 60 * 1000L); tenSecondsFromNow = new Date(now.getTime() + 10 * 1000L); } - + /* "identity: The default (identity) encoding; the use of no * transformation whatsoever. This content-coding is used only in the * Accept-Encoding header, and SHOULD NOT be used in the @@ -107,7 +107,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { * "304 Not Modified. ... If the conditional GET used a strong cache * validator (see section 13.3.3), the response SHOULD NOT include * other entity-headers." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5 */ private void cacheGenerated304ForValidatorShouldNotContainEntityHeader( @@ -119,29 +119,29 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Cache-Control","max-age=3600"); resp1.setHeader(validatorHeader, validator); resp1.setHeader(headerName, headerValue); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader(conditionalHeader, validator); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + if (HttpStatus.SC_NOT_MODIFIED == result.getStatusLine().getStatusCode()) { assertNull(result.getFirstHeader(headerName)); } } - + private void cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( String headerName, String headerValue) throws Exception, IOException { cacheGenerated304ForValidatorShouldNotContainEntityHeader(headerName, headerValue, "ETag", "\"etag\"", "If-None-Match"); } - + private void cacheGenerated304ForStrongDateValidatorShouldNotContainEntityHeader( String headerName, String headerValue) throws Exception, IOException { @@ -149,28 +149,28 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { headerValue, "Last-Modified", formatDate(twoMinutesAgo), "If-Modified-Since"); } - + @Test public void cacheGenerated304ForStrongEtagValidatorShouldNotContainAllow() throws Exception { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Allow", "GET,HEAD"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainAllow() throws Exception { cacheGenerated304ForStrongDateValidatorShouldNotContainEntityHeader( "Allow", "GET,HEAD"); } - + @Test public void cacheGenerated304ForStrongEtagValidatorShouldNotContainContentEncoding() throws Exception { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Content-Encoding", "gzip"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentEncoding() throws Exception { @@ -184,7 +184,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Content-Language", "en"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentLanguage() throws Exception { @@ -198,21 +198,21 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Content-Length", "128"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentLength() throws Exception { cacheGenerated304ForStrongDateValidatorShouldNotContainEntityHeader( "Content-Length", "128"); } - + @Test public void cacheGenerated304ForStrongValidatorShouldNotContainContentMD5() throws Exception { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Content-MD5", "Q2hlY2sgSW50ZWdyaXR5IQ=="); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentMD5() throws Exception { @@ -229,9 +229,9 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Cache-Control","max-age=3600"); resp1.setHeader(validatorHeader, validator); resp1.setHeader("Content-Range", "bytes 0-127/256"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("If-Range", validator); req2.setHeader("Range","bytes=0-127"); @@ -240,67 +240,67 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse resp2 = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_NOT_MODIFIED, "Not Modified"); resp2.setHeader("Date", formatDate(now)); resp2.setHeader(validatorHeader, validator); - + // cache module does not currently deal with byte ranges, but we want // this test to work even if it does some day Capture cap = new Capture(); expect(mockBackend.execute(same(host), capture(cap), (HttpContext)isNull())) .andReturn(resp2).times(0,1); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + if (!cap.hasCaptured() && HttpStatus.SC_NOT_MODIFIED == result.getStatusLine().getStatusCode()) { // cache generated a 304 assertNull(result.getFirstHeader("Content-Range")); } } - + @Test public void cacheGenerated304ForStrongEtagValidatorShouldNotContainContentRange() throws Exception { cacheGenerated304ForStrongValidatorShouldNotContainContentRange( "ETag", "\"etag\"", "If-None-Match"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentRange() throws Exception { cacheGenerated304ForStrongValidatorShouldNotContainContentRange( "Last-Modified", formatDate(twoMinutesAgo), "If-Modified-Since"); } - + @Test public void cacheGenerated304ForStrongEtagValidatorShouldNotContainContentType() throws Exception { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Content-Type", "text/html"); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainContentType() throws Exception { cacheGenerated304ForStrongDateValidatorShouldNotContainEntityHeader( "Content-Type", "text/html"); } - + @Test public void cacheGenerated304ForStrongEtagValidatorShouldNotContainLastModified() throws Exception { cacheGenerated304ForStrongETagValidatorShouldNotContainEntityHeader( "Last-Modified", formatDate(tenSecondsAgo)); } - + @Test public void cacheGenerated304ForStrongDateValidatorShouldNotContainLastModified() throws Exception { cacheGenerated304ForStrongDateValidatorShouldNotContainEntityHeader( "Last-Modified", formatDate(twoMinutesAgo)); } - + private void shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( String entityHeader, String entityHeaderValue) throws Exception, IOException { @@ -311,23 +311,23 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp.setHeader("Date", formatDate(now)); resp.setHeader("Etag", "\"etag\""); resp.setHeader(entityHeader, entityHeaderValue); - + backendExpectsAnyRequest().andReturn(resp); - + replayMocks(); HttpResponse result = impl.execute(host, req); verifyMocks(); - + assertNull(result.getFirstHeader(entityHeader)); } - + @Test public void shouldStripAllowFromOrigin304ResponseToStrongValidation() throws Exception { shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( "Allow", "GET,HEAD"); } - + @Test public void shouldStripContentEncodingFromOrigin304ResponseToStrongValidation() throws Exception { @@ -341,14 +341,14 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( "Content-Language", "en"); } - + @Test public void shouldStripContentLengthFromOrigin304ResponseToStrongValidation() throws Exception { shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( "Content-Length", "128"); } - + @Test public void shouldStripContentMD5FromOrigin304ResponseToStrongValidation() throws Exception { @@ -362,35 +362,35 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( "Content-Type", "text/html;charset=utf-8"); } - + @Test public void shouldStripContentRangeFromOrigin304ResponseToStringValidation() throws Exception { HttpRequest req = HttpTestUtils.makeDefaultRequest(); req.setHeader("If-Range","\"etag\""); req.setHeader("Range","bytes=0-127"); - + HttpResponse resp = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_NOT_MODIFIED, "Not Modified"); resp.setHeader("Date", formatDate(now)); resp.setHeader("ETag", "\"etag\""); resp.setHeader("Content-Range", "bytes 0-127/256"); - + backendExpectsAnyRequest().andReturn(resp); - + replayMocks(); HttpResponse result = impl.execute(host, req); verifyMocks(); - + assertNull(result.getFirstHeader("Content-Range")); } - + @Test public void shouldStripLastModifiedFromOrigin304ResponseToStrongValidation() throws Exception { shouldStripEntityHeaderFromOrigin304ResponseToStrongValidation( "Last-Modified", formatDate(twoMinutesAgo)); } - + /* * "For this reason, a cache SHOULD NOT return a stale response if the * client explicitly requests a first-hand or fresh one, unless it is @@ -616,7 +616,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { assertEquals(warning, result.getFirstHeader("Warning").getValue()); } - + /* * "A transparent proxy SHOULD NOT modify an end-to-end header unless * the definition of that header requires or specifically allows that." @@ -1175,7 +1175,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { } assertTrue(foundEtag1 && foundEtag2); } - + /* "If the entity-tag of the new response matches that of an existing * entry, the new response SHOULD be used to update the header fields * of the existing entry, and the result MUST be returned to the @@ -1237,7 +1237,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { assertEquals(formatDate(now), result1.getFirstHeader("Date").getValue()); assertEquals(formatDate(now), result2.getFirstHeader("Date").getValue()); } - + @Test public void testResponseToExistingVariantsIsCachedForFutureResponses() throws Exception { @@ -1279,7 +1279,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { * for the associated entity, its entity-tag SHOULD NOT be included in * the If-None-Match header field unless the request is for a range * that would be fully satisfied by that entry." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6 */ @Test @@ -1291,9 +1291,9 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Cache-Control", "max-age=3600"); resp1.setHeader("Vary", "User-Agent"); resp1.setHeader("ETag", "\"etag1\""); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("User-Agent", "agent2"); req2.setHeader("Range", "bytes=0-49"); @@ -1306,27 +1306,27 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp2.setHeader("ETag", "\"etag2\""); resp2.setHeader("Cache-Control","max-age=3600"); resp2.setHeader("Date", formatDate(new Date())); - + backendExpectsAnyRequest().andReturn(resp2); - + HttpRequest req3 = HttpTestUtils.makeDefaultRequest(); req3.setHeader("User-Agent", "agent3"); - + HttpResponse resp3 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control", "max-age=3600"); resp1.setHeader("Vary", "User-Agent"); resp1.setHeader("ETag", "\"etag3\""); - + Capture cap = new Capture(); expect(mockBackend.execute(isA(HttpHost.class), capture(cap), (HttpContext)isNull())).andReturn(resp3); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); impl.execute(host, req3); verifyMocks(); - + HttpRequest captured = cap.getValue(); for(Header h : captured.getHeaders("If-None-Match")) { for(HeaderElement elt : h.getElements()) { @@ -1334,15 +1334,15 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { } } } - + /* "If a cache receives a successful response whose Content-Location * field matches that of an existing cache entry for the same Request- * URI, whose entity-tag differs from that of the existing entry, and * whose Date is more recent than that of the existing entry, the * existing entry SHOULD NOT be returned in response to future requests * and SHOULD be deleted from the cache. - * - * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6 + * + * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.6 */ @Test public void cachedEntryShouldNotBeUsedIfMoreRecentMentionInContentLocation() @@ -1352,34 +1352,34 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Cache-Control","max-age=3600"); resp1.setHeader("ETag", "\"old-etag\""); resp1.setHeader("Date", formatDate(tenSecondsAgo)); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = new HttpGet("http://foo.example.com/bar"); HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("ETag", "\"new-etag\""); resp2.setHeader("Date", formatDate(now)); resp2.setHeader("Content-Location", "http://foo.example.com/"); - + backendExpectsAnyRequest().andReturn(resp2); - + HttpRequest req3 = new HttpGet("http://foo.example.com"); HttpResponse resp3 = HttpTestUtils.make200Response(); - + backendExpectsAnyRequest().andReturn(resp3); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); impl.execute(host, req3); verifyMocks(); } - + /* * "This specifically means that responses from HTTP/1.0 servers for such * URIs [those containing a '?' in the rel_path part] SHOULD NOT be taken * from a cache." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.9 */ @Test @@ -1391,23 +1391,23 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Content-Length","200"); resp1.setHeader("Date", formatDate(now)); resp1.setHeader("Expires", formatDate(tenSecondsFromNow)); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = new HttpGet("http://foo.example.com/bar?baz=quux"); HttpResponse resp2 = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK"); resp2.setEntity(HttpTestUtils.makeBody(200)); resp2.setHeader("Content-Length","200"); resp2.setHeader("Date", formatDate(now)); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); verifyMocks(); } - + @Test public void responseToGetWithQueryFrom1_0OriginVia1_1ProxyIsNotCached() throws Exception { @@ -1418,18 +1418,18 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Date", formatDate(now)); resp1.setHeader("Expires", formatDate(tenSecondsFromNow)); resp1.setHeader("Via","1.0 someproxy"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = new HttpGet("http://foo.example.com/bar?baz=quux"); HttpResponse resp2 = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK"); resp2.setEntity(HttpTestUtils.makeBody(200)); resp2.setHeader("Content-Length","200"); resp2.setHeader("Date", formatDate(now)); resp2.setHeader("Via","1.0 someproxy"); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); @@ -1440,7 +1440,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { * "A cache that passes through requests for methods it does not * understand SHOULD invalidate any entities referred to by the * Request-URI." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.10 */ @Test @@ -1449,30 +1449,30 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","max-age=3600"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = new BasicHttpRequest("FROB", "/", HttpVersion.HTTP_1_1); HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("Cache-Control","max-age=3600"); - + backendExpectsAnyRequest().andReturn(resp2); - + HttpRequest req3 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp3 = HttpTestUtils.make200Response(); resp3.setHeader("ETag", "\"etag\""); - + backendExpectsAnyRequest().andReturn(resp3); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); HttpResponse result = impl.execute(host, req3); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp3, result)); } - + @Test public void shouldInvalidateAllVariantsForUnknownMethod() throws Exception { @@ -1481,7 +1481,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","max-age=3600"); resp1.setHeader("Vary", "User-Agent"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); @@ -1489,30 +1489,30 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("Cache-Control","max-age=3600"); resp2.setHeader("Vary", "User-Agent"); - + backendExpectsAnyRequest().andReturn(resp2); - + HttpRequest req3 = new BasicHttpRequest("FROB", "/", HttpVersion.HTTP_1_1); req3.setHeader("User-Agent", "agent3"); HttpResponse resp3 = HttpTestUtils.make200Response(); resp3.setHeader("Cache-Control","max-age=3600"); - + backendExpectsAnyRequest().andReturn(resp3); - + HttpRequest req4 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); req4.setHeader("User-Agent", "agent1"); HttpResponse resp4 = HttpTestUtils.make200Response(); resp4.setHeader("ETag", "\"etag1\""); - + backendExpectsAnyRequest().andReturn(resp4); HttpRequest req5 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); req5.setHeader("User-Agent", "agent2"); HttpResponse resp5 = HttpTestUtils.make200Response(); resp5.setHeader("ETag", "\"etag2\""); - + backendExpectsAnyRequest().andReturn(resp5); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); @@ -1520,7 +1520,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse result4 = impl.execute(host, req4); HttpResponse result5 = impl.execute(host, req5); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp4, result4)); assertTrue(HttpTestUtils.semanticallyTransparent(resp5, result5)); } @@ -1529,7 +1529,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { * "If a new cacheable response is received from a resource while any * existing responses for the same resource are cached, the cache * SHOULD use the new response to reply to the current request." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.12 */ @Test @@ -1540,29 +1540,29 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Date", formatDate(tenSecondsAgo)); resp1.setHeader("Cache-Control", "max-age=3600"); resp1.setHeader("ETag", "\"etag1\""); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-age=0"); HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("Date", formatDate(now)); resp2.setHeader("Cache-Control", "max-age=3600"); resp2.setHeader("ETag", "\"etag2\""); - + backendExpectsAnyRequest().andReturn(resp2); - + HttpRequest req3 = HttpTestUtils.makeDefaultRequest(); - + replayMocks(); impl.execute(host, req1); impl.execute(host, req2); HttpResponse result = impl.execute(host, req3); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp2, result)); } - + /* * "Many HTTP/1.0 cache implementations will treat an Expires value * that is less than or equal to the response Date value as being @@ -1571,7 +1571,7 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { * does not include a Cache-Control header field, it SHOULD consider * the response to be non-cacheable in order to retain compatibility * with HTTP/1.0 servers." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.3 */ @Test @@ -1582,24 +1582,24 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Date", formatDate(now)); resp1.setHeader("Expires", formatDate(now)); resp1.removeHeaders("Cache-Control"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-stale=1000"); HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("ETag", "\"etag2\""); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp2, result)); } - + @Test public void expiresPriorToDateWithNoCacheControlIsNotCacheable() throws Exception { @@ -1608,28 +1608,28 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { resp1.setHeader("Date", formatDate(now)); resp1.setHeader("Expires", formatDate(tenSecondsAgo)); resp1.removeHeaders("Cache-Control"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-stale=1000"); HttpResponse resp2 = HttpTestUtils.make200Response(); resp2.setHeader("ETag", "\"etag2\""); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp2, result)); } /* * "If a request includes the no-cache directive, it SHOULD NOT * include min-fresh, max-stale, or max-age." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4 */ @Test @@ -1638,15 +1638,15 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); req1.setHeader("Cache-Control", "min-fresh=10, no-cache"); req1.addHeader("Cache-Control", "max-stale=0, max-age=0"); - + Capture cap = new Capture(); expect(mockBackend.execute(same(host), capture(cap), (HttpContext)isNull())) .andReturn(HttpTestUtils.make200Response()); - + replayMocks(); impl.execute(host, req1); verifyMocks(); - + HttpRequest captured = cap.getValue(); boolean foundNoCache = false; boolean foundDisallowedDirective = false; @@ -1665,14 +1665,14 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { assertTrue(foundNoCache); assertFalse(foundDisallowedDirective); } - + /* * "To do this, the client may include the only-if-cached directive in * a request. If it receives this directive, a cache SHOULD either * respond using a cached entry that is consistent with the other * constraints of the request, or respond with a 504 (Gateway Timeout) * status." - * + * * http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4 */ @Test @@ -1680,35 +1680,35 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { throws Exception { HttpRequest req = HttpTestUtils.makeDefaultRequest(); req.setHeader("Cache-Control", "only-if-cached"); - + replayMocks(); HttpResponse result = impl.execute(host, req); verifyMocks(); - + assertEquals(HttpStatus.SC_GATEWAY_TIMEOUT, result.getStatusLine().getStatusCode()); } - + @Test public void cacheHitOkWithOnlyIfCached() throws Exception { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control","max-age=3600"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "only-if-cached"); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp1, result)); } - + @Test public void returns504ForStaleEntryWithOnlyIfCached() throws Exception { @@ -1716,21 +1716,21 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", formatDate(tenSecondsAgo)); resp1.setHeader("Cache-Control","max-age=5"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "only-if-cached"); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + assertEquals(HttpStatus.SC_GATEWAY_TIMEOUT, result.getStatusLine().getStatusCode()); } - + @Test public void returnsStaleCacheEntryWithOnlyIfCachedAndMaxStale() throws Exception { @@ -1739,18 +1739,18 @@ public class TestProtocolRecommendations extends AbstractProtocolTest { HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Date", formatDate(tenSecondsAgo)); resp1.setHeader("Cache-Control","max-age=5"); - + backendExpectsAnyRequest().andReturn(resp1); - + HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control", "max-stale=20, only-if-cached"); - + replayMocks(); impl.execute(host, req1); HttpResponse result = impl.execute(host, req2); verifyMocks(); - + assertTrue(HttpTestUtils.semanticallyTransparent(resp1, result)); } - + } diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRequirements.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRequirements.java index 83308a4b4..98c181e61 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRequirements.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestProtocolRequirements.java @@ -5836,4 +5836,4 @@ public class TestProtocolRequirements extends AbstractProtocolTest { Assert.assertTrue(warningHeaders == null || warningHeaders.length == 0); } -} \ No newline at end of file +} diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRFC5861Compliance.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRFC5861Compliance.java index bc28ae5fa..b88d9c8d6 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRFC5861Compliance.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRFC5861Compliance.java @@ -38,26 +38,26 @@ import org.apache.http.impl.cookie.DateUtils; import org.apache.http.message.BasicHttpRequest; import org.junit.Test; -/** +/** * A suite of acceptance tests for compliance with RFC5861, which * describes the stale-if-error and stale-while-revalidate * Cache-Control extensions. */ public class TestRFC5861Compliance extends AbstractProtocolTest { - /* + /* * "The stale-if-error Cache-Control extension indicates that when an * error is encountered, a cached stale response MAY be used to satisfy - * the request, regardless of other freshness information.When used as a + * the request, regardless of other freshness information.When used as a * request Cache-Control extension, its scope of application is the request - * it appears in; when used as a response Cache-Control extension, its - * scope is any request applicable to the cached response in which it + * it appears in; when used as a response Cache-Control extension, its + * scope is any request applicable to the cached response in which it * occurs.Its value indicates the upper limit to staleness; when the cached * response is more stale than the indicated amount, the cached response * SHOULD NOT be used to satisfy the request, absent other information. * In this context, an error is any situation that would result in a * 500, 502, 503, or 504 HTTP response status code being returned." - * + * * http://tools.ietf.org/html/rfc5861 */ @Test @@ -67,22 +67,22 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=60"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + HttpTestUtils.assert110WarningFound(result); } - + @Test public void testStaleIfErrorInResponseYieldsToMustRevalidate() throws Exception{ @@ -90,22 +90,22 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=60, must-revalidate"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + assertTrue(HttpStatus.SC_OK != result.getStatusLine().getStatusCode()); } - + @Test public void testStaleIfErrorInResponseYieldsToProxyRevalidateForSharedCache() throws Exception{ @@ -114,46 +114,46 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=60, proxy-revalidate"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + assertTrue(HttpStatus.SC_OK != result.getStatusLine().getStatusCode()); } - + @Test public void testStaleIfErrorInResponseNeedNotYieldToProxyRevalidateForPrivateCache() throws Exception{ CacheConfig config = new CacheConfig(); config.setSharedCache(false); impl = new CachingHttpClient(mockBackend, config); - + Date tenSecondsAgo = new Date(new Date().getTime() - 10 * 1000L); HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=60, proxy-revalidate"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + HttpTestUtils.assert110WarningFound(result); } @@ -164,23 +164,23 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=60"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control","min-fresh=2"); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + assertTrue(HttpStatus.SC_OK != result.getStatusLine().getStatusCode()); } - + @Test public void testStaleIfErrorInRequestIsTrueReturnsStaleEntryWithWarning() throws Exception{ @@ -188,23 +188,23 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control","public, stale-if-error=60"); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); verifyMocks(); - + HttpTestUtils.assert110WarningFound(result); } - + @Test public void testStaleIfErrorInResponseIsFalseReturnsError() throws Exception{ @@ -213,14 +213,14 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5, stale-if-error=2"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); @@ -229,7 +229,7 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, result.getStatusLine().getStatusCode()); } - + @Test public void testStaleIfErrorInRequestIsFalseReturnsError() throws Exception{ @@ -238,15 +238,15 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { HttpRequest req1 = HttpTestUtils.makeDefaultRequest(); HttpResponse resp1 = HttpTestUtils.make200Response(tenSecondsAgo, "public, max-age=5"); - + backendExpectsAnyRequest().andReturn(resp1); HttpRequest req2 = HttpTestUtils.makeDefaultRequest(); req2.setHeader("Cache-Control","stale-if-error=2"); HttpResponse resp2 = HttpTestUtils.make500Response(); - + backendExpectsAnyRequest().andReturn(resp2); - + replayMocks(); impl.execute(host,req1); HttpResponse result = impl.execute(host,req2); @@ -255,22 +255,22 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { assertEquals(HttpStatus.SC_INTERNAL_SERVER_ERROR, result.getStatusLine().getStatusCode()); } - + /* * When present in an HTTP response, the stale-while-revalidate Cache- * Control extension indicates that caches MAY serve the response in * which it appears after it becomes stale, up to the indicated number * of seconds. - * + * * http://tools.ietf.org/html/rfc5861 */ @Test public void testStaleWhileRevalidateReturnsStaleEntryWithWarning() throws Exception { - + params.setAsynchronousWorkersMax(1); impl = new CachingHttpClient(mockBackend, cache, params); - + HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); Date now = new Date(); @@ -300,15 +300,15 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { } assertTrue(warning110Found); } - + @Test public void testCanAlsoServeStale304sWhileRevalidating() throws Exception { - + params.setAsynchronousWorkersMax(1); params.setSharedCache(false); impl = new CachingHttpClient(mockBackend, cache, params); - + HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); Date now = new Date(); @@ -340,17 +340,17 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { assertTrue(warning110Found); } - + @Test public void testStaleWhileRevalidateYieldsToMustRevalidate() throws Exception { - + Date now = new Date(); Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L); - + params.setAsynchronousWorkersMax(1); impl = new CachingHttpClient(mockBackend, cache, params); - + HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15, must-revalidate"); @@ -364,7 +364,7 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { resp2.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15, must-revalidate"); resp2.setHeader("ETag","\"etag\""); resp2.setHeader("Date", DateUtils.formatDate(now)); - + backendExpectsAnyRequest().andReturn(resp2); replayMocks(); @@ -388,14 +388,14 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { @Test public void testStaleWhileRevalidateYieldsToProxyRevalidateForSharedCache() throws Exception { - + Date now = new Date(); Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L); - + params.setAsynchronousWorkersMax(1); params.setSharedCache(true); impl = new CachingHttpClient(mockBackend, cache, params); - + HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15, proxy-revalidate"); @@ -409,7 +409,7 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { resp2.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15, proxy-revalidate"); resp2.setHeader("ETag","\"etag\""); resp2.setHeader("Date", DateUtils.formatDate(now)); - + backendExpectsAnyRequest().andReturn(resp2); replayMocks(); @@ -433,14 +433,14 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { @Test public void testStaleWhileRevalidateYieldsToExplicitFreshnessRequest() throws Exception { - + Date now = new Date(); Date tenSecondsAgo = new Date(now.getTime() - 10 * 1000L); - + params.setAsynchronousWorkersMax(1); params.setSharedCache(true); impl = new CachingHttpClient(mockBackend, cache, params); - + HttpRequest req1 = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_1); HttpResponse resp1 = HttpTestUtils.make200Response(); resp1.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15"); @@ -455,7 +455,7 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { resp2.setHeader("Cache-Control", "public, max-age=5, stale-while-revalidate=15"); resp2.setHeader("ETag","\"etag\""); resp2.setHeader("Date", DateUtils.formatDate(now)); - + backendExpectsAnyRequest().andReturn(resp2); replayMocks(); @@ -475,5 +475,5 @@ public class TestRFC5861Compliance extends AbstractProtocolTest { } assertFalse(warning110Found); } - + } diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRequestProtocolCompliance.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRequestProtocolCompliance.java index 39f52d78a..11e64b28e 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRequestProtocolCompliance.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestRequestProtocolCompliance.java @@ -42,22 +42,22 @@ public class TestRequestProtocolCompliance { private RequestProtocolCompliance impl; private HttpRequest req; private HttpRequest result; - + @Before public void setUp() { req = HttpTestUtils.makeDefaultRequest(); impl = new RequestProtocolCompliance(); } - + @Test public void doesNotModifyACompliantRequest() throws Exception { - result = impl.makeRequestCompliant(req); + result = impl.makeRequestCompliant(req); assertTrue(HttpTestUtils.equivalent(req, result)); } - + @Test public void removesEntityFromTRACERequest() throws Exception { - HttpEntityEnclosingRequest req = + HttpEntityEnclosingRequest req = new BasicHttpEntityEnclosingRequest("TRACE", "/", HttpVersion.HTTP_1_1); req.setEntity(HttpTestUtils.makeBody(50)); result = impl.makeRequestCompliant(req); @@ -65,7 +65,7 @@ public class TestRequestProtocolCompliance { assertNull(((HttpEntityEnclosingRequest)result).getEntity()); } } - + @Test public void upgrades1_0RequestTo1_1() throws Exception { req = new BasicHttpRequest("GET", "/", HttpVersion.HTTP_1_0); @@ -80,7 +80,7 @@ public class TestRequestProtocolCompliance { result = impl.makeRequestCompliant(req); assertEquals(HttpVersion.HTTP_1_1, result.getProtocolVersion()); } - + @Test public void stripsMinFreshFromRequestIfNoCachePresent() throws Exception { @@ -107,7 +107,7 @@ public class TestRequestProtocolCompliance { assertEquals("no-cache", result.getFirstHeader("Cache-Control").getValue()); } - + @Test public void doesNotStripMinFreshFromRequestWithoutNoCache() throws Exception { @@ -116,7 +116,7 @@ public class TestRequestProtocolCompliance { assertEquals("min-fresh=10", result.getFirstHeader("Cache-Control").getValue()); } - + @Test public void correctlyStripsMinFreshFromMiddleIfNoCache() throws Exception { diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java index 7336c4069..e92a590a8 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseCachingPolicy.java @@ -60,7 +60,7 @@ public class TestResponseCachingPolicy { now = new Date(); sixSecondsAgo = new Date(now.getTime() - 6 * 1000L); tenSecondsFromNow = new Date(now.getTime() + 10 * 1000L); - + policy = new ResponseCachingPolicy(0, true); request = new BasicHttpRequest("GET","/",HTTP_1_1); response = new BasicHttpResponse( @@ -397,7 +397,7 @@ public class TestResponseCachingPolicy { response = new BasicHttpResponse(HttpVersion.HTTP_1_0, HttpStatus.SC_OK, "OK"); Assert.assertFalse(policy.isResponseCacheable(request, response)); } - + @Test public void getsWithQueryParametersDirectlyFrom1_0OriginsAreNotCacheableEvenWithExpires() { request = new BasicHttpRequest("GET", "/foo?s=bar"); @@ -406,7 +406,7 @@ public class TestResponseCachingPolicy { response.setHeader("Expires", formatDate(tenSecondsFromNow)); Assert.assertFalse(policy.isResponseCacheable(request, response)); } - + @Test public void getsWithQueryParametersFrom1_0OriginsViaProxiesAreNotCacheable() { request = new BasicHttpRequest("GET", "/foo?s=bar"); @@ -424,7 +424,7 @@ public class TestResponseCachingPolicy { response.setHeader("Via", "1.0 someproxy"); Assert.assertFalse(policy.isResponseCacheable(request, response)); } - + @Test public void getsWithQueryParametersFrom1_0OriginsViaExplicitProxiesAreNotCacheableEvenWithExpires() { request = new BasicHttpRequest("GET", "/foo?s=bar"); @@ -443,7 +443,7 @@ public class TestResponseCachingPolicy { response.setHeader("Via", "1.1 someproxy"); Assert.assertTrue(policy.isResponseCacheable(request, response)); } - + @Test public void notCacheableIfExpiresEqualsDateAndNoCacheControl() { response.setHeader("Date", formatDate(now)); diff --git a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java index 72bc0b4ce..1f4e4c0de 100644 --- a/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java +++ b/httpclient-cache/src/test/java/org/apache/http/impl/client/cache/TestResponseProtocolCompliance.java @@ -60,12 +60,12 @@ public class TestResponseProtocolCompliance { private static class Flag { public boolean set; } - + private void setMinimalResponseHeaders(HttpResponse resp) { resp.setHeader("Date", DateUtils.formatDate(new Date())); resp.setHeader("Server", "MyServer/1.0"); } - + private ByteArrayInputStream makeTrackableBody(int nbytes, final Flag closed) { byte[] buf = HttpTestUtils.getRandomBytes(nbytes); ByteArrayInputStream bais = new ByteArrayInputStream(buf) { @@ -76,7 +76,7 @@ public class TestResponseProtocolCompliance { }; return bais; } - + private HttpResponse makePartialResponse(int nbytes) { HttpResponse resp = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_PARTIAL_CONTENT, "Partial Content"); setMinimalResponseHeaders(resp); @@ -84,7 +84,7 @@ public class TestResponseProtocolCompliance { resp.setHeader("Content-Range","0-127/256"); return resp; } - + @Test public void consumesBodyIfOriginSendsOneInResponseToHEAD() throws Exception { HttpRequest req = new HttpHead("http://foo.example.com/"); @@ -96,7 +96,7 @@ public class TestResponseProtocolCompliance { final Flag closed = new Flag(); ByteArrayInputStream bais = makeTrackableBody(nbytes, closed); resp.setEntity(new InputStreamEntity(bais, -1)); - + impl.ensureProtocolCompliance(req, resp); assertNull(resp.getEntity()); assertTrue(closed.set || bais.read() == -1); @@ -108,7 +108,7 @@ public class TestResponseProtocolCompliance { int nbytes = 128; HttpResponse resp = makePartialResponse(nbytes); resp.setEntity(HttpTestUtils.makeBody(nbytes)); - + impl.ensureProtocolCompliance(req, resp); } @@ -117,18 +117,18 @@ public class TestResponseProtocolCompliance { HttpRequest req = new HttpGet("http://foo.example.com/"); int nbytes = 128; HttpResponse resp = makePartialResponse(nbytes); - + final Flag closed = new Flag(); ByteArrayInputStream bais = makeTrackableBody(nbytes, closed); resp.setEntity(new InputStreamEntity(bais, -1)); - + try { impl.ensureProtocolCompliance(req, resp); } catch (ClientProtocolException expected) { } assertTrue(closed.set || bais.read() == -1); } - + @Test public void consumesBodyOf100ContinueResponseIfItArrives() throws Exception { HttpEntityEnclosingRequest req = new BasicHttpEntityEnclosingRequest("POST", "/", HttpVersion.HTTP_1_1); @@ -137,12 +137,12 @@ public class TestResponseProtocolCompliance { req.setHeader("Content-Type", "application/octet-stream"); HttpEntity postBody = new ByteArrayEntity(HttpTestUtils.getRandomBytes(nbytes)); req.setEntity(postBody); - + HttpResponse resp = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_CONTINUE, "Continue"); final Flag closed = new Flag(); ByteArrayInputStream bais = makeTrackableBody(nbytes, closed); resp.setEntity(new InputStreamEntity(bais, -1)); - + try { impl.ensureProtocolCompliance(req, resp); } catch (ClientProtocolException expected) { diff --git a/httpclient/src/main/java/org/apache/http/client/RedirectStrategy.java b/httpclient/src/main/java/org/apache/http/client/RedirectStrategy.java index 572f50520..9a8246976 100644 --- a/httpclient/src/main/java/org/apache/http/client/RedirectStrategy.java +++ b/httpclient/src/main/java/org/apache/http/client/RedirectStrategy.java @@ -78,4 +78,4 @@ public interface RedirectStrategy { HttpResponse response, HttpContext context) throws ProtocolException; -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/client/ServiceUnavailableRetryStrategy.java b/httpclient/src/main/java/org/apache/http/client/ServiceUnavailableRetryStrategy.java index 5978a0557..69c449ff9 100644 --- a/httpclient/src/main/java/org/apache/http/client/ServiceUnavailableRetryStrategy.java +++ b/httpclient/src/main/java/org/apache/http/client/ServiceUnavailableRetryStrategy.java @@ -57,4 +57,4 @@ public interface ServiceUnavailableRetryStrategy { */ long getRetryInterval(); -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/client/utils/Idn.java b/httpclient/src/main/java/org/apache/http/client/utils/Idn.java index 8ce84eb6f..36fb2911b 100644 --- a/httpclient/src/main/java/org/apache/http/client/utils/Idn.java +++ b/httpclient/src/main/java/org/apache/http/client/utils/Idn.java @@ -43,4 +43,4 @@ public interface Idn { * @return the Unicode domain name */ String toUnicode(String punycode); -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/client/utils/JdkIdn.java b/httpclient/src/main/java/org/apache/http/client/utils/JdkIdn.java index dacd75a09..1ecd171f9 100644 --- a/httpclient/src/main/java/org/apache/http/client/utils/JdkIdn.java +++ b/httpclient/src/main/java/org/apache/http/client/utils/JdkIdn.java @@ -72,4 +72,4 @@ public class JdkIdn implements Idn { } } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/client/utils/Rfc3492Idn.java b/httpclient/src/main/java/org/apache/http/client/utils/Rfc3492Idn.java index 0bcb8a7cd..e7f83cbee 100644 --- a/httpclient/src/main/java/org/apache/http/client/utils/Rfc3492Idn.java +++ b/httpclient/src/main/java/org/apache/http/client/utils/Rfc3492Idn.java @@ -123,4 +123,4 @@ public class Rfc3492Idn implements Idn { return output.toString(); } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/conn/DnsResolver.java b/httpclient/src/main/java/org/apache/http/conn/DnsResolver.java index 97556b6fd..73cab4439 100644 --- a/httpclient/src/main/java/org/apache/http/conn/DnsResolver.java +++ b/httpclient/src/main/java/org/apache/http/conn/DnsResolver.java @@ -49,4 +49,4 @@ public interface DnsResolver { */ InetAddress[] resolve(String host) throws UnknownHostException; -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java b/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java index a2db6f808..164d302b9 100644 --- a/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java +++ b/httpclient/src/main/java/org/apache/http/cookie/ClientCookie.java @@ -59,4 +59,4 @@ public interface ClientCookie extends Cookie { boolean containsAttribute(String name); -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java b/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java index cbef6b914..fea217faa 100644 --- a/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java +++ b/httpclient/src/main/java/org/apache/http/impl/client/AutoRetryHttpClient.java @@ -44,7 +44,7 @@ import org.apache.http.protocol.HttpContext; import org.apache.http.client.*; /** - * {@link HttpClient} implementation that can automatically retry the request in case of + * {@link HttpClient} implementation that can automatically retry the request in case of * a non-2xx response using the {@link ServiceUnavailableRetryStrategy} interface. * * @since 4.2 @@ -174,4 +174,4 @@ public class AutoRetryHttpClient implements HttpClient { return backend.getParams(); } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java b/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java index 0d9f9dbf0..04bc9fdf5 100644 --- a/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java +++ b/httpclient/src/main/java/org/apache/http/impl/client/DefaultHttpRequestRetryHandler.java @@ -110,11 +110,11 @@ public class DefaultHttpRequestRetryHandler implements HttpRequestRetryHandler { HttpRequest request = (HttpRequest) context.getAttribute(ExecutionContext.HTTP_REQUEST); - + if(requestIsAborted(request)){ - return false; + return false; } - + if (handleAsIdempotent(request)) { // Retry if the request is considered idempotent return true; @@ -154,7 +154,7 @@ public class DefaultHttpRequestRetryHandler implements HttpRequestRetryHandler { protected boolean handleAsIdempotent(final HttpRequest request) { return !(request instanceof HttpEntityEnclosingRequest); } - + protected boolean requestIsAborted(final HttpRequest request) { return (request instanceof HttpUriRequest && ((HttpUriRequest)request).isAborted()); } diff --git a/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java b/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java index b9aff0e8c..f33777bce 100644 --- a/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java +++ b/httpclient/src/main/java/org/apache/http/impl/client/DefaultRedirectStrategy.java @@ -211,4 +211,4 @@ public class DefaultRedirectStrategy implements RedirectStrategy { } } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/client/DefaultServiceUnavailableRetryStrategy.java b/httpclient/src/main/java/org/apache/http/impl/client/DefaultServiceUnavailableRetryStrategy.java index 0dda54ab7..79067886f 100644 --- a/httpclient/src/main/java/org/apache/http/impl/client/DefaultServiceUnavailableRetryStrategy.java +++ b/httpclient/src/main/java/org/apache/http/impl/client/DefaultServiceUnavailableRetryStrategy.java @@ -37,7 +37,7 @@ import org.apache.http.protocol.HttpContext; * Default implementation of the {@link ServiceUnavailableRetryStrategy} interface. * that retries 503 (Service Unavailable) responses for a fixed number of times * at a fixed interval. - * + * * @since 4.2 */ @Immutable diff --git a/httpclient/src/main/java/org/apache/http/impl/conn/InMemoryDnsResolver.java b/httpclient/src/main/java/org/apache/http/impl/conn/InMemoryDnsResolver.java index a1c7d6609..d12ad616b 100644 --- a/httpclient/src/main/java/org/apache/http/impl/conn/InMemoryDnsResolver.java +++ b/httpclient/src/main/java/org/apache/http/impl/conn/InMemoryDnsResolver.java @@ -92,4 +92,4 @@ public class InMemoryDnsResolver implements DnsResolver { return resolvedAddresses; } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java b/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java index fbecb4682..1e9704b5a 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/BestMatchSpec.java @@ -218,4 +218,4 @@ public class BestMatchSpec implements CookieSpec { return "best-match"; } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java index 90919cd20..f8fc034ff 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965CommentUrlAttributeHandler.java @@ -64,4 +64,4 @@ public class RFC2965CommentUrlAttributeHandler implements CookieAttributeHandler return true; } - } \ No newline at end of file + } diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java index 67b92376c..01a3a3505 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DiscardAttributeHandler.java @@ -64,4 +64,4 @@ public class RFC2965DiscardAttributeHandler implements CookieAttributeHandler { return true; } - } \ No newline at end of file + } diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java index 2789e649c..076745b78 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965DomainAttributeHandler.java @@ -191,4 +191,4 @@ public class RFC2965DomainAttributeHandler implements CookieAttributeHandler { return effectiveHostWithoutDomain.indexOf('.') == -1; } -} \ No newline at end of file +} diff --git a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java index 5f73b4f20..6056330cc 100644 --- a/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java +++ b/httpclient/src/main/java/org/apache/http/impl/cookie/RFC2965VersionAttributeHandler.java @@ -95,4 +95,4 @@ public class RFC2965VersionAttributeHandler implements CookieAttributeHandler { return true; } -} \ No newline at end of file +} diff --git a/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java b/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java index 22a9836da..6311411ee 100644 --- a/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java +++ b/httpclient/src/test/java/org/apache/http/client/protocol/TestRequestAddCookies.java @@ -512,9 +512,9 @@ public class TestRequestAddCookies { // Test for ordering adapted from test in Commons HC 3.1 public void testCookieOrder() throws Exception { HttpRequest request = new BasicHttpRequest("GET", "/foobar/yada/yada"); - + this.cookieStore.clear(); - + cookieStore.addCookie(makeCookie("nomatch", "value", "localhost.local", "/noway")); cookieStore.addCookie(makeCookie("name2", "value", "localhost.local", "/foobar/yada")); cookieStore.addCookie(makeCookie("name3", "value", "localhost.local", "/foobar")); diff --git a/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java b/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java index 29a3c24bf..3fafad672 100644 --- a/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java +++ b/httpclient/src/test/java/org/apache/http/client/utils/TestURIUtils.java @@ -327,10 +327,10 @@ public class TestURIUtils { public void testHTTPCLIENT_911() throws Exception{ Assert.assertEquals(new HttpHost("localhost"),URIUtils.extractHost(new URI("http://localhost/abcd"))); Assert.assertEquals(new HttpHost("localhost"),URIUtils.extractHost(new URI("http://localhost/abcd%3A"))); - + Assert.assertEquals(new HttpHost("local_host"),URIUtils.extractHost(new URI("http://local_host/abcd"))); Assert.assertEquals(new HttpHost("local_host"),URIUtils.extractHost(new URI("http://local_host/abcd%3A"))); - + Assert.assertEquals(new HttpHost("localhost",8),URIUtils.extractHost(new URI("http://localhost:8/abcd"))); Assert.assertEquals(new HttpHost("local_host",8),URIUtils.extractHost(new URI("http://local_host:8/abcd"))); @@ -345,5 +345,5 @@ public class TestURIUtils { Assert.assertEquals(new HttpHost("local_host",8080),URIUtils.extractHost(new URI("http://@local_host:8080/abcd"))); } - + } diff --git a/httpclient/src/test/java/org/apache/http/client/utils/TestURLEncodedUtils.java b/httpclient/src/test/java/org/apache/http/client/utils/TestURLEncodedUtils.java index dcdc22aca..f645e2b42 100644 --- a/httpclient/src/test/java/org/apache/http/client/utils/TestURLEncodedUtils.java +++ b/httpclient/src/test/java/org/apache/http/client/utils/TestURLEncodedUtils.java @@ -207,4 +207,4 @@ public class TestURLEncodedUtils { Assert.assertEquals(parameter.getValue(), expectedValue); } -} \ No newline at end of file +} diff --git a/httpclient/src/test/java/org/apache/http/conn/ssl/TestHostnameVerifier.java b/httpclient/src/test/java/org/apache/http/conn/ssl/TestHostnameVerifier.java index 12d6732cb..db8daa70d 100644 --- a/httpclient/src/test/java/org/apache/http/conn/ssl/TestHostnameVerifier.java +++ b/httpclient/src/test/java/org/apache/http/conn/ssl/TestHostnameVerifier.java @@ -267,7 +267,7 @@ public class TestHostnameVerifier { checkMatching(bhv, "s.a.b.c", cns, alt, false); // OK checkMatching(shv, "s.a.b.c", cns, alt, true); // subdomain not OK - + cns = new String []{}; alt = new String []{"dummy", "*.b.c"}; // check matches against all alts checkMatching(bhv, "a.b.c", cns, alt, false); // OK @@ -275,28 +275,28 @@ public class TestHostnameVerifier { checkMatching(bhv, "s.a.b.c", cns, alt, false); // OK checkMatching(shv, "s.a.b.c", cns, alt, true); // subdomain not OK - + alt = new String []{"*.gov.uk"}; checkMatching(bhv, "a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(shv, "a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(bhv, "s.a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(shv, "s.a.gov.uk", cns, alt, true); // Bad 2TLD/no subdomain allowed - + alt = new String []{"*.gov.com"}; checkMatching(bhv, "a.gov.com", cns, alt, false); // OK, gov not 2TLD here checkMatching(shv, "a.gov.com", cns, alt, false); // OK, gov not 2TLD here checkMatching(bhv, "s.a.gov.com", cns, alt, false); // OK, gov not 2TLD here checkMatching(shv, "s.a.gov.com", cns, alt, true); // no subdomain allowed - + cns = new String []{"a*.gov.uk"}; // 2TLD check applies to wildcards checkMatching(bhv, "a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(shv, "a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(bhv, "s.a.gov.uk", cns, alt, true); // Bad 2TLD checkMatching(shv, "s.a.gov.uk", cns, alt, true); // Bad 2TLD/no subdomain allowed - + } @Test @@ -305,7 +305,7 @@ public class TestHostnameVerifier { String alt[] = {}; X509HostnameVerifier bhv = new BrowserCompatHostnameVerifier(); X509HostnameVerifier shv = new StrictHostnameVerifier(); - + cns = new String []{"a*.b.c"}; // component part checkMatching(bhv, "a.b.c", cns, alt, false); // OK checkMatching(shv, "a.b.c", cns, alt, false); // OK @@ -317,10 +317,10 @@ public class TestHostnameVerifier { checkWildcard("s*.gov.uk", false); // 2 character TLD, invalid 2TLD checkWildcard("s*.gouv.uk", false); // 2 character TLD, invalid 2TLD } - + // Helper private void checkWildcard(String host, boolean isOK) { - Assert.assertTrue(host+" should be "+isOK, isOK==AbstractVerifier.acceptableCountryWildcard(host)); + Assert.assertTrue(host+" should be "+isOK, isOK==AbstractVerifier.acceptableCountryWildcard(host)); } @Test diff --git a/httpclient/src/test/java/org/apache/http/impl/client/MockClock.java b/httpclient/src/test/java/org/apache/http/impl/client/MockClock.java index 8168d1211..ac639efed 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/MockClock.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/MockClock.java @@ -28,11 +28,11 @@ package org.apache.http.impl.client; public class MockClock implements Clock { private long t = System.currentTimeMillis(); - + public long getCurrentTime() { return t; } - + public void setCurrentTime(long now) { t = now; } diff --git a/httpclient/src/test/java/org/apache/http/impl/client/TestAIMDBackoffManager.java b/httpclient/src/test/java/org/apache/http/impl/client/TestAIMDBackoffManager.java index d4159d7f7..8dd87d0d8 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/TestAIMDBackoffManager.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/TestAIMDBackoffManager.java @@ -52,33 +52,33 @@ public class TestAIMDBackoffManager { impl = new AIMDBackoffManager(connPerRoute, clock); impl.setPerHostConnectionCap(10); } - + @Test public void isABackoffManager() { assertTrue(impl instanceof BackoffManager); } - + @Test public void halvesConnectionsOnBackoff() { connPerRoute.setMaxForRoute(route, 4); impl.backOff(route); assertEquals(2, connPerRoute.getMaxForRoute(route)); } - + @Test public void doesNotBackoffBelowOneConnection() { connPerRoute.setMaxForRoute(route, 1); impl.backOff(route); - assertEquals(1, connPerRoute.getMaxForRoute(route)); + assertEquals(1, connPerRoute.getMaxForRoute(route)); } - + @Test public void increasesByOneOnProbe() { connPerRoute.setMaxForRoute(route, 2); impl.probe(route); - assertEquals(3, connPerRoute.getMaxForRoute(route)); + assertEquals(3, connPerRoute.getMaxForRoute(route)); } - + @Test public void doesNotIncreaseBeyondPerHostMaxOnProbe() { connPerRoute.setDefaultMaxPerRoute(5); @@ -87,7 +87,7 @@ public class TestAIMDBackoffManager { impl.probe(route); assertEquals(5, connPerRoute.getMaxForRoute(route)); } - + @Test public void backoffDoesNotAdjustDuringCoolDownPeriod() { connPerRoute.setMaxForRoute(route, 4); @@ -99,7 +99,7 @@ public class TestAIMDBackoffManager { impl.backOff(route); assertEquals(max, connPerRoute.getMaxForRoute(route)); } - + @Test public void backoffStillAdjustsAfterCoolDownPeriod() { connPerRoute.setMaxForRoute(route, 8); @@ -111,9 +111,9 @@ public class TestAIMDBackoffManager { impl.backOff(route); assertTrue(max == 1 || max > connPerRoute.getMaxForRoute(route)); } - + @Test - public void probeDoesNotAdjustDuringCooldownPeriod() { + public void probeDoesNotAdjustDuringCooldownPeriod() { connPerRoute.setMaxForRoute(route, 4); long now = System.currentTimeMillis(); clock.setCurrentTime(now); @@ -135,7 +135,7 @@ public class TestAIMDBackoffManager { impl.probe(route); assertTrue(max < connPerRoute.getMaxForRoute(route)); } - + @Test public void willBackoffImmediatelyEvenAfterAProbe() { connPerRoute.setMaxForRoute(route, 8); @@ -147,7 +147,7 @@ public class TestAIMDBackoffManager { impl.backOff(route); assertTrue(connPerRoute.getMaxForRoute(route) < max); } - + @Test public void backOffFactorIsConfigurable() { connPerRoute.setMaxForRoute(route, 10); @@ -155,7 +155,7 @@ public class TestAIMDBackoffManager { impl.backOff(route); assertEquals(9, connPerRoute.getMaxForRoute(route)); } - + @Test public void coolDownPeriodIsConfigurable() { long cd = new Random().nextLong() / 2; diff --git a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultBackoffStrategy.java b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultBackoffStrategy.java index b97ba2abb..015e8e214 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultBackoffStrategy.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultBackoffStrategy.java @@ -48,34 +48,34 @@ public class TestDefaultBackoffStrategy { public void setUp() { impl = new DefaultBackoffStrategy(); } - + @Test public void isABackoffStrategy() { assertTrue(impl instanceof ConnectionBackoffStrategy); } - + @Test public void backsOffForSocketTimeouts() { assertTrue(impl.shouldBackoff(new SocketTimeoutException())); } - + @Test public void backsOffForConnectionTimeouts() { assertTrue(impl.shouldBackoff(new ConnectException())); } - + @Test public void doesNotBackOffForConnectionManagerTimeout() { assertFalse(impl.shouldBackoff(new ConnectionPoolTimeoutException())); } - + @Test public void backsOffForServiceUnavailable() { HttpResponse resp = new BasicHttpResponse(HttpVersion.HTTP_1_1, HttpStatus.SC_SERVICE_UNAVAILABLE, "Service Unavailable"); assertTrue(impl.shouldBackoff(resp)); } - + @Test public void doesNotBackOffForNon503StatusCodes() { for(int i = 100; i <= 599; i++) { diff --git a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java index c57a97ed7..6d3bb1e1c 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/TestDefaultHttpRequestRetryHandler.java @@ -40,73 +40,73 @@ import org.junit.Test; public class TestDefaultHttpRequestRetryHandler { - + @Test public void noRetryOnConnectTimeout() throws Exception { HttpContext context = mock(HttpContext.class); HttpUriRequest request = mock(HttpUriRequest.class); - + DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(); Assert.assertEquals(3, retryHandler.getRetryCount()); - + when(request.isAborted()).thenReturn(Boolean.FALSE); when(context.getAttribute(ExecutionContext.HTTP_REQUEST)).thenReturn(request); - + Assert.assertFalse(retryHandler.retryRequest(new ConnectTimeoutException(), 1, context)); } - + @Test public void noRetryOnUnknownHost() throws Exception { HttpContext context = mock(HttpContext.class); HttpUriRequest request = mock(HttpUriRequest.class); - + DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(); - + when(request.isAborted()).thenReturn(Boolean.FALSE); when(context.getAttribute(ExecutionContext.HTTP_REQUEST)).thenReturn(request); - + Assert.assertFalse(retryHandler.retryRequest(new UnknownHostException(), 1, context)); } - + @Test public void noRetryOnAbortedRequests() throws Exception{ HttpContext context = mock(HttpContext.class); HttpUriRequest request = mock(HttpUriRequest.class); - + DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(); - + when(request.isAborted()).thenReturn(Boolean.TRUE); when(context.getAttribute(ExecutionContext.HTTP_REQUEST)).thenReturn(request); - + Assert.assertFalse(retryHandler.retryRequest(new IOException(),3,context)); } - + @Test public void retryOnNonAbortedRequests() throws Exception{ - + HttpContext context = mock(HttpContext.class); HttpUriRequest request = mock(HttpUriRequest.class); - + DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(); - + when(request.isAborted()).thenReturn(Boolean.FALSE); when(context.getAttribute(ExecutionContext.HTTP_REQUEST)).thenReturn(request); - + Assert.assertTrue(retryHandler.retryRequest(new IOException(),3,context)); } - + @Test public void noRetryOnConnectionTimeout() throws Exception{ - + HttpContext context = mock(HttpContext.class); HttpUriRequest request = mock(HttpUriRequest.class); - + DefaultHttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(); - + when(request.isAborted()).thenReturn(false); when(context.getAttribute(ExecutionContext.HTTP_REQUEST)).thenReturn(request); - + Assert.assertFalse(retryHandler.retryRequest(new ConnectTimeoutException(),3,context)); } - -} \ No newline at end of file + +} diff --git a/httpclient/src/test/java/org/apache/http/impl/client/TestNullBackoffStrategy.java b/httpclient/src/test/java/org/apache/http/impl/client/TestNullBackoffStrategy.java index 66f052663..8b530223f 100644 --- a/httpclient/src/test/java/org/apache/http/impl/client/TestNullBackoffStrategy.java +++ b/httpclient/src/test/java/org/apache/http/impl/client/TestNullBackoffStrategy.java @@ -43,12 +43,12 @@ public class TestNullBackoffStrategy { public void setUp() { impl = new NullBackoffStrategy(); } - + @Test public void doesNotBackoffForThrowables() { assertFalse(impl.shouldBackoff(new Exception())); } - + @Test public void doesNotBackoffForResponses() { HttpResponse resp = new BasicHttpResponse(HttpVersion.HTTP_1_1, diff --git a/httpclient/src/test/java/org/apache/http/impl/conn/ConnPoolBench.java b/httpclient/src/test/java/org/apache/http/impl/conn/ConnPoolBench.java index 71933b689..60a1a4621 100644 --- a/httpclient/src/test/java/org/apache/http/impl/conn/ConnPoolBench.java +++ b/httpclient/src/test/java/org/apache/http/impl/conn/ConnPoolBench.java @@ -54,7 +54,7 @@ public class ConnPoolBench { oldPool(c, reps); newPool(c, reps); } - + public static void newPool(int c, long reps) throws Exception { Log log = LogFactory.getLog(ConnPoolBench.class); diff --git a/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultClientConnectOperator.java b/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultClientConnectOperator.java index edb780437..26c0763c5 100644 --- a/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultClientConnectOperator.java +++ b/httpclient/src/test/java/org/apache/http/impl/conn/TestDefaultClientConnectOperator.java @@ -82,4 +82,4 @@ public class TestDefaultClientConnectOperator { return new InetAddress[] { InetAddress.getByAddress(byteIpAddress) }; } -} \ No newline at end of file +} diff --git a/httpmime/pom.xml b/httpmime/pom.xml index ede0185bc..7ebd2a3ad 100644 --- a/httpmime/pom.xml +++ b/httpmime/pom.xml @@ -44,7 +44,6 @@ org.apache.httpcomponents httpcore - ${httpcore.version} compile