Class CachedResponseSuitabilityChecker

java.lang.Object
org.apache.hc.client5.http.impl.cache.CachedResponseSuitabilityChecker

class CachedResponseSuitabilityChecker extends Object
Determines whether a given HttpCacheEntry is suitable to be used as a response for a given HttpRequest.
  • Field Details

    • LOG

      private static final org.slf4j.Logger LOG
    • sharedCache

      private final boolean sharedCache
    • useHeuristicCaching

      private final boolean useHeuristicCaching
    • heuristicCoefficient

      private final float heuristicCoefficient
    • heuristicDefaultLifetime

      private final org.apache.hc.core5.util.TimeValue heuristicDefaultLifetime
    • validityStrategy

      private final CacheValidityPolicy validityStrategy
  • Constructor Details

    • CachedResponseSuitabilityChecker

      CachedResponseSuitabilityChecker(CacheValidityPolicy validityStrategy, CacheConfig config)
    • CachedResponseSuitabilityChecker

      CachedResponseSuitabilityChecker(CacheConfig config)
  • Method Details

    • isFreshEnough

      private boolean isFreshEnough(HttpCacheEntry entry, org.apache.hc.core5.http.HttpRequest request, Instant now)
    • originInsistsOnFreshness

      private boolean originInsistsOnFreshness(HttpCacheEntry entry)
    • getMaxStale

      private long getMaxStale(org.apache.hc.core5.http.HttpRequest request)
    • canCachedResponseBeUsed

      public boolean canCachedResponseBeUsed(org.apache.hc.core5.http.HttpHost host, org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now)
      Determine if I can utilize a HttpCacheEntry to respond to the given HttpRequest
      Parameters:
      host - HttpHost
      request - HttpRequest
      entry - HttpCacheEntry
      now - Right now in time
      Returns:
      boolean yes/no answer
    • isGet

      private boolean isGet(org.apache.hc.core5.http.HttpRequest request)
    • entryIsNotA204Response

      private boolean entryIsNotA204Response(HttpCacheEntry entry)
    • cacheEntryDoesNotContainMethodAndEntity

      private boolean cacheEntryDoesNotContainMethodAndEntity(HttpCacheEntry entry)
    • hasUnsupportedCacheEntryForGet

      private boolean hasUnsupportedCacheEntryForGet(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry)
    • isConditional

      public boolean isConditional(org.apache.hc.core5.http.HttpRequest request)
      Is this request the type of conditional request we support?
      Parameters:
      request - The current httpRequest being made
      Returns:
      true if the request is supported
    • allConditionalsMatch

      public boolean allConditionalsMatch(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now)
      Check that conditionals that are part of this request match
      Parameters:
      request - The current httpRequest being made
      entry - the cache entry
      now - right NOW in time
      Returns:
      true if the request matches all conditionals
    • hasUnsupportedConditionalHeaders

      private boolean hasUnsupportedConditionalHeaders(org.apache.hc.core5.http.HttpRequest request)
    • hasSupportedEtagValidator

      private boolean hasSupportedEtagValidator(org.apache.hc.core5.http.HttpRequest request)
    • hasSupportedLastModifiedValidator

      private boolean hasSupportedLastModifiedValidator(org.apache.hc.core5.http.HttpRequest request)
    • etagValidatorMatches

      private boolean etagValidatorMatches(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry)
      Check entry against If-None-Match
      Parameters:
      request - The current httpRequest being made
      entry - the cache entry
      Returns:
      boolean does the etag validator match
    • lastModifiedValidatorMatches

      private boolean lastModifiedValidatorMatches(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now)
      Check entry against If-Modified-Since, if If-Modified-Since is in the future it is invalid as per http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
      Parameters:
      request - The current httpRequest being made
      entry - the cache entry
      now - right NOW in time
      Returns:
      boolean Does the last modified header match
    • hasValidDateField

      private boolean hasValidDateField(org.apache.hc.core5.http.HttpRequest request, String headerName)