From 7a32d40dd0e9fbff6acf913baa2c5315b909ad2f Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Tue, 28 Feb 2017 20:05:35 +0100 Subject: [PATCH] DATAMONGO-1617 - Reinstantiate version property initialization before BeforeConvertEvent publication. Related pull request: #443. --- .../data/mongodb/core/MongoTemplate.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 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 b78912f77..da490ef12 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 @@ -750,7 +750,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { public long count(Query query, Class entityClass, String collectionName) { Assert.hasText(collectionName, "Collection name must not be null or empty!"); - + final DBObject dbObject = query == null ? null : queryMapper.getMappedObject(query.getQueryObject(), entityClass == null ? null : mappingContext.getPersistentEntity(entityClass)); @@ -829,11 +829,10 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { protected void doInsert(String collectionName, T objectToSave, MongoWriter writer) { + initializeVersionProperty(objectToSave); maybeEmitEvent(new BeforeConvertEvent(objectToSave, collectionName)); assertUpdateableIdIfNotSet(objectToSave); - initializeVersionProperty(objectToSave); - DBObject dbDoc = toDbObject(objectToSave, writer); maybeEmitEvent(new BeforeSaveEvent(objectToSave, dbDoc, collectionName)); @@ -923,12 +922,13 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware { Assert.notNull(writer, "MongoWriter must not be null!"); List dbObjectList = new ArrayList(); + for (T o : batchToSave) { initializeVersionProperty(o); - BasicDBObject dbDoc = new BasicDBObject(); - maybeEmitEvent(new BeforeConvertEvent(o, collectionName)); + + BasicDBObject dbDoc = new BasicDBObject(); writer.write(o, dbDoc); maybeEmitEvent(new BeforeSaveEvent(o, dbDoc, collectionName));