From 6189e5f8cd5ba208814be3f9f1960b3f55d50b62 Mon Sep 17 00:00:00 2001 From: Tomasz Forys Date: Wed, 18 Jan 2023 10:48:33 +0100 Subject: [PATCH 1/5] Allow to override auto index creation on MongoMappingContext --- .../config/MappingMongoConverterParser.java | 11 ++++----- ...gMongoConverterParserIntegrationTests.java | 23 +++++++++++++++++++ .../converter-auto-index-creation.xml | 16 +++++++++++++ 3 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml 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 99b7384f1d..029c52b156 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 @@ -76,6 +76,7 @@ * @author Christoph Strobl * @author Mark Paluch * @author Zied Yaich + * @author Tomasz Forys */ public class MappingMongoConverterParser implements BeanDefinitionParser { @@ -97,12 +98,12 @@ public BeanDefinition parse(Element element, ParserContext parserContext) { id = StringUtils.hasText(id) ? id : DEFAULT_CONVERTER_BEAN_NAME; String autoIndexCreation = element.getAttribute("auto-index-creation"); - boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.valueOf(autoIndexCreation); + boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation); 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"); @@ -282,10 +283,8 @@ private BeanDefinition getCustomConversions(Element element, ParserContext parse 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 befbde9aa8..5a3970666e 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.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 @@ * @author Thomas Darimont * @author Christoph Strobl * @author Ryan Tenney + * @author Tomasz Forys */ public class MappingMongoConverterParserIntegrationTests { @@ -61,6 +63,27 @@ void allowsDbFactoryRefAttribute() { factory.getBean("converter"); } + @Test + void allowsToOverrideAutoIndexCreation() { + + loadConfiguration("namespace/converter-auto-index-creation.xml"); + MappingMongoConverter converter = factory.getBean("converter", MappingMongoConverter.class); + assertThat(converter.getMappingContext()).isInstanceOf(MongoMappingContext.class); + MongoMappingContext mongoMappingContext = (MongoMappingContext) converter.getMappingContext(); + assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue(); + + } + + @Test + void testDefaultValueForAutoIndexCreation() { + + loadValidConfiguration(); + MappingMongoConverter converter = factory.getBean("converter", MappingMongoConverter.class); + assertThat(converter.getMappingContext()).isInstanceOf(MongoMappingContext.class); + MongoMappingContext mongoMappingContext = (MongoMappingContext) converter.getMappingContext(); + assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse(); + } + @Test // DATAMONGO-725 void hasCustomTypeMapper() { diff --git a/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml b/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml new file mode 100644 index 0000000000..244e69d821 --- /dev/null +++ b/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + From 262adb8268466043a930d7b4f1e67eb77cc74179 Mon Sep 17 00:00:00 2001 From: InfoShare Devs Date: Thu, 19 Jan 2023 00:15:57 +0100 Subject: [PATCH 2/5] Adding additional converter to the existing file --- spring-data-mongodb/src/test/resources/namespace/converter.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/spring-data-mongodb/src/test/resources/namespace/converter.xml b/spring-data-mongodb/src/test/resources/namespace/converter.xml index 52238f79e1..aae3a9061a 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 @@ + + From 6d99a533d7ea9e182691d550dc71826ff40f11a9 Mon Sep 17 00:00:00 2001 From: InfoShare Devs Date: Thu, 19 Jan 2023 00:16:25 +0100 Subject: [PATCH 3/5] Delete converter-auto-index-creation.xml --- .../namespace/converter-auto-index-creation.xml | 16 ---------------- 1 file changed, 16 deletions(-) delete mode 100644 spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml diff --git a/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml b/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml deleted file mode 100644 index 244e69d821..0000000000 --- a/spring-data-mongodb/src/test/resources/namespace/converter-auto-index-creation.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - From 3d6e4de0498cff1414d7174b39a19a1ddbbef1f9 Mon Sep 17 00:00:00 2001 From: InfoShare Devs Date: Thu, 19 Jan 2023 00:19:28 +0100 Subject: [PATCH 4/5] Update JUnits --- .../config/MappingMongoConverterParserIntegrationTests.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 5a3970666e..b63b20a191 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 @@ -66,8 +66,8 @@ void allowsDbFactoryRefAttribute() { @Test void allowsToOverrideAutoIndexCreation() { - loadConfiguration("namespace/converter-auto-index-creation.xml"); - MappingMongoConverter converter = factory.getBean("converter", MappingMongoConverter.class); + loadValidConfiguration(); + MappingMongoConverter converter = factory.getBean("autoIndexCreationConverter", MappingMongoConverter.class); assertThat(converter.getMappingContext()).isInstanceOf(MongoMappingContext.class); MongoMappingContext mongoMappingContext = (MongoMappingContext) converter.getMappingContext(); assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue(); From 8482be7e49271fee8fb8529e3597283a274f228e Mon Sep 17 00:00:00 2001 From: Tomasz Forys Date: Thu, 19 Jan 2023 09:31:32 +0100 Subject: [PATCH 5/5] JUnits simplification --- .../MappingMongoConverterParserIntegrationTests.java | 9 ++------- .../src/test/resources/namespace/converter.xml | 2 +- 2 files changed, 3 insertions(+), 8 deletions(-) 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 b63b20a191..f576b1aeb0 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 @@ -67,20 +67,15 @@ void allowsDbFactoryRefAttribute() { void allowsToOverrideAutoIndexCreation() { loadValidConfiguration(); - MappingMongoConverter converter = factory.getBean("autoIndexCreationConverter", MappingMongoConverter.class); - assertThat(converter.getMappingContext()).isInstanceOf(MongoMappingContext.class); - MongoMappingContext mongoMappingContext = (MongoMappingContext) converter.getMappingContext(); + MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext", MongoMappingContext.class); assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue(); - } @Test void testDefaultValueForAutoIndexCreation() { loadValidConfiguration(); - MappingMongoConverter converter = factory.getBean("converter", MappingMongoConverter.class); - assertThat(converter.getMappingContext()).isInstanceOf(MongoMappingContext.class); - MongoMappingContext mongoMappingContext = (MongoMappingContext) converter.getMappingContext(); + MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext", MongoMappingContext.class); assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse(); } diff --git a/spring-data-mongodb/src/test/resources/namespace/converter.xml b/spring-data-mongodb/src/test/resources/namespace/converter.xml index aae3a9061a..1a0106d7bf 100644 --- a/spring-data-mongodb/src/test/resources/namespace/converter.xml +++ b/spring-data-mongodb/src/test/resources/namespace/converter.xml @@ -13,7 +13,7 @@ - +