From 5be66a3fee774cf208e1dd73d157d13298fb73f7 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Wed, 19 Feb 2014 22:00:09 +0100 Subject: [PATCH] DATAMONGO-853 - Update does not allow null keys anymore. Added check for blank / null keys when adding key to Update. Original pull request: #129. --- .../data/mongodb/core/query/Update.java | 3 +++ .../data/mongodb/core/query/UpdateTests.java | 24 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java index 3c3ecd587..8500bec40 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Set; import org.springframework.dao.InvalidDataAccessApiUsageException; +import org.springframework.util.Assert; import org.springframework.util.StringUtils; import com.mongodb.BasicDBObject; @@ -263,12 +264,14 @@ public class Update { protected void addFieldOperation(String operator, String key, Object value) { + Assert.hasText(key, "Key/Path for update must not be null or blank."); modifierOps.put(operator, new BasicDBObject(key, value)); this.keysToUpdate.add(key); } protected void addMultiFieldOperation(String operator, String key, Object value) { + Assert.hasText(key, "Key/Path for update must not be null or blank."); Object existingValue = this.modifierOps.get(operator); DBObject keyValueMap; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java index 0730c6fd2..541e0005f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java @@ -260,4 +260,28 @@ public class UpdateTests { assertThat(clone.modifies("oof"), is(false)); } + + /** + * @see DATAMONGO-853 + */ + @Test(expected = IllegalArgumentException.class) + public void testAddingMultiFieldOperationThrowsExceptionWhenCalledWithNullKey() { + new Update().addMultiFieldOperation("$op", null, "exprected to throw IllegalArgumentException."); + } + + /** + * @see DATAMONGO-853 + */ + @Test(expected = IllegalArgumentException.class) + public void testAddingSingleFieldOperationThrowsExceptionWhenCalledWithNullKey() { + new Update().addFieldOperation("$op", null, "exprected to throw IllegalArgumentException."); + } + + /** + * @see DATAMONGO-853 + */ + @Test(expected = IllegalArgumentException.class) + public void testCreatingUpdateWithNullKeyThrowsException() { + Update.update(null, "value"); + } }