Browse Source

Polishing.

Move auto index create lookup flag to dedicated method and add issue reference to tests.
Original Pull Request: #4275
issue/4755
Christoph Strobl 2 years ago
parent
commit
65c58fd404
No known key found for this signature in database
GPG Key ID: E6054036D0C37A4B
  1. 32
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java
  2. 19
      spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java

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

@ -59,6 +59,7 @@ import org.springframework.data.mongodb.core.mapping.event.ValidatingMongoEventL @@ -59,6 +59,7 @@ import org.springframework.data.mongodb.core.mapping.event.ValidatingMongoEventL
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.ClassUtils;
import org.springframework.util.ObjectUtils;
import org.springframework.util.StringUtils;
import org.springframework.util.xml.DomUtils;
import org.w3c.dom.Element;
@ -94,8 +95,7 @@ public class MappingMongoConverterParser implements BeanDefinitionParser { @@ -94,8 +95,7 @@ public class MappingMongoConverterParser implements BeanDefinitionParser {
String id = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE);
id = StringUtils.hasText(id) ? id : DEFAULT_CONVERTER_BEAN_NAME;
String autoIndexCreation = element.getAttribute("auto-index-creation");
boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation);
boolean autoIndexCreationEnabled = isAutoIndexCreationEnabled(element);
parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element));
@ -196,11 +196,33 @@ public class MappingMongoConverterParser implements BeanDefinitionParser { @@ -196,11 +196,33 @@ public class MappingMongoConverterParser implements BeanDefinitionParser {
return new RuntimeBeanReference(validatorName);
}
private static boolean isAutoIndexCreationEnabled(Element element) {
String autoIndexCreation = element.getAttribute("auto-index-creation");
return StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation);
}
/**
* Create and register the {@link BeanDefinition} for a {@link MongoMappingContext} if not explicitly referenced by a
* given {@literal mapping-context-ref} {@link Element#getAttribute(String) attribuite}.
*
* @return the mapping context bean name.
* @deprecated since 4.3. Use
* {@link #potentiallyCreateMappingContext(Element, ParserContext, BeanDefinition, String, boolean)}
* instead.
*/
@Deprecated(since = "4.3", forRemoval = true)
public static String potentiallyCreateMappingContext(Element element, ParserContext parserContext,
@Nullable BeanDefinition conversionsDefinition, @Nullable String converterId) {
return potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, converterId, false);
}
/**
* Create and register the {@link BeanDefinition} for a {@link MongoMappingContext} if not explicitly referenced by a
* given {@literal mapping-context-ref} {@link Element#getAttribute(String) attribuite}.
*
* @return the mapping context bean name.
*/
public static String potentiallyCreateMappingContext(Element element, ParserContext parserContext,
@Nullable BeanDefinition conversionsDefinition, @Nullable String converterId, boolean autoIndexCreation) {
@ -280,8 +302,10 @@ public class MappingMongoConverterParser implements BeanDefinitionParser { @@ -280,8 +302,10 @@ public class MappingMongoConverterParser implements BeanDefinitionParser {
ManagedList<BeanMetadataElement> converterBeans = new ManagedList<>();
List<Element> converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter");
for (Element listenerElement : converterElements) {
converterBeans.add(parseConverter(listenerElement, parserContext));
if (!ObjectUtils.isEmpty(converterElements)) {
for (Element listenerElement : converterElements) {
converterBeans.add(parseConverter(listenerElement, parserContext));
}
}
// Scan for Converter and GenericConverter beans in the given base-package

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

@ -22,7 +22,6 @@ import java.util.Set; @@ -22,7 +22,6 @@ import java.util.Set;
import org.bson.Document;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanReference;
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
@ -63,20 +62,22 @@ public class MappingMongoConverterParserIntegrationTests { @@ -63,20 +62,22 @@ public class MappingMongoConverterParserIntegrationTests {
factory.getBean("converter");
}
@Test
void allowsToOverrideAutoIndexCreation() {
@Test // GH-4275
void defaultsToFalseForAutoIndexCreation() {
loadValidConfiguration();
MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext", MongoMappingContext.class);
assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue();
MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext",
MongoMappingContext.class);
assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse();
}
@Test
void testDefaultValueForAutoIndexCreation() {
@Test // GH-4275
void allowsToOverrideAutoIndexCreation() {
loadValidConfiguration();
MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext", MongoMappingContext.class);
assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse();
MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext",
MongoMappingContext.class);
assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue();
}
@Test // DATAMONGO-725

Loading…
Cancel
Save