Skip to content

Commit 3bef32c

Browse files
Tomasz Foryschristophstrobl
Tomasz Forys
authored andcommitted
Allow to override auto index creation flag via XML configuration.
Closes: #4275
1 parent c7fc9fb commit 3bef32c

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

Diff for: spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java

+4-5
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@
7676
* @author Christoph Strobl
7777
* @author Mark Paluch
7878
* @author Zied Yaich
79+
* @author Tomasz Forys
7980
*/
8081
public class MappingMongoConverterParser implements BeanDefinitionParser {
8182

@@ -102,7 +103,7 @@ public BeanDefinition parse(Element element, ParserContext parserContext) {
102103
parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element));
103104

104105
BeanDefinition conversionsDefinition = getCustomConversions(element, parserContext);
105-
String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id);
106+
String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id, autoIndexCreationEnabled);
106107

107108
// Need a reference to a Mongo instance
108109
String dbFactoryRef = element.getAttribute("db-factory-ref");
@@ -282,10 +283,8 @@ private BeanDefinition getCustomConversions(Element element, ParserContext parse
282283
ManagedList<BeanMetadataElement> converterBeans = new ManagedList<>();
283284
List<Element> converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter");
284285

285-
if (converterElements != null) {
286-
for (Element listenerElement : converterElements) {
287-
converterBeans.add(parseConverter(listenerElement, parserContext));
288-
}
286+
for (Element listenerElement : converterElements) {
287+
converterBeans.add(parseConverter(listenerElement, parserContext));
289288
}
290289

291290
// Scan for Converter and GenericConverter beans in the given base-package

Diff for: spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java

+18
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
3939
import org.springframework.data.mongodb.core.convert.MongoTypeMapper;
4040
import org.springframework.data.mongodb.core.mapping.Account;
41+
import org.springframework.data.mongodb.core.mapping.MongoMappingContext;
4142
import org.springframework.data.mongodb.repository.Person;
4243
import org.springframework.stereotype.Component;
4344

@@ -48,6 +49,7 @@
4849
* @author Thomas Darimont
4950
* @author Christoph Strobl
5051
* @author Ryan Tenney
52+
* @author Tomasz Forys
5153
*/
5254
public class MappingMongoConverterParserIntegrationTests {
5355

@@ -61,6 +63,22 @@ void allowsDbFactoryRefAttribute() {
6163
factory.getBean("converter");
6264
}
6365

66+
@Test
67+
void allowsToOverrideAutoIndexCreation() {
68+
69+
loadValidConfiguration();
70+
MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext", MongoMappingContext.class);
71+
assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue();
72+
}
73+
74+
@Test
75+
void testDefaultValueForAutoIndexCreation() {
76+
77+
loadValidConfiguration();
78+
MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext", MongoMappingContext.class);
79+
assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse();
80+
}
81+
6482
@Test // DATAMONGO-725
6583
void hasCustomTypeMapper() {
6684

Diff for: spring-data-mongodb/src/test/resources/namespace/converter.xml

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313

1414
<mongo:mapping-converter id="abbreviatingConverter" abbreviate-field-names="true" />
1515

16+
<mongo:mapping-converter id="autoIndexCreationConverter" db-factory-ref="factory" auto-index-creation="true" />
17+
1618
<bean name="customMongoTypeMapper" class="org.springframework.data.mongodb.config.CustomMongoTypeMapper"/>
1719

1820
</beans>

0 commit comments

Comments
 (0)