Class CachedResponseSuitabilityChecker
java.lang.Object
org.apache.hc.client5.http.impl.cache.CachedResponseSuitabilityChecker
Determines whether a given
HttpCacheEntry
is suitable to be
used as a response for a given HttpRequest
.-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final float
private final org.apache.hc.core5.util.TimeValue
private static final org.slf4j.Logger
private final boolean
private final boolean
private final CacheValidityPolicy
-
Constructor Summary
ConstructorsConstructorDescriptionCachedResponseSuitabilityChecker
(CacheValidityPolicy validityStrategy, CacheConfig config) -
Method Summary
Modifier and TypeMethodDescriptionboolean
allConditionalsMatch
(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now) Check that conditionals that are part of this request matchprivate boolean
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 aHttpCacheEntry
to respond to the givenHttpRequest
private boolean
private boolean
etagValidatorMatches
(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry) Check entry against If-None-Matchprivate long
getMaxStale
(org.apache.hc.core5.http.HttpRequest request) private boolean
hasSupportedEtagValidator
(org.apache.hc.core5.http.HttpRequest request) private boolean
hasSupportedLastModifiedValidator
(org.apache.hc.core5.http.HttpRequest request) private boolean
hasUnsupportedCacheEntryForGet
(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry) private boolean
hasUnsupportedConditionalHeaders
(org.apache.hc.core5.http.HttpRequest request) private boolean
hasValidDateField
(org.apache.hc.core5.http.HttpRequest request, String headerName) boolean
isConditional
(org.apache.hc.core5.http.HttpRequest request) Is this request the type of conditional request we support?private boolean
isFreshEnough
(HttpCacheEntry entry, org.apache.hc.core5.http.HttpRequest request, Instant now) private boolean
isGet
(org.apache.hc.core5.http.HttpRequest request) 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.htmlprivate boolean
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
useHeuristicCaching
private final boolean useHeuristicCaching -
heuristicCoefficient
private final float heuristicCoefficient -
heuristicDefaultLifetime
private final org.apache.hc.core5.util.TimeValue heuristicDefaultLifetime -
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
-
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 aHttpCacheEntry
to respond to the givenHttpRequest
- 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
-
cacheEntryDoesNotContainMethodAndEntity
-
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 madeentry
- the cache entrynow
- 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 madeentry
- 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 madeentry
- the cache entrynow
- right NOW in time- Returns:
- boolean Does the last modified header match
-
hasValidDateField
-