Example usage for org.apache.http.client.cache HttpCacheEntry getFirstHeader

List of usage examples for org.apache.http.client.cache HttpCacheEntry getFirstHeader

Introduction

In this page you can find the example usage for org.apache.http.client.cache HttpCacheEntry getFirstHeader.

Prototype

public Header getFirstHeader(String name) 

Source Link

Document

Returns the first header from the origin response with the given name.

Usage

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;
}