From f33790013fcb7b538f4da634e59dbe378c0b9ad7 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 20 Feb 2013 12:04:24 +0100 Subject: [PATCH] =?UTF-8?q?DATAMONGO-617=20-=20Fixed=20potential=20NullPoi?= =?UTF-8?q?nterException=20in=20MongoTemplate.insert(=E2=80=A6).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If MongoTemplate.insert(…) was called with a Mongo-simple type (such as a raw DBBobject) it caused a NullPointerException during the lookup of a version property. This is now fixed by correcting the guard. --- .../data/mongodb/core/MongoTemplate.java | 2 +- .../data/mongodb/core/MongoTemplateTests.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) 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 0ca706eded..ca39e885d6 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 @@ -666,7 +666,7 @@ private void initializeVersionProperty(Object entity) { MongoPersistentEntity mongoPersistentEntity = getPersistentEntity(entity.getClass()); - if (mongoPersistentEntity == null || mongoPersistentEntity.hasVersionProperty()) { + if (mongoPersistentEntity != null && mongoPersistentEntity.hasVersionProperty()) { BeanWrapper, Object> wrapper = BeanWrapper.create(entity, null); wrapper.setProperty(mongoPersistentEntity.getVersionProperty(), 0); } 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 54275e818c..9be0f338b6 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 @@ -1318,6 +1318,18 @@ public void optimisticLockingHandlingWithExistingId() { template.save(person); } + /** + * @see DATAMONGO-617 + */ + @Test + public void doesNotFailOnVersionInitForUnversionedEntity() { + + DBObject dbObject = new BasicDBObject(); + dbObject.put("firstName", "Oliver"); + + template.insert(dbObject, template.determineCollectionName(PersonWithVersionPropertyOfTypeInteger.class)); + } + /** * @see DATAMONGO-539 */