Class CachingExec
- java.lang.Object
-
- org.apache.http.impl.client.cache.CachingExec
-
- All Implemented Interfaces:
ClientExecChain
@Contract(threading=SAFE_CONDITIONAL) public class CachingExec extends java.lang.Object implements ClientExecChain
Request executor in the request execution chain that is responsible for transparent 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.
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 providedEhCache
andmemcached
storage backends.Further responsibilities such as communication with the opposite endpoint is delegated to the next executor in the request execution chain.
- Since:
- 4.3
-
-
Constructor Summary
Constructors Constructor Description CachingExec(ClientExecChain backend)
CachingExec(ClientExecChain backend, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
CachingExec(ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config)
CachingExec(ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config, org.apache.http.impl.client.cache.AsynchronousValidator asynchRevalidator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description CloseableHttpResponse
execute(HttpRoute route, HttpRequestWrapper request)
CloseableHttpResponse
execute(HttpRoute route, HttpRequestWrapper request, HttpClientContext context)
CloseableHttpResponse
execute(HttpRoute route, HttpRequestWrapper request, HttpClientContext context, HttpExecutionAware execAware)
Executes th request either by transmitting it to the target server or by passing it onto the next executor in the request execution chain.long
getCacheHits()
Reports the number of times that the cache successfully responded to anHttpRequest
without contacting the origin server.long
getCacheMisses()
Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.long
getCacheUpdates()
Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.boolean
supportsRangeAndContentRangeHeaders()
Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.
-
-
-
Constructor Detail
-
CachingExec
public CachingExec(ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config)
-
CachingExec
public CachingExec(ClientExecChain backend, org.apache.http.impl.client.cache.HttpCache cache, CacheConfig config, org.apache.http.impl.client.cache.AsynchronousValidator asynchRevalidator)
-
CachingExec
public CachingExec(ClientExecChain backend, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)
-
CachingExec
public CachingExec(ClientExecChain backend)
-
-
Method Detail
-
getCacheHits
public long getCacheHits()
Reports the number of times that the cache successfully responded to anHttpRequest
without contacting the origin server.- Returns:
- the number of cache hits
-
getCacheMisses
public long getCacheMisses()
Reports the number of times that the cache contacted the origin server because it had no appropriate response cached.- Returns:
- the number of cache misses
-
getCacheUpdates
public long getCacheUpdates()
Reports the number of times that the cache was able to satisfy a response by revalidating an existing but stale cache entry.- Returns:
- the number of cache revalidations
-
execute
public CloseableHttpResponse execute(HttpRoute route, HttpRequestWrapper request) throws java.io.IOException, HttpException
- Throws:
java.io.IOException
HttpException
-
execute
public CloseableHttpResponse execute(HttpRoute route, HttpRequestWrapper request, HttpClientContext context) throws java.io.IOException, HttpException
- Throws:
java.io.IOException
HttpException
-
execute
public CloseableHttpResponse execute(HttpRoute route, HttpRequestWrapper request, HttpClientContext context, HttpExecutionAware execAware) throws java.io.IOException, HttpException
Description copied from interface:ClientExecChain
Executes th request either by transmitting it to the target server or by passing it onto the next executor in the request execution chain.- Specified by:
execute
in interfaceClientExecChain
- Parameters:
route
- connection route.request
- current request.context
- current HTTP context.execAware
- receiver of notifications of blocking I/O operations.- Returns:
- HTTP response either received from the opposite endpoint or generated locally.
- Throws:
java.io.IOException
- in case of a I/O error. (this type of exceptions are potentially recoverable).HttpException
- in case of an HTTP protocol error (usually this type of exceptions are non-recoverable).
-
supportsRangeAndContentRangeHeaders
public boolean supportsRangeAndContentRangeHeaders()
Reports whether thisCachingHttpClient
implementation supports byte-range requests as specified by theRange
andContent-Range
headers.- Returns:
true
if byte-range requests are supported
-
-