Class CachedResponseSuitabilityChecker
- java.lang.Object
-
- org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker
-
@Contract(threading=IMMUTABLE_CONDITIONAL) class CachedResponseSuitabilityChecker extends java.lang.Object
Determines whether a givenHttpCacheEntry
is suitable to be used as a response for a givenHttpRequest
.- Since:
- 4.1
-
-
Field Summary
Fields Modifier and Type Field Description private float
heuristicCoefficient
private long
heuristicDefaultLifetime
private org.apache.commons.logging.Log
log
private boolean
sharedCache
private boolean
useHeuristicCaching
private CacheValidityPolicy
validityStrategy
-
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 boolean
allConditionalsMatch(org.apache.http.HttpRequest request, HttpCacheEntry entry, java.util.Date now)
Check that conditionals that are part of this request matchprivate boolean
cacheEntryDoesNotContainMethodAndEntity(HttpCacheEntry entry)
boolean
canCachedResponseBeUsed(org.apache.http.HttpHost host, org.apache.http.HttpRequest request, HttpCacheEntry entry, java.util.Date now)
Determine if I can utilize aHttpCacheEntry
to respond to the givenHttpRequest
private boolean
entryIsNotA204Response(HttpCacheEntry entry)
private boolean
etagValidatorMatches(org.apache.http.HttpRequest request, HttpCacheEntry entry)
Check entry against If-None-Matchprivate long
getMaxStale(org.apache.http.HttpRequest request)
private boolean
hasSupportedEtagValidator(org.apache.http.HttpRequest request)
private boolean
hasSupportedLastModifiedValidator(org.apache.http.HttpRequest request)
private boolean
hasUnsupportedCacheEntryForGet(org.apache.http.HttpRequest request, HttpCacheEntry entry)
private boolean
hasUnsupportedConditionalHeaders(org.apache.http.HttpRequest request)
private boolean
hasValidDateField(org.apache.http.HttpRequest request, java.lang.String headerName)
boolean
isConditional(org.apache.http.HttpRequest request)
Is this request the type of conditional request we support?private boolean
isFreshEnough(HttpCacheEntry entry, org.apache.http.HttpRequest request, java.util.Date now)
private boolean
isGet(org.apache.http.HttpRequest request)
private boolean
lastModifiedValidatorMatches(org.apache.http.HttpRequest request, HttpCacheEntry entry, java.util.Date 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
originInsistsOnFreshness(HttpCacheEntry entry)
-
-
-
Field Detail
-
log
private final org.apache.commons.logging.Log log
-
sharedCache
private final boolean sharedCache
-
useHeuristicCaching
private final boolean useHeuristicCaching
-
heuristicCoefficient
private final float heuristicCoefficient
-
heuristicDefaultLifetime
private final long 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.http.HttpRequest request, java.util.Date now)
-
originInsistsOnFreshness
private boolean originInsistsOnFreshness(HttpCacheEntry entry)
-
getMaxStale
private long getMaxStale(org.apache.http.HttpRequest request)
-
canCachedResponseBeUsed
public boolean canCachedResponseBeUsed(org.apache.http.HttpHost host, org.apache.http.HttpRequest request, HttpCacheEntry entry, java.util.Date 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.http.HttpRequest request)
-
entryIsNotA204Response
private boolean entryIsNotA204Response(HttpCacheEntry entry)
-
cacheEntryDoesNotContainMethodAndEntity
private boolean cacheEntryDoesNotContainMethodAndEntity(HttpCacheEntry entry)
-
hasUnsupportedCacheEntryForGet
private boolean hasUnsupportedCacheEntryForGet(org.apache.http.HttpRequest request, HttpCacheEntry entry)
-
isConditional
public boolean isConditional(org.apache.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.http.HttpRequest request, HttpCacheEntry entry, java.util.Date 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.http.HttpRequest request)
-
hasSupportedEtagValidator
private boolean hasSupportedEtagValidator(org.apache.http.HttpRequest request)
-
hasSupportedLastModifiedValidator
private boolean hasSupportedLastModifiedValidator(org.apache.http.HttpRequest request)
-
etagValidatorMatches
private boolean etagValidatorMatches(org.apache.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.http.HttpRequest request, HttpCacheEntry entry, java.util.Date 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.http.HttpRequest request, java.lang.String headerName)
-
-