Skip to content

Commit b0beb3e

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

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
@@ -73,6 +73,7 @@
7373
* @author Christoph Strobl
7474
* @author Mark Paluch
7575
* @author Zied Yaich
76+
* @author Tomasz Forys
7677
*/
7778
public class MappingMongoConverterParser implements BeanDefinitionParser {
7879

@@ -99,7 +100,7 @@ public BeanDefinition parse(Element element, ParserContext parserContext) {
99100
parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element));
100101

101102
BeanDefinition conversionsDefinition = getCustomConversions(element, parserContext);
102-
String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id);
103+
String ctxRef = potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, id, autoIndexCreationEnabled);
103104

104105
// Need a reference to a Mongo instance
105106
String dbFactoryRef = element.getAttribute("db-factory-ref");
@@ -279,10 +280,8 @@ private BeanDefinition getCustomConversions(Element element, ParserContext parse
279280
ManagedList<BeanMetadataElement> converterBeans = new ManagedList<>();
280281
List<Element> converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter");
281282

282-
if (converterElements != null) {
283-
for (Element listenerElement : converterElements) {
284-
converterBeans.add(parseConverter(listenerElement, parserContext));
285-
}
283+
for (Element listenerElement : converterElements) {
284+
converterBeans.add(parseConverter(listenerElement, parserContext));
286285
}
287286

288287
// 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)