CachingHttpClientBuilder
or CachingHttpClients
.@Deprecated @Contract(threading=SAFE_CONDITIONAL) public class CachingHttpClient extends java.lang.Object implements HttpClient
The CachingHttpClient
is meant to be a drop-in replacement for
a DefaultHttpClient
that transparently adds client-side caching.
The current implementation is conditionally compliant with HTTP/1.1
(meaning all the MUST and MUST NOTs are obeyed), although quite a lot,
though not all, of the SHOULDs and SHOULD NOTs are obeyed too. Generally
speaking, you construct a CachingHttpClient
by providing a
"backend" HttpClient
used for making actual network requests and
provide an HttpCacheStorage
instance to use for holding onto
cached responses. Additional configuration options can be provided by
passing in a CacheConfig
. Note that all of the usual client
related configuration you want to do vis-a-vis timeouts and connection
pools should be done on this backend client before constructing a CachingHttpClient
from it.
Generally speaking, the CachingHttpClient
is implemented as a
Decorator
of the backend client; for any incoming request it attempts to satisfy
it from the cache, but if it can't, or if it needs to revalidate a stale
cache entry, it will use the backend client to make an actual request.
However, a proper HTTP/1.1 cache won't change the semantics of a request
and response; in particular, if you issue an unconditional request you
will get a full response (although it may be served to you from the cache,
or the cache may make a conditional request on your behalf to the origin).
This notion of "semantic transparency" means you should be able to drop
a CachingHttpClient
into an existing application without breaking
anything.
Folks that would like to experiment with alternative storage backends
should look at the HttpCacheStorage
interface and the related
package documentation there. You may also be interested in the provided
EhCache
and memcached
storage backends.
Modifier and Type | Class and Description |
---|---|
(package private) static class |
CachingHttpClient.AsynchronousValidationRequest
Deprecated.
|
(package private) static class |
CachingHttpClient.AsynchronousValidator
Deprecated.
|
Modifier and Type | Field and Description |
---|---|
private CachingHttpClient.AsynchronousValidator |
asynchRevalidator
Deprecated.
|
private HttpClient |
backend
Deprecated.
|
static java.lang.String |
CACHE_RESPONSE_STATUS
Deprecated.
This is the name under which the
CacheResponseStatus of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext is provided during execution. |
private CacheableRequestPolicy |
cacheableRequestPolicy
Deprecated.
|
private java.util.concurrent.atomic.AtomicLong |
cacheHits
Deprecated.
|
private java.util.concurrent.atomic.AtomicLong |
cacheMisses
Deprecated.
|
private java.util.concurrent.atomic.AtomicLong |
cacheUpdates
Deprecated.
|
private ConditionalRequestBuilder |
conditionalRequestBuilder
Deprecated.
|
private org.apache.commons.logging.Log |
log
Deprecated.
|
private long |
maxObjectSizeBytes
Deprecated.
|
private RequestProtocolCompliance |
requestCompliance
Deprecated.
|
private HttpCache |
responseCache
Deprecated.
|
private ResponseCachingPolicy |
responseCachingPolicy
Deprecated.
|
private ResponseProtocolCompliance |
responseCompliance
Deprecated.
|
private CachedHttpResponseGenerator |
responseGenerator
Deprecated.
|
private boolean |
sharedCache
Deprecated.
|
private CachedResponseSuitabilityChecker |
suitabilityChecker
Deprecated.
|
private static boolean |
SUPPORTS_RANGE_AND_CONTENT_RANGE_HEADERS
Deprecated.
|
private CacheValidityPolicy |
validityPolicy
Deprecated.
|
private java.util.Map<org.apache.http.ProtocolVersion,java.lang.String> |
viaHeaders
Deprecated.
|
Constructor and Description |
---|
CachingHttpClient()
Deprecated.
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. |
CachingHttpClient(CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests. |
CachingHttpClient(HttpClient client)
Deprecated.
Constructs a
CachingHttpClient with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests. |
CachingHttpClient(HttpClient client,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests. |
CachingHttpClient(HttpClient backend,
CacheValidityPolicy validityPolicy,
ResponseCachingPolicy responseCachingPolicy,
HttpCache responseCache,
CachedHttpResponseGenerator responseGenerator,
CacheableRequestPolicy cacheableRequestPolicy,
CachedResponseSuitabilityChecker suitabilityChecker,
ConditionalRequestBuilder conditionalRequestBuilder,
ResponseProtocolCompliance responseCompliance,
RequestProtocolCompliance requestCompliance)
Deprecated.
|
CachingHttpClient(HttpClient client,
HttpCache cache,
CacheConfig config)
Deprecated.
|
CachingHttpClient(HttpClient client,
HttpCacheStorage storage,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. |
CachingHttpClient(HttpClient client,
ResourceFactory resourceFactory,
HttpCacheStorage storage,
CacheConfig config)
Deprecated.
Constructs a
CachingHttpClient with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient for backend requests. |
Modifier and Type | Method and Description |
---|---|
private boolean |
alreadyHaveNewerCacheEntry(org.apache.http.HttpHost target,
org.apache.http.HttpRequest request,
org.apache.http.HttpResponse backendResponse)
Deprecated.
|
(package private) org.apache.http.HttpResponse |
callBackend(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context)
Deprecated.
|
(package private) boolean |
clientRequestsOurOptions(org.apache.http.HttpRequest request)
Deprecated.
|
org.apache.http.HttpResponse |
execute(org.apache.http.HttpHost target,
org.apache.http.HttpRequest request)
Deprecated.
Executes HTTP request using the default context.
|
org.apache.http.HttpResponse |
execute(org.apache.http.HttpHost target,
org.apache.http.HttpRequest originalRequest,
org.apache.http.protocol.HttpContext context)
Deprecated.
Executes HTTP request using the given context.
|
<T> T |
execute(org.apache.http.HttpHost target,
org.apache.http.HttpRequest request,
ResponseHandler<? extends T> responseHandler)
Deprecated.
Executes HTTP request to the target using the default context and
processes the response using the given response handler.
|
<T> T |
execute(org.apache.http.HttpHost target,
org.apache.http.HttpRequest request,
ResponseHandler<? extends T> responseHandler,
org.apache.http.protocol.HttpContext context)
Deprecated.
Executes HTTP request to the target using the given context and
processes the response using the given response handler.
|
org.apache.http.HttpResponse |
execute(HttpUriRequest request)
Deprecated.
Executes HTTP request using the default context.
|
org.apache.http.HttpResponse |
execute(HttpUriRequest request,
org.apache.http.protocol.HttpContext context)
Deprecated.
Executes HTTP request using the given context.
|
<T> T |
execute(HttpUriRequest request,
ResponseHandler<? extends T> responseHandler)
Deprecated.
Executes HTTP request using the default context and processes the
response using the given response handler.
|
<T> T |
execute(HttpUriRequest request,
ResponseHandler<? extends T> responseHandler,
org.apache.http.protocol.HttpContext context)
Deprecated.
Executes HTTP request using the given context and processes the
response using the given response handler.
|
private boolean |
explicitFreshnessRequest(HttpRequestWrapper request,
HttpCacheEntry entry,
java.util.Date now)
Deprecated.
|
private void |
flushEntriesInvalidatedByRequest(org.apache.http.HttpHost target,
HttpRequestWrapper request)
Deprecated.
|
private org.apache.http.HttpResponse |
generateCachedResponse(HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry entry,
java.util.Date now)
Deprecated.
|
private org.apache.http.HttpResponse |
generateGatewayTimeout(org.apache.http.protocol.HttpContext context)
Deprecated.
|
private java.lang.String |
generateViaHeader(org.apache.http.HttpMessage msg)
Deprecated.
|
long |
getCacheHits()
Deprecated.
Reports the number of times that the cache successfully responded
to an
HttpRequest without contacting the origin server. |
long |
getCacheMisses()
Deprecated.
Reports the number of times that the cache contacted the origin
server because it had no appropriate response cached.
|
long |
getCacheUpdates()
Deprecated.
Reports the number of times that the cache was able to satisfy
a response by revalidating an existing but stale cache entry.
|
ClientConnectionManager |
getConnectionManager()
Deprecated.
Obtains the connection manager used by this client.
|
(package private) java.util.Date |
getCurrentDate()
Deprecated.
|
private java.util.Map<java.lang.String,Variant> |
getExistingCacheVariants(org.apache.http.HttpHost target,
HttpRequestWrapper request)
Deprecated.
|
private org.apache.http.HttpResponse |
getFatallyNoncompliantResponse(HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context)
Deprecated.
|
org.apache.http.params.HttpParams |
getParams()
Deprecated.
Obtains the parameters for this client.
|
private HttpCacheEntry |
getUpdatedVariantEntry(org.apache.http.HttpHost target,
HttpRequestWrapper conditionalRequest,
java.util.Date requestDate,
java.util.Date responseDate,
org.apache.http.HttpResponse backendResponse,
Variant matchingVariant,
HttpCacheEntry matchedEntry)
Deprecated.
|
private <T> T |
handleAndConsume(ResponseHandler<? extends T> responseHandler,
org.apache.http.HttpResponse response)
Deprecated.
|
(package private) org.apache.http.HttpResponse |
handleBackendResponse(org.apache.http.HttpHost target,
HttpRequestWrapper request,
java.util.Date requestDate,
java.util.Date responseDate,
org.apache.http.HttpResponse backendResponse)
Deprecated.
|
private org.apache.http.HttpResponse |
handleCacheHit(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry entry)
Deprecated.
|
private org.apache.http.HttpResponse |
handleCacheMiss(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context)
Deprecated.
|
private org.apache.http.HttpResponse |
handleRevalidationFailure(HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry entry,
java.util.Date now)
Deprecated.
|
boolean |
isSharedCache()
Deprecated.
Reports whether this
CachingHttpClient is configured as
a shared (public) or non-shared (private) cache. |
private CachingHttpClient.AsynchronousValidator |
makeAsynchronousValidator(CacheConfig config)
Deprecated.
|
private boolean |
mayCallBackend(HttpRequestWrapper request)
Deprecated.
|
(package private) org.apache.http.HttpResponse |
negotiateResponseFromVariants(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
java.util.Map<java.lang.String,Variant> variants)
Deprecated.
|
private void |
recordCacheHit(org.apache.http.HttpHost target,
HttpRequestWrapper request)
Deprecated.
|
private void |
recordCacheMiss(org.apache.http.HttpHost target,
HttpRequestWrapper request)
Deprecated.
|
private void |
recordCacheUpdate(org.apache.http.protocol.HttpContext context)
Deprecated.
|
private org.apache.http.HttpResponse |
retryRequestUnconditionally(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry matchedEntry)
Deprecated.
|
(package private) org.apache.http.HttpResponse |
revalidateCacheEntry(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry cacheEntry)
Deprecated.
|
private org.apache.http.HttpResponse |
revalidateCacheEntry(org.apache.http.HttpHost target,
HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry entry,
java.util.Date now)
Deprecated.
|
private boolean |
revalidationResponseIsTooOld(org.apache.http.HttpResponse backendResponse,
HttpCacheEntry cacheEntry)
Deprecated.
|
private HttpCacheEntry |
satisfyFromCache(org.apache.http.HttpHost target,
HttpRequestWrapper request)
Deprecated.
|
private void |
setResponseStatus(org.apache.http.protocol.HttpContext context,
CacheResponseStatus value)
Deprecated.
|
private boolean |
shouldSendNotModifiedResponse(HttpRequestWrapper request,
HttpCacheEntry responseEntry)
Deprecated.
|
private boolean |
staleIfErrorAppliesTo(int statusCode)
Deprecated.
|
private boolean |
staleResponseNotAllowed(HttpRequestWrapper request,
HttpCacheEntry entry,
java.util.Date now)
Deprecated.
|
private void |
storeRequestIfModifiedSinceFor304Response(org.apache.http.HttpRequest request,
org.apache.http.HttpResponse backendResponse)
Deprecated.
For 304 Not modified responses, adds a "Last-Modified" header with the
value of the "If-Modified-Since" header passed in the request.
|
boolean |
supportsRangeAndContentRangeHeaders()
Deprecated.
Reports whether this
CachingHttpClient implementation
supports byte-range requests as specified by the Range
and Content-Range headers. |
private void |
tryToUpdateVariantMap(org.apache.http.HttpHost target,
HttpRequestWrapper request,
Variant matchingVariant)
Deprecated.
|
private org.apache.http.HttpResponse |
unvalidatedCacheHit(HttpRequestWrapper request,
org.apache.http.protocol.HttpContext context,
HttpCacheEntry entry)
Deprecated.
|
public static final java.lang.String CACHE_RESPONSE_STATUS
CacheResponseStatus
of a request
(for example, whether it resulted in a cache hit) will be recorded if an
HttpContext
is provided during execution.private static final boolean SUPPORTS_RANGE_AND_CONTENT_RANGE_HEADERS
private final java.util.concurrent.atomic.AtomicLong cacheHits
private final java.util.concurrent.atomic.AtomicLong cacheMisses
private final java.util.concurrent.atomic.AtomicLong cacheUpdates
private final java.util.Map<org.apache.http.ProtocolVersion,java.lang.String> viaHeaders
private final HttpClient backend
private final HttpCache responseCache
private final CacheValidityPolicy validityPolicy
private final ResponseCachingPolicy responseCachingPolicy
private final CachedHttpResponseGenerator responseGenerator
private final CacheableRequestPolicy cacheableRequestPolicy
private final CachedResponseSuitabilityChecker suitabilityChecker
private final ConditionalRequestBuilder conditionalRequestBuilder
private final long maxObjectSizeBytes
private final boolean sharedCache
private final ResponseProtocolCompliance responseCompliance
private final RequestProtocolCompliance requestCompliance
private final CachingHttpClient.AsynchronousValidator asynchRevalidator
private final org.apache.commons.logging.Log log
CachingHttpClient(HttpClient client, HttpCache cache, CacheConfig config)
public CachingHttpClient()
CachingHttpClient
with default caching settings that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.public CachingHttpClient(CacheConfig config)
CachingHttpClient
with the given caching options that
stores cache entries in memory and uses a vanilla DefaultHttpClient
for backend requests.config
- cache module optionspublic CachingHttpClient(HttpClient client)
CachingHttpClient
with default caching settings that
stores cache entries in memory and uses the given HttpClient
for backend requests.client
- used to make origin requestspublic CachingHttpClient(HttpClient client, CacheConfig config)
CachingHttpClient
with the given caching options that
stores cache entries in memory and uses the given HttpClient
for backend requests.config
- cache module optionsclient
- used to make origin requestspublic CachingHttpClient(HttpClient client, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests. However, cached
response bodies are managed using the given ResourceFactory
.client
- used to make origin requestsresourceFactory
- how to manage cached response bodiesstorage
- where to store cache entriesconfig
- cache module optionspublic CachingHttpClient(HttpClient client, HttpCacheStorage storage, CacheConfig config)
CachingHttpClient
with the given caching options
that stores cache entries in the provided storage backend and uses
the given HttpClient
for backend requests.client
- used to make origin requestsstorage
- where to store cache entriesconfig
- cache module optionsCachingHttpClient(HttpClient backend, CacheValidityPolicy validityPolicy, ResponseCachingPolicy responseCachingPolicy, HttpCache responseCache, CachedHttpResponseGenerator responseGenerator, CacheableRequestPolicy cacheableRequestPolicy, CachedResponseSuitabilityChecker suitabilityChecker, ConditionalRequestBuilder conditionalRequestBuilder, ResponseProtocolCompliance responseCompliance, RequestProtocolCompliance requestCompliance)
private CachingHttpClient.AsynchronousValidator makeAsynchronousValidator(CacheConfig config)
public long getCacheHits()
HttpRequest
without contacting the origin server.public long getCacheMisses()
public long getCacheUpdates()
public org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request) throws java.io.IOException
HttpClient
execute
in interface HttpClient
target
- the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.request
- the request to executejava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, ResponseHandler<? extends T> responseHandler) throws java.io.IOException
HttpClient
Implementing classes are required to ensure that the content entity
associated with the response is fully consumed and the underlying
connection is released back to the connection manager automatically
in all cases relieving individual ResponseHandler
s from
having to manage resource deallocation internally.
execute
in interface HttpClient
target
- the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.request
- the request to executeresponseHandler
- the response handlerjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws java.io.IOException
HttpClient
Implementing classes are required to ensure that the content entity
associated with the response is fully consumed and the underlying
connection is released back to the connection manager automatically
in all cases relieving individual ResponseHandler
s from
having to manage resource deallocation internally.
execute
in interface HttpClient
target
- the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.request
- the request to executeresponseHandler
- the response handlercontext
- the context to use for the execution, or
null
to use the default contextjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic org.apache.http.HttpResponse execute(HttpUriRequest request) throws java.io.IOException
HttpClient
execute
in interface HttpClient
request
- the request to executejava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic org.apache.http.HttpResponse execute(HttpUriRequest request, org.apache.http.protocol.HttpContext context) throws java.io.IOException
HttpClient
execute
in interface HttpClient
request
- the request to executecontext
- the context to use for the execution, or
null
to use the default contextjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler) throws java.io.IOException
HttpClient
Implementing classes are required to ensure that the content entity
associated with the response is fully consumed and the underlying
connection is released back to the connection manager automatically
in all cases relieving individual ResponseHandler
s from
having to manage resource deallocation internally.
execute
in interface HttpClient
request
- the request to executeresponseHandler
- the response handlerjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorpublic <T> T execute(HttpUriRequest request, ResponseHandler<? extends T> responseHandler, org.apache.http.protocol.HttpContext context) throws java.io.IOException
HttpClient
Implementing classes are required to ensure that the content entity
associated with the response is fully consumed and the underlying
connection is released back to the connection manager automatically
in all cases relieving individual ResponseHandler
s from
having to manage resource deallocation internally.
execute
in interface HttpClient
request
- the request to executeresponseHandler
- the response handlercontext
- the context to use for the execution, or
null
to use the default contextjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorprivate <T> T handleAndConsume(ResponseHandler<? extends T> responseHandler, org.apache.http.HttpResponse response) throws java.lang.Error, java.io.IOException
java.lang.Error
java.io.IOException
public ClientConnectionManager getConnectionManager()
HttpClient
getConnectionManager
in interface HttpClient
public org.apache.http.params.HttpParams getParams()
HttpClient
getParams
in interface HttpClient
public org.apache.http.HttpResponse execute(org.apache.http.HttpHost target, org.apache.http.HttpRequest originalRequest, org.apache.http.protocol.HttpContext context) throws java.io.IOException
HttpClient
execute
in interface HttpClient
target
- the target host for the request.
Implementations may accept null
if they can still determine a route, for example
to a default target or by inspecting the request.originalRequest
- the request to executecontext
- the context to use for the execution, or
null
to use the default contextjava.io.IOException
- in case of a problem or the connection was abortedClientProtocolException
- in case of an http protocol errorprivate org.apache.http.HttpResponse handleCacheHit(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry entry) throws ClientProtocolException, java.io.IOException
ClientProtocolException
java.io.IOException
private org.apache.http.HttpResponse revalidateCacheEntry(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry entry, java.util.Date now) throws ClientProtocolException
ClientProtocolException
private org.apache.http.HttpResponse handleCacheMiss(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context) throws java.io.IOException
java.io.IOException
private HttpCacheEntry satisfyFromCache(org.apache.http.HttpHost target, HttpRequestWrapper request)
private org.apache.http.HttpResponse getFatallyNoncompliantResponse(HttpRequestWrapper request, org.apache.http.protocol.HttpContext context)
private java.util.Map<java.lang.String,Variant> getExistingCacheVariants(org.apache.http.HttpHost target, HttpRequestWrapper request)
private void recordCacheMiss(org.apache.http.HttpHost target, HttpRequestWrapper request)
private void recordCacheHit(org.apache.http.HttpHost target, HttpRequestWrapper request)
private void recordCacheUpdate(org.apache.http.protocol.HttpContext context)
private void flushEntriesInvalidatedByRequest(org.apache.http.HttpHost target, HttpRequestWrapper request)
private org.apache.http.HttpResponse generateCachedResponse(HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry entry, java.util.Date now)
private org.apache.http.HttpResponse handleRevalidationFailure(HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry entry, java.util.Date now)
private org.apache.http.HttpResponse generateGatewayTimeout(org.apache.http.protocol.HttpContext context)
private org.apache.http.HttpResponse unvalidatedCacheHit(HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry entry)
private boolean staleResponseNotAllowed(HttpRequestWrapper request, HttpCacheEntry entry, java.util.Date now)
private boolean mayCallBackend(HttpRequestWrapper request)
private boolean explicitFreshnessRequest(HttpRequestWrapper request, HttpCacheEntry entry, java.util.Date now)
private java.lang.String generateViaHeader(org.apache.http.HttpMessage msg)
private void setResponseStatus(org.apache.http.protocol.HttpContext context, CacheResponseStatus value)
public boolean supportsRangeAndContentRangeHeaders()
CachingHttpClient
implementation
supports byte-range requests as specified by the Range
and Content-Range
headers.true
if byte-range requests are supportedpublic boolean isSharedCache()
CachingHttpClient
is configured as
a shared (public) or non-shared (private) cache. See CacheConfig.setSharedCache(boolean)
.true
if we are behaving as a shared (public)
cachejava.util.Date getCurrentDate()
boolean clientRequestsOurOptions(org.apache.http.HttpRequest request)
org.apache.http.HttpResponse callBackend(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context) throws java.io.IOException
java.io.IOException
private boolean revalidationResponseIsTooOld(org.apache.http.HttpResponse backendResponse, HttpCacheEntry cacheEntry)
org.apache.http.HttpResponse negotiateResponseFromVariants(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, java.util.Map<java.lang.String,Variant> variants) throws java.io.IOException
java.io.IOException
private org.apache.http.HttpResponse retryRequestUnconditionally(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry matchedEntry) throws java.io.IOException
java.io.IOException
private HttpCacheEntry getUpdatedVariantEntry(org.apache.http.HttpHost target, HttpRequestWrapper conditionalRequest, java.util.Date requestDate, java.util.Date responseDate, org.apache.http.HttpResponse backendResponse, Variant matchingVariant, HttpCacheEntry matchedEntry)
private void tryToUpdateVariantMap(org.apache.http.HttpHost target, HttpRequestWrapper request, Variant matchingVariant)
private boolean shouldSendNotModifiedResponse(HttpRequestWrapper request, HttpCacheEntry responseEntry)
org.apache.http.HttpResponse revalidateCacheEntry(org.apache.http.HttpHost target, HttpRequestWrapper request, org.apache.http.protocol.HttpContext context, HttpCacheEntry cacheEntry) throws java.io.IOException, org.apache.http.ProtocolException
java.io.IOException
org.apache.http.ProtocolException
private boolean staleIfErrorAppliesTo(int statusCode)
org.apache.http.HttpResponse handleBackendResponse(org.apache.http.HttpHost target, HttpRequestWrapper request, java.util.Date requestDate, java.util.Date responseDate, org.apache.http.HttpResponse backendResponse) throws java.io.IOException
java.io.IOException
private void storeRequestIfModifiedSinceFor304Response(org.apache.http.HttpRequest request, org.apache.http.HttpResponse backendResponse)
private boolean alreadyHaveNewerCacheEntry(org.apache.http.HttpHost target, org.apache.http.HttpRequest request, org.apache.http.HttpResponse backendResponse)