Example usage for org.apache.http.impl.client.cache.memcached MemcachedCacheEntry getHttpCacheEntry

List of usage examples for org.apache.http.impl.client.cache.memcached MemcachedCacheEntry getHttpCacheEntry

Introduction

In this page you can find the example usage for org.apache.http.impl.client.cache.memcached MemcachedCacheEntry getHttpCacheEntry.

Prototype

HttpCacheEntry getHttpCacheEntry();

Source Link

Document

Returns the HttpCacheEntry associated with this entry.

Usage

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

public HttpCacheEntry getEntry(final String url) throws IOException {
    final String key = getCacheKey(url);
    if (key == null) {
        return null;
    }/*from  w  ww .j av  a  2s.c  o  m*/
    try {
        final MemcachedCacheEntry mce = reconstituteEntry(client.get(key));
        if (mce == null || !url.equals(mce.getStorageKey())) {
            return null;
        }
        return mce.getHttpCacheEntry();
    } catch (final OperationTimeoutException ex) {
        throw new MemcachedOperationTimeoutException(ex);
    }
}

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

public void updateEntry(final String url, final HttpCacheUpdateCallback callback)
        throws HttpCacheUpdateException, IOException {
    int numRetries = 0;
    final String key = getCacheKey(url);
    if (key == null) {
        throw new HttpCacheUpdateException("couldn't generate cache key");
    }/*from www  .j a  va 2 s . co  m*/
    do {
        try {
            final CASValue<Object> v = client.gets(key);
            MemcachedCacheEntry mce = (v == null) ? null : reconstituteEntry(v.getValue());
            if (mce != null && (!url.equals(mce.getStorageKey()))) {
                mce = null;
            }
            final HttpCacheEntry existingEntry = (mce == null) ? null : mce.getHttpCacheEntry();
            final HttpCacheEntry updatedEntry = callback.update(existingEntry);

            if (existingEntry == null) {
                putEntry(url, updatedEntry);
                return;

            } else {
                final byte[] updatedBytes = serializeEntry(url, updatedEntry);
                final CASResponse casResult = client.cas(key, v.getCas(), updatedBytes);
                if (casResult != CASResponse.OK) {
                    numRetries++;
                } else {
                    return;
                }
            }
        } catch (final OperationTimeoutException ex) {
            throw new MemcachedOperationTimeoutException(ex);
        }
    } while (numRetries <= maxUpdateRetries);

    throw new HttpCacheUpdateException("Failed to update");
}