Class CachedResponseSuitabilityChecker


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

      • 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
    • Constructor Detail

      • CachedResponseSuitabilityChecker

        CachedResponseSuitabilityChecker​(CacheConfig config)
    • Method Detail

      • isFreshEnough

        private boolean isFreshEnough​(HttpCacheEntry entry,
                                      org.apache.hc.core5.http.HttpRequest request,
                                      java.time.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,
                                               java.time.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,
                                            java.time.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,
                                                     java.time.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,
                                          java.lang.String headerName)