List of usage examples for org.apache.http.client.cache HttpCacheEntry getFirstHeader
public Header getFirstHeader(String name)
From source file:org.apache.http.impl.client.cache.BasicHttpCache.java
private void addVariantWithEtag(String variantKey, String variantCacheKey, Map<String, Variant> variants) throws IOException { HttpCacheEntry entry = storage.getEntry(variantCacheKey); if (entry == null) return;/* w ww . jav a 2 s . com*/ Header etagHeader = entry.getFirstHeader(HeaderConstants.ETAG); if (etagHeader == null) return; variants.put(etagHeader.getValue(), new Variant(variantKey, variantCacheKey, entry)); }
From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java
/** * Check entry against If-None-Match//from www .j a va2 s .co m * @param request * @param entry * @return */ private boolean etagValidtorMatches(HttpRequest request, HttpCacheEntry entry) { Header etagHeader = entry.getFirstHeader(HeaderConstants.ETAG); String etag = (etagHeader != null) ? etagHeader.getValue() : null; Header[] ifNoneMatch = request.getHeaders(HeaderConstants.IF_NONE_MATCH); if (ifNoneMatch != null) { for (Header h : ifNoneMatch) { for (HeaderElement elt : h.getElements()) { String reqEtag = elt.toString(); if (("*".equals(reqEtag) && etag != null) || reqEtag.equals(etag)) { return true; } } } } return false; }
From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java
/** * 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 * @param request/*w w w . ja va 2s . c o m*/ * @param entry * @param now * @return */ private boolean lastModifiedValidatorMatches(HttpRequest request, HttpCacheEntry entry, Date now) { Header lastModifiedHeader = entry.getFirstHeader(HeaderConstants.LAST_MODIFIED); Date lastModified = null; try { if (lastModifiedHeader != null) { lastModified = DateUtils.parseDate(lastModifiedHeader.getValue()); } } catch (DateParseException dpe) { // nop } if (lastModified == null) { return false; } for (Header h : request.getHeaders(HeaderConstants.IF_MODIFIED_SINCE)) { try { Date ifModifiedSince = DateUtils.parseDate(h.getValue()); if (ifModifiedSince.after(now) || lastModified.after(ifModifiedSince)) { return false; } } catch (DateParseException dpe) { // nop } } return true; }
From source file:org.apache.http.impl.client.cache.CacheInvalidator.java
private boolean responseAndEntryEtagsDiffer(HttpResponse response, HttpCacheEntry entry) { Header entryEtag = entry.getFirstHeader("ETag"); Header responseEtag = response.getFirstHeader("ETag"); if (entryEtag == null || responseEtag == null) return false; return (!entryEtag.getValue().equals(responseEtag.getValue())); }
From source file:org.apache.http.impl.client.cache.CacheInvalidator.java
private boolean responseDateNewerThanEntryDate(HttpResponse response, HttpCacheEntry entry) { Header entryDateHeader = entry.getFirstHeader("Date"); Header responseDateHeader = response.getFirstHeader("Date"); if (entryDateHeader == null || responseDateHeader == null) { return false; }// w w w . j a v a 2s . c o m try { Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); Date responseDate = DateUtils.parseDate(responseDateHeader.getValue()); return responseDate.after(entryDate); } catch (DateParseException e) { return false; } }
From source file:org.apache.http.impl.client.cache.CachingExec.java
private boolean revalidationResponseIsTooOld(final HttpResponse backendResponse, final HttpCacheEntry cacheEntry) { final Header entryDateHeader = cacheEntry.getFirstHeader(HTTP.DATE_HEADER); final Header responseDateHeader = backendResponse.getFirstHeader(HTTP.DATE_HEADER); if (entryDateHeader != null && responseDateHeader != null) { final Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); final Date respDate = DateUtils.parseDate(responseDateHeader.getValue()); if (entryDate == null || respDate == null) { // either backend response or cached entry did not have a valid // Date header, so we can't tell if they are out of order // according to the origin clock; thus we can skip the // unconditional retry recommended in 13.2.6 of RFC 2616. return false; }/*ww w . j a v a 2 s. co m*/ if (respDate.before(entryDate)) { return true; } } return false; }
From source file:org.apache.http.impl.client.cache.CachingExec.java
private boolean alreadyHaveNewerCacheEntry(final HttpHost target, final HttpRequestWrapper request, final HttpResponse backendResponse) { HttpCacheEntry existing = null; try {//from w w w. j ava2 s . co m existing = responseCache.getCacheEntry(target, request); } catch (final IOException ioe) { // nop } if (existing == null) { return false; } final Header entryDateHeader = existing.getFirstHeader(HTTP.DATE_HEADER); if (entryDateHeader == null) { return false; } final Header responseDateHeader = backendResponse.getFirstHeader(HTTP.DATE_HEADER); if (responseDateHeader == null) { return false; } final Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); final Date responseDate = DateUtils.parseDate(responseDateHeader.getValue()); if (entryDate == null || responseDate == null) { return false; } return responseDate.before(entryDate); }
From source file:org.apache.http.impl.client.cache.CachingHttpAsyncClient.java
private boolean revalidationResponseIsTooOld(final HttpResponse backendResponse, final HttpCacheEntry cacheEntry) { final Header entryDateHeader = cacheEntry.getFirstHeader(HTTP.DATE_HEADER); final Header responseDateHeader = backendResponse.getFirstHeader(HTTP.DATE_HEADER); if (entryDateHeader != null && responseDateHeader != null) { final Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); final Date respDate = DateUtils.parseDate(responseDateHeader.getValue()); if (respDate != null && respDate.before(entryDate)) { return true; }/*from w w w. j av a2 s .com*/ } return false; }
From source file:org.apache.http.impl.client.cache.CachingHttpAsyncClient.java
private boolean alreadyHaveNewerCacheEntry(final HttpHost target, final HttpRequest request, final HttpResponse backendResponse) { HttpCacheEntry existing = null; try {// w ww . j a va2 s . c o m existing = this.responseCache.getCacheEntry(target, request); } catch (final IOException ioe) { // nop } if (existing == null) { return false; } final Header entryDateHeader = existing.getFirstHeader(HTTP.DATE_HEADER); if (entryDateHeader == null) { return false; } final Header responseDateHeader = backendResponse.getFirstHeader(HTTP.DATE_HEADER); if (responseDateHeader == null) { return false; } final Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); final Date responseDate = DateUtils.parseDate(responseDateHeader.getValue()); return responseDate != null && responseDate.before(entryDate); }
From source file:org.apache.http.impl.client.cache.CachingHttpClient.java
private boolean revalidationResponseIsTooOld(HttpResponse backendResponse, HttpCacheEntry cacheEntry) { final Header entryDateHeader = cacheEntry.getFirstHeader("Date"); final Header responseDateHeader = backendResponse.getFirstHeader("Date"); if (entryDateHeader != null && responseDateHeader != null) { try {//w w w.j a v a 2 s . c om Date entryDate = DateUtils.parseDate(entryDateHeader.getValue()); Date respDate = DateUtils.parseDate(responseDateHeader.getValue()); if (respDate.before(entryDate)) return true; } catch (DateParseException e) { // either backend response or cached entry did not have a valid // Date header, so we can't tell if they are out of order // according to the origin clock; thus we can skip the // unconditional retry recommended in 13.2.6 of RFC 2616. } } return false; }