From 9623dac01f43f4d8495917f02e061202d3fd4fe7 Mon Sep 17 00:00:00 2001 From: Oliver Gierke Date: Wed, 2 Apr 2014 17:58:36 +0200 Subject: [PATCH] DATAMONGO-901 - Fixed regression of not registering type predicting post processor. The changes for DATAMONGO-843 introduced a regression by skipping the registration of the RepositoryInterfaceAwareBeanPostProcessor. This can cause the wiring of repository bean definitions to fail depending on in which order the bean definitions get instantiated. This change reintroduces the registration and adds an explicit test case for it. --- ...MongoRepositoryConfigurationExtension.java | 2 ++ ...RepositoriesRegistrarIntegrationTests.java | 19 +++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.java index 003bfeb4f..5f06cfda6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/repository/config/MongoRepositoryConfigurationExtension.java @@ -105,6 +105,8 @@ public class MongoRepositoryConfigurationExtension extends RepositoryConfigurati @Override public void registerBeansForRoot(BeanDefinitionRegistry registry, RepositoryConfigurationSource configurationSource) { + super.registerBeansForRoot(registry, configurationSource); + if (!registry.containsBeanDefinition(BeanNames.MAPPING_CONTEXT_BEAN_NAME)) { RootBeanDefinition definition = new RootBeanDefinition(MongoMappingContext.class); diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java index abc00e94e..3676619e4 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/repository/config/MongoRepositoriesRegistrarIntegrationTests.java @@ -15,9 +15,12 @@ */ package org.springframework.data.mongodb.repository.config; +import static org.junit.Assert.*; + import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.mongodb.core.MongoOperations; @@ -49,9 +52,25 @@ public class MongoRepositoriesRegistrarIntegrationTests { } @Autowired PersonRepository personRepository; + @Autowired ApplicationContext context; @Test public void testConfiguration() { } + + /** + * @see DATAMONGO-901 + */ + @Test + public void registersTypePredictingPostProcessor() { + + for (String name : context.getBeanDefinitionNames()) { + if (name.startsWith("org.springframework.data.repository.core.support.RepositoryInterfaceAwareBeanPostProcessor")) { + return; + } + } + + fail("Expected to find a bean with name starting with RepositoryInterfaceAwareBeanPostProcessor"); + } }