Skip to content

Commit d19b978

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

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
@@ -61,6 +61,7 @@
6161
import org.springframework.lang.Nullable;
6262
import org.springframework.util.Assert;
6363
import org.springframework.util.ClassUtils;
64+
import org.springframework.util.ObjectUtils;
6465
import org.springframework.util.StringUtils;
6566
import org.springframework.util.xml.DomUtils;
6667

@@ -97,8 +98,7 @@ public BeanDefinition parse(Element element, ParserContext parserContext) {
9798
String id = element.getAttribute(AbstractBeanDefinitionParser.ID_ATTRIBUTE);
9899
id = StringUtils.hasText(id) ? id : DEFAULT_CONVERTER_BEAN_NAME;
99100

100-
String autoIndexCreation = element.getAttribute("auto-index-creation");
101-
boolean autoIndexCreationEnabled = StringUtils.hasText(autoIndexCreation) && Boolean.valueOf(autoIndexCreation);
101+
boolean autoIndexCreationEnabled = isAutoIndexCreationEnabled(element);
102102

103103
parserContext.pushContainingComponent(new CompositeComponentDefinition("Mapping Mongo Converter", element));
104104

@@ -199,11 +199,33 @@ private RuntimeBeanReference getValidator(Object source, ParserContext parserCon
199199
return new RuntimeBeanReference(validatorName);
200200
}
201201

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

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

@@ -283,8 +305,10 @@ private BeanDefinition getCustomConversions(Element element, ParserContext parse
283305
ManagedList<BeanMetadataElement> converterBeans = new ManagedList<>();
284306
List<Element> converterElements = DomUtils.getChildElementsByTagName(customerConvertersElement, "converter");
285307

286-
for (Element listenerElement : converterElements) {
287-
converterBeans.add(parseConverter(listenerElement, parserContext));
308+
if (!ObjectUtils.isEmpty(converterElements)) {
309+
for (Element listenerElement : converterElements) {
310+
converterBeans.add(parseConverter(listenerElement, parserContext));
311+
}
288312
}
289313

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