diff --git a/.gitignore b/.gitignore index 7b3538af..47eb4455 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,5 @@ target/ .project .settings/* -# IntelliJ IDEA *.iml -.idea +.idea/* \ No newline at end of file diff --git a/pom.xml b/pom.xml index 0bbc5466..0d37407a 100644 --- a/pom.xml +++ b/pom.xml @@ -18,8 +18,8 @@ - 1.1.9 - 2.2.2 + 1.2.0 + 2.2.3 1.6.1.RELEASE @@ -48,7 +48,7 @@ - couchbase + com.couchbase.client couchbase-client ${couchbase} @@ -90,14 +90,6 @@ - - couchbase - Couchbase Maven Repository - http://files.couchbase.com/maven2/ - - false - - spring-lib-release http://repo.springsource.org/libs-release-local 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 f5f47791..56cd73cc 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 @@ -104,7 +104,7 @@ public class CouchbaseDocument implements CouchbaseStorable { * @return the {@link CouchbaseDocument} for chaining. */ public final CouchbaseDocument put(final String key, final Object value) { - verifyValueType(value.getClass()); + verifyValueType(value); payload.put(key, value); return this; @@ -259,15 +259,19 @@ public class CouchbaseDocument implements CouchbaseStorable { *

If this is not the case, a {@link IllegalArgumentException} is * thrown.

* - * @param clazz the class type to check and verify. + * Objects that are NULL cannot be stored. + * + * @param value the object to verify its type. */ - private void verifyValueType(final Class clazz) { - if (simpleTypeHolder.isSimpleType(clazz)) { - return; + private void verifyValueType(final Object value) { + if(value == null) { + throw new IllegalArgumentException("Attribute of type null cannot be stored."); } - - throw new IllegalArgumentException("Attribute of type " - + clazz.getCanonicalName() + " can not be stored and must be converted."); + final Class clazz = value.getClass(); + if (simpleTypeHolder.isSimpleType(clazz)) { + return; + } + throw new IllegalArgumentException("Attribute of type " + clazz.getCanonicalName() + " cannot be stored and must be converted."); } /** 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 8e52c776..a2f201f2 100644 --- a/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java +++ b/src/test/java/org/springframework/data/couchbase/core/CouchbaseTemplateTests.java @@ -179,6 +179,18 @@ public class CouchbaseTemplateTests { assertNotNull(beer.getActive()); } } + + @Test + public void shouldNotSaveNull() { + final Map things = new HashMap(); + things.put("key", null); + try { + template.save(things); + fail("We should not be able to store a NULL!"); + } catch(final IllegalArgumentException e) { + assertTrue(true); + } + } /** * A sample document with just an id and property.