From f424b7c760b7d3f1222ef66cb91dc46295da0265 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Thu, 14 Jul 2011 21:34:11 +0200 Subject: [PATCH] DATADOC-166 - Check for null on removing objects. --- .../data/mongodb/core/MongoTemplate.java | 13 ++++++++++++- .../data/mongodb/core/MongoTemplateTests.java | 11 +++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 347e9e391..ed0054f32 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -1004,10 +1004,18 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { return wr; } }); - } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.MongoOperations#remove(java.lang.Object) + */ public void remove(Object object) { + + if (object == null) { + return; + } + remove(new Query(where(getIdPropertyName(object)) .is(getIdValue(object))), object.getClass()); } @@ -1301,9 +1309,12 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { } protected String getIdPropertyName(Object object) { + Assert.notNull(object); + MongoPersistentEntity persistentEntity = mappingContext .getPersistentEntity(object.getClass()); MongoPersistentProperty idProperty = persistentEntity.getIdProperty(); + return idProperty == null ? ID : idProperty.getName(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java index 67e7711e1..d7ab98c4a 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/MongoTemplateTests.java @@ -83,8 +83,8 @@ public class MongoTemplateTests { MongoMappingContext mappingContext = new MongoMappingContext(); mappingContext.setInitialEntitySet(new HashSet>(Arrays.asList(PersonWith_idPropertyOfTypeObjectId.class, PersonWith_idPropertyOfTypeString.class, PersonWithIdPropertyOfTypeObjectId.class, - PersonWithIdPropertyOfTypeString.class, PersonWithIdPropertyOfTypeInteger.class, - PersonWithIdPropertyOfPrimitiveInt.class, PersonWithIdPropertyOfTypeLong.class, + PersonWithIdPropertyOfTypeString.class, PersonWithIdPropertyOfTypeInteger.class, + PersonWithIdPropertyOfPrimitiveInt.class, PersonWithIdPropertyOfTypeLong.class, PersonWithIdPropertyOfPrimitiveLong.class))); mappingContext.afterPropertiesSet(); @@ -758,4 +758,11 @@ public class MongoTemplateTests { }); } + /** + * @see DATADOC-166 + */ + @Test + public void removingNullIsANoOp() { + template.remove(null); + } }