From 8c43747653e347bfb43cb92d59769f98d3199895 Mon Sep 17 00:00:00 2001 From: Tomasz Forys Date: Wed, 18 Jan 2023 10:48:33 +0100 Subject: [PATCH] Allow to override auto index creation flag via XML configuration. Closes: #4275 --- .../config/MappingMongoConverterParser.java | 9 ++++----- ...ngMongoConverterParserIntegrationTests.java | 18 ++++++++++++++++++ .../src/test/resources/namespace/converter.xml | 2 ++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java index 2783361fd..48009bcf4 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java @@ -73,6 +73,7 @@ import org.w3c.dom.Element; * @author Christoph Strobl * @author Mark Paluch * @author Zied Yaich + * @author Tomasz Forys */ public class MappingMongoConverterParser implements BeanDefinitionParser { @@ -99,7 +100,7 @@ public class MappingMongoConverterParser implements BeanDefinitionParser { parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element)); BeanDefinition conversionsDefinition = getCustomConversions(element, parserContext); - String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id); + String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id, autoIndexCreationEnabled); // Need a reference to a Mongo instance String dbFactoryRef = element.getAttribute("db-factory-ref"); @@ -279,10 +280,8 @@ public class MappingMongoConverterParser implements BeanDefinitionParser { ManagedList converterBeans = new ManagedList<>(); List converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter"); - if (converterElements != null) { - for (Element listenerElement : converterElements) { - converterBeans.add(parseConverter(listenerElement, parserContext)); - } + for (Element listenerElement : converterElements) { + converterBeans.add(parseConverter(listenerElement, parserContext)); } // Scan for Converter and GenericConverter beans in the given base-package diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java index 2f16f5367..4afb30ee3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java @@ -38,6 +38,7 @@ import org.springframework.data.mapping.model.CamelCaseAbbreviatingFieldNamingSt import org.springframework.data.mongodb.core.convert.MappingMongoConverter; import org.springframework.data.mongodb.core.convert.MongoTypeMapper; import org.springframework.data.mongodb.core.mapping.Account; +import org.springframework.data.mongodb.core.mapping.MongoMappingContext; import org.springframework.data.mongodb.repository.Person; import org.springframework.stereotype.Component; @@ -48,6 +49,7 @@ import org.springframework.stereotype.Component; * @author Thomas Darimont * @author Christoph Strobl * @author Ryan Tenney + * @author Tomasz Forys */ public class MappingMongoConverterParserIntegrationTests { @@ -61,6 +63,22 @@ public class MappingMongoConverterParserIntegrationTests { factory.getBean("converter"); } + @Test + void allowsToOverrideAutoIndexCreation() { + + loadValidConfiguration(); + MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext", MongoMappingContext.class); + assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue(); + } + + @Test + void testDefaultValueForAutoIndexCreation() { + + loadValidConfiguration(); + MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext", MongoMappingContext.class); + assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse(); + } + @Test // DATAMONGO-725 void hasCustomTypeMapper() { diff --git a/spring-data-mongodb/src/test/resources/namespace/converter.xml b/spring-data-mongodb/src/test/resources/namespace/converter.xml index 52238f79e..1a0106d7b 100644 --- a/spring-data-mongodb/src/test/resources/namespace/converter.xml +++ b/spring-data-mongodb/src/test/resources/namespace/converter.xml @@ -13,6 +13,8 @@ + +