diff --git a/src/main/java/org/springframework/data/couchbase/core/convert/translation/JacksonTranslationService.java b/src/main/java/org/springframework/data/couchbase/core/convert/translation/JacksonTranslationService.java index 1ebb46c8..a9d2d320 100644 --- a/src/main/java/org/springframework/data/couchbase/core/convert/translation/JacksonTranslationService.java +++ b/src/main/java/org/springframework/data/couchbase/core/convert/translation/JacksonTranslationService.java @@ -227,6 +227,8 @@ public class JacksonTranslationService implements TranslationService, Initializi } case VALUE_NUMBER_FLOAT: return parser.getValueAsDouble(); + case VALUE_NULL: + return null; default: throw new MappingException("Could not decode primitve value " + token); } diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java index 56cd73cc..d4ee881e 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseDocument.java @@ -259,13 +259,11 @@ public class CouchbaseDocument implements CouchbaseStorable { *
If this is not the case, a {@link IllegalArgumentException} is * thrown.
* - * Objects that are NULL cannot be stored. - * * @param value the object to verify its type. */ private void verifyValueType(final Object value) { if(value == null) { - throw new IllegalArgumentException("Attribute of type null cannot be stored."); + return; } final Class> clazz = value.getClass(); if (simpleTypeHolder.isSimpleType(clazz)) { diff --git a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java index a8f9715b..4a9a16d3 100644 --- a/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java +++ b/src/main/java/org/springframework/data/couchbase/core/mapping/CouchbaseList.java @@ -69,7 +69,7 @@ public class CouchbaseList implements CouchbaseStorable { * @return the {@link CouchbaseList} object for chaining purposes. */ public final CouchbaseList put(final Object value) { - verifyValueType(value.getClass()); + verifyValueType(value); payload.add(value); return this; @@ -170,9 +170,14 @@ public class CouchbaseList implements CouchbaseStorable { *If this is not the case, a {@link IllegalArgumentException} is * thrown.
* - * @param clazz the class type to check and verify. + * @param value the object to verify its type. */ - private void verifyValueType(final Class> clazz) { + private void verifyValueType(final Object value) { + if(value == null) { + return; + } + + final Class> clazz = value.getClass(); if (simpleTypeHolder.isSimpleType(clazz)) { return; } diff --git a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java index fe92bf48..c385fc3a 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java @@ -43,7 +43,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; /** * @author Michael Nitschinger @@ -133,10 +132,12 @@ public class CouchbaseTemplateTests { List