Index: httpclient-cache/src/test/java/org/apache/http/impl/client/cache/ehcache/TestEhcacheHttpCache.java =================================================================== --- httpclient-cache/src/test/java/org/apache/http/impl/client/cache/ehcache/TestEhcacheHttpCache.java (revision 0) +++ httpclient-cache/src/test/java/org/apache/http/impl/client/cache/ehcache/TestEhcacheHttpCache.java (revision 0) @@ -0,0 +1,59 @@ +package org.apache.http.impl.client.cache.ehcache; + +import junit.framework.TestCase; +import net.sf.ehcache.Ehcache; +import net.sf.ehcache.Element; + +import org.apache.http.client.cache.HttpCacheOperationException; +import org.apache.http.impl.client.cache.CacheEntry; +import org.easymock.EasyMock; + +public class TestEhcacheHttpCache extends TestCase { + + private Ehcache mockCache; + private EhcacheHttpCache impl; + + public void setUp() { + mockCache = EasyMock.createMock(Ehcache.class); + impl = new EhcacheHttpCache(mockCache); + } + + public void testCachePut() throws HttpCacheOperationException { + final String key = "foo"; + final CacheEntry value = new CacheEntry(null, null, null, null, new byte[]{}, 0, null); + + Element e = new Element(key, value); + + mockCache.put(e); + + EasyMock.replay(mockCache); + impl.putEntry(key, value); + EasyMock.verify(mockCache); + } + + public void testCacheGet() throws HttpCacheOperationException { + final String key = "foo"; + final CacheEntry cachedValue = new CacheEntry(null, null, null, null, new byte[]{}, 0, null); + Element element = new Element(key, cachedValue); + + EasyMock.expect(mockCache.get(key)) + .andReturn(element); + + EasyMock.replay(mockCache); + CacheEntry resultingEntry = impl.getEntry(key); + EasyMock.verify(mockCache); + + assertSame(cachedValue, resultingEntry); + } + + public void testCacheRemove() throws HttpCacheOperationException { + final String key = "foo"; + + EasyMock.expect(mockCache.remove(key)).andReturn(true); + + EasyMock.replay(mockCache); + impl.removeEntry(key); + EasyMock.verify(mockCache); + } + +} Index: httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCache.java =================================================================== --- httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCache.java (revision 0) +++ httpclient-cache/src/main/java/org/apache/http/impl/client/cache/ehcache/EhcacheHttpCache.java (revision 0) @@ -0,0 +1,42 @@ +package org.apache.http.impl.client.cache.ehcache; + +import net.sf.ehcache.Ehcache; +import net.sf.ehcache.Element; + +import org.apache.http.client.cache.HttpCache; +import org.apache.http.client.cache.HttpCacheOperationException; +import org.apache.http.client.cache.HttpCacheUpdateCallback; +import org.apache.http.impl.client.cache.CacheEntry; + +public class EhcacheHttpCache implements HttpCache { + private Ehcache cache; + + public EhcacheHttpCache(Ehcache cache) { + this.cache = cache; + + } + + public void putEntry(String url, CacheEntry entry) + throws HttpCacheOperationException { + cache.put(new Element(url, entry)); + } + + public CacheEntry getEntry(String url) + throws HttpCacheOperationException { + Element e = cache.get(url); + return (e != null) ? (CacheEntry)e.getValue() : null; + } + + public void removeEntry(String url) throws HttpCacheOperationException { + cache.remove(url); + } + + public void updateCacheEntry(String url, + HttpCacheUpdateCallback callback) + throws HttpCacheOperationException { + Element e = cache.get(url); + CacheEntry existingEntry = (e != null) ? (CacheEntry)e.getValue() : null; + CacheEntry updated = callback.getUpdatedEntry(existingEntry); + cache.put(new Element(url, updated)); + } +} \ No newline at end of file Index: httpclient-cache/pom.xml =================================================================== --- httpclient-cache/pom.xml (revision 984829) +++ httpclient-cache/pom.xml (working copy) @@ -79,6 +79,16 @@ ${easymock.version} test + + net.sf.ehcache + ehcache-core + 2.2.0 + + + org.slf4j + slf4j-simple + 1.5.8 +