Example usage for org.apache.http.client.cache HeaderConstants IF_NONE_MATCH

List of usage examples for org.apache.http.client.cache HeaderConstants IF_NONE_MATCH

Introduction

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

Prototype

String IF_NONE_MATCH

To view the source code for org.apache.http.client.cache HeaderConstants IF_NONE_MATCH.

Click Source Link

Usage

From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java

private boolean hasSupportedEtagVadlidator(HttpRequest request) {
    return request.containsHeader(HeaderConstants.IF_NONE_MATCH);
}

From source file:org.apache.http.impl.client.cache.CachedResponseSuitabilityChecker.java

/**
 * Check entry against If-None-Match//from   w ww. ja va  2s  . c  om
 * @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.CachingExec.java

private CloseableHttpResponse generateCachedResponse(final HttpRequestWrapper request,
        final HttpContext context, final HttpCacheEntry entry, final Date now) {
    final CloseableHttpResponse cachedResponse;
    if (request.containsHeader(HeaderConstants.IF_NONE_MATCH)
            || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) {
        cachedResponse = responseGenerator.generateNotModifiedResponse(entry);
    } else {//from  w  w w  . j a  va2 s .c o m
        cachedResponse = responseGenerator.generateResponse(entry);
    }
    setResponseStatus(context, CacheResponseStatus.CACHE_HIT);
    if (validityPolicy.getStalenessSecs(entry, now) > 0L) {
        cachedResponse.addHeader(HeaderConstants.WARNING, "110 localhost \"Response is stale\"");
    }
    return cachedResponse;
}

From source file:org.apache.http.impl.client.cache.CachingHttpAsyncClient.java

private HttpResponse generateCachedResponse(final HttpRequestWrapper request,
        final HttpCacheContext clientContext, final HttpCacheEntry entry, final Date now) {
    final HttpResponse cachedResponse;
    if (request.containsHeader(HeaderConstants.IF_NONE_MATCH)
            || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) {
        cachedResponse = this.responseGenerator.generateNotModifiedResponse(entry);
    } else {/*from   w  w  w  . jav  a2s.  c  o  m*/
        cachedResponse = this.responseGenerator.generateResponse(request, entry);
    }
    setResponseStatus(clientContext, CacheResponseStatus.CACHE_HIT);
    if (this.validityPolicy.getStalenessSecs(entry, now) > 0L) {
        cachedResponse.addHeader("Warning", "110 localhost \"Response is stale\"");
    }
    return cachedResponse;
}

From source file:org.apache.http.impl.client.cache.CachingHttpClient.java

private HttpResponse generateCachedResponse(HttpRequest request, HttpContext context, HttpCacheEntry entry,
        Date now) {//w w w.  j  ava 2s .com
    final HttpResponse cachedResponse;
    if (request.containsHeader(HeaderConstants.IF_NONE_MATCH)
            || request.containsHeader(HeaderConstants.IF_MODIFIED_SINCE)) {
        cachedResponse = responseGenerator.generateNotModifiedResponse(entry);
    } else {
        cachedResponse = responseGenerator.generateResponse(entry);
    }
    setResponseStatus(context, CacheResponseStatus.CACHE_HIT);
    if (validityPolicy.getStalenessSecs(entry, now) > 0L) {
        cachedResponse.addHeader("Warning", "110 localhost \"Response is stale\"");
    }
    return cachedResponse;
}

From source file:org.apache.http.impl.client.cache.ConditionalRequestBuilder.java

/**
 * When a {@link HttpCacheEntry} is stale but 'might' be used as a response
 * to an {@link HttpRequest} we will attempt to revalidate the entry with
 * the origin.  Build the origin {@link HttpRequest} here and return it.
 *
 * @param request the original request from the caller
 * @param cacheEntry the entry that needs to be revalidated
 * @return the wrapped request/*  w w w  .jav a 2s .co  m*/
 * @throws ProtocolException when I am unable to build a new origin request.
 */
public HttpRequest buildConditionalRequest(HttpRequest request, HttpCacheEntry cacheEntry)
        throws ProtocolException {
    RequestWrapper wrapperRequest = new RequestWrapper(request);
    wrapperRequest.resetHeaders();
    Header eTag = cacheEntry.getFirstHeader(HeaderConstants.ETAG);
    if (eTag != null) {
        wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, eTag.getValue());
    }
    Header lastModified = cacheEntry.getFirstHeader(HeaderConstants.LAST_MODIFIED);
    if (lastModified != null) {
        wrapperRequest.setHeader(HeaderConstants.IF_MODIFIED_SINCE, lastModified.getValue());
    }
    boolean mustRevalidate = false;
    for (Header h : cacheEntry.getHeaders(HeaderConstants.CACHE_CONTROL)) {
        for (HeaderElement elt : h.getElements()) {
            if (HeaderConstants.CACHE_CONTROL_MUST_REVALIDATE.equalsIgnoreCase(elt.getName())
                    || HeaderConstants.CACHE_CONTROL_PROXY_REVALIDATE.equalsIgnoreCase(elt.getName())) {
                mustRevalidate = true;
                break;
            }
        }
    }
    if (mustRevalidate) {
        wrapperRequest.addHeader("Cache-Control", "max-age=0");
    }
    return wrapperRequest;

}

From source file:org.apache.http.impl.client.cache.ConditionalRequestBuilder.java

/**
 * When a {@link HttpCacheEntry} does not exist for a specific {@link HttpRequest}
 * we attempt to see if an existing {@link HttpCacheEntry} is appropriate by building
 * a conditional {@link HttpRequest} using the variants' ETag values.  If no such values
 * exist, the request is unmodified//from w  ww. ja  v a  2  s.c o  m
 *
 * @param request the original request from the caller
 * @param variants
 * @return the wrapped request
 */
public HttpRequest buildConditionalRequestFromVariants(HttpRequest request, Map<String, Variant> variants) {
    RequestWrapper wrapperRequest;
    try {
        wrapperRequest = new RequestWrapper(request);
    } catch (ProtocolException pe) {
        log.warn("unable to build conditional request", pe);
        return request;
    }
    wrapperRequest.resetHeaders();

    // we do not support partial content so all etags are used
    StringBuilder etags = new StringBuilder();
    boolean first = true;
    for (String etag : variants.keySet()) {
        if (!first) {
            etags.append(",");
        }
        first = false;
        etags.append(etag);
    }

    wrapperRequest.setHeader(HeaderConstants.IF_NONE_MATCH, etags.toString());
    return wrapperRequest;
}