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 dbb31bba..60ba4f5f 100644 --- a/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java +++ b/src/main/java/org/springframework/data/couchbase/cache/CouchbaseCache.java @@ -88,8 +88,12 @@ public class CouchbaseCache implements Cache { * @param value the Object to store. */ public final void put(final Object key, final Object value) { - String documentId = key.toString(); - client.set(documentId, 0, value); + if (value != null) { + String documentId = key.toString(); + client.set(documentId, 0, value); + } else { + evict(key); + } } /** 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 27fd392c..a7b5f282 100644 --- a/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java +++ b/src/test/java/org/springframework/data/couchbase/cache/CouchbaseCacheTests.java @@ -97,4 +97,21 @@ public class CouchbaseCacheTests { assertNull(result); } + /** + * Putting into cache on the same key not null value, and then null value, + * results in null object + */ + @Test + public void testSettingNullAndGetting() { + CouchbaseCache cache = new CouchbaseCache(cacheName, client); + + String key = "couchbase-cache-test"; + String value = "Hello World!"; + + cache.put(key, value); + cache.put(key, null); + + assertNull(cache.get(key)); + } + }