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 floatprivate final org.apache.hc.core5.util.TimeValueprivate static final org.slf4j.Loggerprivate final booleanprivate final booleanprivate final CacheValidityPolicy -
Constructor Summary
ConstructorsConstructorDescriptionCachedResponseSuitabilityChecker(CacheValidityPolicy validityStrategy, CacheConfig config) -
Method Summary
Modifier and TypeMethodDescriptionbooleanallConditionalsMatch(org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now) Check that conditionals that are part of this request matchprivate booleanbooleancanCachedResponseBeUsed(org.apache.hc.core5.http.HttpHost host, org.apache.hc.core5.http.HttpRequest request, HttpCacheEntry entry, Instant now) Determine if I can utilize aHttpCacheEntryto respond to the givenHttpRequestprivate booleanprivate 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, 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, Instant now) private booleanisGet(org.apache.hc.core5.http.HttpRequest request) private booleanlastModifiedValidatorMatches(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 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
-
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:
trueif 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:
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, 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
-