Browse Source

Allow to override auto index creation flag via XML configuration.

Closes: #4275
pull/4668/head
Tomasz Forys 3 years ago committed by Christoph Strobl
parent
commit
8c43747653
No known key found for this signature in database
GPG Key ID: E6054036D0C37A4B
  1. 9
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java
  2. 18
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java
  3. 2
      spring-data-mongodb/src/test/resources/namespace/converter.xml

9
spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java

@ -73,6 +73,7 @@ import org.w3c.dom.Element; @@ -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 { @@ -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 { @@ -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

18
spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java

@ -38,6 +38,7 @@ import org.springframework.data.mapping.model.CamelCaseAbbreviatingFieldNamingSt @@ -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; @@ -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 { @@ -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() {

2
spring-data-mongodb/src/test/resources/namespace/converter.xml

@ -13,6 +13,8 @@ @@ -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>

Loading…
Cancel
Save