From d8ef7e1472fb1b4e5f72439b543f89ab4c373046 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 10 Jul 2013 22:55:41 +0200 Subject: [PATCH] DATAMONGO-717 - Partial back-port of change in AbstractMongoConfiguration. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Backported a part of DATAMONGO-569 to avoid lifecycle issues on MongoMappingContext. ….initialize() was called to early so that other lifecycle callbacks (e.g. setApplicationContext(…)) are applied too late. --- .../config/AbstractMongoConfiguration.java | 1 - .../AbstractMongoConfigurationUnitTests.java | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java index 2a63cab89..d07e49023 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/AbstractMongoConfiguration.java @@ -134,7 +134,6 @@ public abstract class AbstractMongoConfiguration { MongoMappingContext mappingContext = new MongoMappingContext(); mappingContext.setInitialEntitySet(getInitialEntitySet()); mappingContext.setSimpleTypeHolder(customConversions().getSimpleTypeHolder()); - mappingContext.initialize(); return mappingContext; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java index 9423978b2..3df161d91 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/AbstractMongoConfigurationUnitTests.java @@ -19,8 +19,13 @@ import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import org.junit.Test; +import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; +import org.springframework.data.mongodb.core.mapping.BasicMongoPersistentEntity; import org.springframework.data.mongodb.core.mapping.Document; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; +import org.springframework.expression.spel.support.StandardEvaluationContext; +import org.springframework.test.util.ReflectionTestUtils; import com.mongodb.Mongo; @@ -63,6 +68,17 @@ public class AbstractMongoConfigurationUnitTests { assertScanningDisabled(" "); } + @Test + public void lifecycleCallbacksAreInvokedInAppropriateOrder() { + + AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SampleMongoConfiguration.class); + MongoMappingContext mappingContext = context.getBean(MongoMappingContext.class); + BasicMongoPersistentEntity entity = mappingContext.getPersistentEntity(Entity.class); + StandardEvaluationContext spElContext = (StandardEvaluationContext) ReflectionTestUtils.getField(entity, "context"); + + assertThat(spElContext.getBeanResolver(), is(notNullValue())); + } + private static void assertScanningDisabled(final String value) throws ClassNotFoundException { AbstractMongoConfiguration configuration = new SampleMongoConfiguration() {