From b11fc6c53c3880b7220748a8ad498583b8cf4072 Mon Sep 17 00:00:00 2001 From: Andrzej Wislowski Date: Tue, 3 Dec 2013 23:18:27 +0100 Subject: [PATCH] DATACOUCH-53 - protection against NPE on CouchbaseCache when putting null as a value --- .../data/couchbase/cache/CouchbaseCache.java | 8 ++++++-- .../couchbase/cache/CouchbaseCacheTests.java | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) 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)); + } + }