org.apache.http.impl.client.cache

## Class CachingExec

- java.lang.Object
- - org.apache.http.impl.client.cache.CachingExec

- All Implemented Interfaces:
    ClientExecChain

      @Contract(threading=SAFE_CONDITIONAL)
      public class CachingExec
      extends 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 provided `EhCache` and `memcached` 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 and Description
    `CachingExec(ClientExecChain backend)`
    `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)`
    `CachingExec(ClientExecChain backend, ResourceFactory resourceFactory, HttpCacheStorage storage, CacheConfig config)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and 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 an `HttpRequest` 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 this `CachingHttpClient` implementation supports byte-range requests as specified by the `Range` and `Content-Range` headers.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### 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 an `HttpRequest` 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 IOException,
                                               org.apache.http.HttpException

      Throws:
        `IOException`
        `org.apache.http.HttpException`

    - #### execute

          public CloseableHttpResponse execute(HttpRoute route,
                                      HttpRequestWrapper request,
                                      HttpClientContext context)
                                        throws IOException,
                                               org.apache.http.HttpException

      Throws:
        `IOException`
        `org.apache.http.HttpException`

    - #### execute

          public CloseableHttpResponse execute(HttpRoute route,
                                      HttpRequestWrapper request,
                                      HttpClientContext context,
                                      HttpExecutionAware execAware)
                                        throws IOException,
                                               org.apache.http.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 interface `ClientExecChain`
      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:
        `IOException` - in case of a I/O error. (this type of exceptions are potentially recoverable).
        `org.apache.http.HttpException` - in case of an HTTP protocol error (usually this type of exceptions are non-recoverable).

    - #### supportsRangeAndContentRangeHeaders

          public boolean supportsRangeAndContentRangeHeaders()

      Reports whether this `CachingHttpClient` implementation supports byte-range requests as specified by the `Range` and `Content-Range` headers.
      Returns:
        `true` if byte-range requests are supported

Copyright © 1999–2022 The Apache Software Foundation. All rights reserved.