Allow to override auto index creation flag via XML configuration.

Closes: #4275
This commit is contained in:
Tomasz Forys
2023-01-18 10:48:33 +01:00
committed by Christoph Strobl
parent 136e22edcd
commit 8c43747653
3 changed files with 24 additions and 5 deletions

View File

@@ -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<BeanMetadataElement> converterBeans = new ManagedList<>();
List<Element> 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

View File

@@ -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() {

View File

@@ -13,6 +13,8 @@
<mongo:mapping-converter id="abbreviatingConverter" abbreviate-field-names="true" />
<mongo:mapping-converter id="autoIndexCreationConverter" db-factory-ref="factory" auto-index-creation="true" />
<bean name="customMongoTypeMapper" class="org.springframework.data.mongodb.config.CustomMongoTypeMapper"/>
</beans>