Skip to content

Commit 65c58fd

Browse files
Polishing.
Move auto index create lookup flag to dedicated method and add issue reference to tests. Original Pull Request: #4275
1 parent b0beb3e commit 65c58fd

File tree

2 files changed

+38
-13
lines changed

2 files changed

+38
-13
lines changed

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

+28-4
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import org.springframework.lang.Nullable;
6060
import org.springframework.util.Assert;
6161
import org.springframework.util.ClassUtils;
62+
import org.springframework.util.ObjectUtils;
6263
import org.springframework.util.StringUtils;
6364
import org.springframework.util.xml.DomUtils;
6465
import org.w3c.dom.Element;
@@ -94,8 +95,7 @@ public BeanDefinition parse(Element element, ParserContext parserContext) {
9495
String id = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE);
9596
id = StringUtils.hasText(id) ? id : DEFAULT_CONVERTER_BEAN_NAME;
9697

97-
String autoIndexCreation = element.getAttribute("auto-index-creation");
98-
boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation);
98+
boolean autoIndexCreationEnabled = isAutoIndexCreationEnabled(element);
9999

100100
parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element));
101101

@@ -196,11 +196,33 @@ private RuntimeBeanReference getValidator(Object source, ParserContext parserCon
196196
return new RuntimeBeanReference(validatorName);
197197
}
198198

199+
private static boolean isAutoIndexCreationEnabled(Element element) {
200+
201+
String autoIndexCreation = element.getAttribute("auto-index-creation");
202+
return StringUtils.hasText(autoIndexCreation) && Boolean.parseBoolean(autoIndexCreation);
203+
}
204+
205+
/**
206+
* Create and register the {@link BeanDefinition} for a {@link MongoMappingContext} if not explicitly referenced by a
207+
* given {@literal mapping-context-ref} {@link Element#getAttribute(String) attribuite}.
208+
*
209+
* @return the mapping context bean name.
210+
* @deprecated since 4.3. Use
211+
* {@link #potentiallyCreateMappingContext(Element, ParserContext, BeanDefinition, String, boolean)}
212+
* instead.
213+
*/
214+
@Deprecated(since = "4.3", forRemoval = true)
199215
public static String potentiallyCreateMappingContext(Element element, ParserContext parserContext,
200216
@Nullable BeanDefinition conversionsDefinition, @Nullable String converterId) {
201217
return potentiallyCreateMappingContext(element, parserContext, conversionsDefinition, converterId, false);
202218
}
203219

220+
/**
221+
* Create and register the {@link BeanDefinition} for a {@link MongoMappingContext} if not explicitly referenced by a
222+
* given {@literal mapping-context-ref} {@link Element#getAttribute(String) attribuite}.
223+
*
224+
* @return the mapping context bean name.
225+
*/
204226
public static String potentiallyCreateMappingContext(Element element, ParserContext parserContext,
205227
@Nullable BeanDefinition conversionsDefinition, @Nullable String converterId, boolean autoIndexCreation) {
206228

@@ -280,8 +302,10 @@ private BeanDefinition getCustomConversions(Element element, ParserContext parse
280302
ManagedList<BeanMetadataElement> converterBeans = new ManagedList<>();
281303
List<Element> converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter");
282304

283-
for (Element listenerElement : converterElements) {
284-
converterBeans.add(parseConverter(listenerElement, parserContext));
305+
if (!ObjectUtils.isEmpty(converterElements)) {
306+
for (Element listenerElement : converterElements) {
307+
converterBeans.add(parseConverter(listenerElement, parserContext));
308+
}
285309
}
286310

287311
// 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

+10-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222

2323
import org.bson.Document;
2424
import org.junit.jupiter.api.Test;
25-
2625
import org.springframework.beans.factory.config.BeanDefinition;
2726
import org.springframework.beans.factory.config.BeanReference;
2827
import org.springframework.beans.factory.parsing.BeanDefinitionParsingException;
@@ -63,20 +62,22 @@ void allowsDbFactoryRefAttribute() {
6362
factory.getBean("converter");
6463
}
6564

66-
@Test
67-
void allowsToOverrideAutoIndexCreation() {
65+
@Test // GH-4275
66+
void defaultsToFalseForAutoIndexCreation() {
6867

6968
loadValidConfiguration();
70-
MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext", MongoMappingContext.class);
71-
assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue();
69+
MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext",
70+
MongoMappingContext.class);
71+
assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse();
7272
}
7373

74-
@Test
75-
void testDefaultValueForAutoIndexCreation() {
74+
@Test // GH-4275
75+
void allowsToOverrideAutoIndexCreation() {
7676

7777
loadValidConfiguration();
78-
MongoMappingContext mongoMappingContext = factory.getBean("converter.mongoMappingContext", MongoMappingContext.class);
79-
assertThat(mongoMappingContext.isAutoIndexCreation()).isFalse();
78+
MongoMappingContext mongoMappingContext = factory.getBean("autoIndexCreationConverter.mongoMappingContext",
79+
MongoMappingContext.class);
80+
assertThat(mongoMappingContext.isAutoIndexCreation()).isTrue();
8081
}
8182

8283
@Test // DATAMONGO-725

0 commit comments

Comments
 (0)