diff --git a/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java b/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java index 60ba4f5f..17fe3f0c 100644 --- a/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java +++ b/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java @@ -81,6 +81,12 @@ public class CouchbaseCache implements Cache { return (result != null ? new SimpleValueWrapper(result) : null); } + @SuppressWarnings("unchecked") + public final T get(final Object key, final Class clazz) { + String documentId = key.toString(); + return (T) client.get(documentId); + } + /** * Store a object in Couchbase. * diff --git a/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java b/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java index a7b5f282..9d87518a 100644 --- a/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java +++ b/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java @@ -25,6 +25,8 @@ import org.springframework.data.couchbase.TestApplicationConfig; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import java.io.Serializable; + import static org.junit.Assert.*; /** @@ -77,6 +79,21 @@ public class CouchbaseCacheTests { assertEquals(value, loaded.get()); } + @Test + public void testGetSetWithCast() { + CouchbaseCache cache = new CouchbaseCache(cacheName, client); + + String key = "couchbase-cache-user"; + User user = new User(); + user.firstname = "Michael"; + + cache.put(key, user); + + User loaded = cache.get(key, User.class); + assertNotNull(loaded); + assertEquals(user.firstname, loaded.firstname); + } + /** * Verifies the deletion of cache objects. * @@ -114,4 +131,8 @@ public class CouchbaseCacheTests { assertNull(cache.get(key)); } + static class User implements Serializable { + public String firstname; + } + }