Class CachedResponseSuitabilityChecker
- java.lang.Object
-
- org.apache.hc.client5.http.impl.cache.CachedResponseSuitabilityChecker
-
class CachedResponseSuitabilityChecker extends java.lang.ObjectDetermines whether a givenHttpCacheEntryis suitable to be used as a response for a givenHttpRequest.
-
-
Field Summary
Fields Modifier and Type Field Description private floatheuristicCoefficientprivate org.apache.hc.core5.util.TimeValueheuristicDefaultLifetimeprivate static org.slf4j.LoggerLOGprivate booleansharedCacheprivate booleanuseHeuristicCachingprivate CacheValidityPolicyvalidityStrategy
-
Constructor Summary
Constructors Constructor Description CachedResponseSuitabilityChecker(CacheConfig config)CachedResponseSuitabilityChecker(CacheValidityPolicy validityStrategy, CacheConfig config)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanallConditionalsMatch(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, java.time.Instant now)Check that conditionals that are part of this request matchprivate booleancacheEntryDoesNotContainMethodAndEntity(HttpCacheEntry entry)booleancanCachedResponseBeUsed(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 aHttpCacheEntryto respond to the givenHttpRequestprivate booleanentryIsNotA204Response(HttpCacheEntry entry)private booleanetagValidatorMatches(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry)Check entry against If-None-Matchprivate longgetMaxStale(org.apache.hc.core5.http.HttpRequest request)private booleanhasSupportedEtagValidator(org.apache.hc.core5.http.HttpRequest request)private booleanhasSupportedLastModifiedValidator(org.apache.hc.core5.http.HttpRequest request)private booleanhasUnsupportedCacheEntryForGet(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry)private booleanhasUnsupportedConditionalHeaders(org.apache.hc.core5.http.HttpRequest request)private booleanhasValidDateField(org.apache.hc.core5.http.HttpRequest request, java.lang.String headerName)booleanisConditional(org.apache.hc.core5.http.HttpRequest request)Is this request the type of conditional request we support?private booleanisFreshEnough(HttpCacheEntry entry, org.apache.hc.core5.http.HttpRequest request, java.time.Instant now)private booleanisGet(org.apache.hc.core5.http.HttpRequest request)private booleanlastModifiedValidatorMatches(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.htmlprivate booleanoriginInsistsOnFreshness(HttpCacheEntry entry)
-
-
-
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
-
validityStrategy
private final CacheValidityPolicy validityStrategy
-
-
Constructor Detail
-
CachedResponseSuitabilityChecker
CachedResponseSuitabilityChecker(CacheValidityPolicy validityStrategy, CacheConfig config)
-
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 aHttpCacheEntryto respond to the givenHttpRequest- Parameters:
host-HttpHostrequest-HttpRequestentry-HttpCacheEntrynow- 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:
trueif 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 madeentry- the cache entrynow- right NOW in time- Returns:
trueif 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, 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 madeentry- the cache entrynow- 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)
-
-