From b4ec50262d2e4df08eb5da4520b12a165fc64199 Mon Sep 17 00:00:00 2001 From: Michael Nitschinger Date: Tue, 1 Oct 2013 09:36:17 +0200 Subject: [PATCH 1/3] DATACOUCH-31 - Ignore IntelliJ files --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index bc8404d7..ffcd4ebe 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ target/ .classpath .project .settings/* + +*.iml +.idea/* From 740ddc9256771b854bd3c690ee0bc2fa386d59f4 Mon Sep 17 00:00:00 2001 From: Michael Nitschinger Date: Tue, 1 Oct 2013 09:43:29 +0200 Subject: [PATCH 2/3] DATACOUCH-32 - Upgrade Dependencies --- pom.xml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) 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 From 0323d1fdba8a0d17f3cbd4d0ec59c7c63d2079df Mon Sep 17 00:00:00 2001 From: David Harrigan Date: Tue, 8 Oct 2013 15:51:02 +0100 Subject: [PATCH 3/3] DATACOUCH-36 - Don't allow NULL values to be stored. It is illegal to store a NULL value as a document. An attempt to do so will throw an IllegalArgumentException. -=david=- --- .../core/mapping/CouchbaseDocument.java | 20 +++++++++++-------- .../core/CouchbaseTemplateTests.java | 12 +++++++++++ 2 files changed, 24 insertions(+), 8 deletions(-) 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.