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

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

Introduction

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

Prototype

String getStorageKey();

Source Link

Document

Returns the storage key 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.  jav  a2 s.  com
    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   w w w  . j a  v  a  2  s.  c  o 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");
}