From 57d5eb23426e37c21b3fd798d4a6acc86b67c823 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Fri, 2 May 2014 15:56:50 +0200 Subject: [PATCH 1/2] DATAMONGO-925 - MappingMongoConverterParser is incorrectly rejecting field-naming-strategy-ref in XML configuration. Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb-log4j/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index fda6c30248..164e97eb44 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index d5de4a2135..c349c0136f 100644 --- a/spring-data-mongodb-cross-store/pom.xml +++ b/spring-data-mongodb-cross-store/pom.xml @@ -6,7 +6,7 @@ org.springframework.data spring-data-mongodb-parent - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 7302043a15..b83dc5f68a 100644 --- a/spring-data-mongodb-distribution/pom.xml +++ b/spring-data-mongodb-distribution/pom.xml @@ -13,7 +13,7 @@ org.springframework.data spring-data-mongodb-parent - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 0415f6eb5e..fa272042f0 100644 --- a/spring-data-mongodb-log4j/pom.xml +++ b/spring-data-mongodb-log4j/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 6e84732769..02b3c89e16 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 1.5.0.BUILD-SNAPSHOT + 1.5.0.DATAMONGO-925-SNAPSHOT ../pom.xml From 84e65049465320c5f883a38226fd9f7c23656cf2 Mon Sep 17 00:00:00 2001 From: Thomas Darimont Date: Fri, 2 May 2014 16:27:58 +0200 Subject: [PATCH 2/2] DATAMONGO-925 - Improveed custom field-naming-strategy handling in MappingMongoConverterParser. Relaxed precondition for fieldNameStrategy setting to allow custom-field-naming strategies to be set. MappingMongoConverterParser incorrectly rejected a configured field-naming-strategy-ref if abbreviate-field-names was not set to an empty string in XML configuration. Original pull request: #177. --- .../config/MappingMongoConverterParser.java | 3 ++- ...gMongoConverterParserIntegrationTests.java | 20 +++++++++++++++++++ .../converter-custom-fieldnamingstrategy.xml | 13 ++++++++++++ 3 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 spring-data-mongodb/src/test/resources/namespace/converter-custom-fieldnamingstrategy.xml diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java index 44ab72c958..2d3f3b50cb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/config/MappingMongoConverterParser.java @@ -228,7 +228,8 @@ private static void parseFieldNamingStrategy(Element element, ReaderContext cont String abbreviateFieldNames = element.getAttribute("abbreviate-field-names"); String fieldNamingStrategy = element.getAttribute("field-naming-strategy-ref"); - if (StringUtils.hasText(fieldNamingStrategy) && StringUtils.hasText(abbreviateFieldNames)) { + if (StringUtils.hasText(fieldNamingStrategy) + && (StringUtils.hasText(abbreviateFieldNames) && Boolean.valueOf(abbreviateFieldNames.trim()))) { context .error("Only one of the attributes abbreviate-field-names and field-naming-strategy-ref can be configured!", diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java index bdf7c54f67..e11177ddb2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/config/MappingMongoConverterParserIntegrationTests.java @@ -25,6 +25,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.beans.factory.config.BeanReference; import org.springframework.beans.factory.parsing.BeanDefinitionParsingException; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.DefaultListableBeanFactory; @@ -134,6 +135,25 @@ public void shouldThrowBeanDefinitionParsingExceptionIfConverterDefinedAsNestedB loadNestedBeanConfiguration(); } + /** + * @see DATAMONGO-925 + */ + @Test + public void shouldSupportCustomFieldNamingStrategy() { + + BeanDefinitionRegistry factory = new DefaultListableBeanFactory(); + XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(factory); + reader.loadBeanDefinitions(new ClassPathResource("namespace/converter-custom-fieldnamingstrategy.xml")); + + BeanDefinition definition = reader.getRegistry().getBeanDefinition( + "mappingConverterWithCustomFieldNamingStrategy.mongoMappingContext"); + + BeanReference value = (BeanReference) definition.getPropertyValues().getPropertyValue("fieldNamingStrategy") + .getValue(); + + assertThat(value.getBeanName(), is("customFieldNamingStrategy")); + } + private void loadValidConfiguration() { this.loadConfiguration("namespace/converter.xml"); } diff --git a/spring-data-mongodb/src/test/resources/namespace/converter-custom-fieldnamingstrategy.xml b/spring-data-mongodb/src/test/resources/namespace/converter-custom-fieldnamingstrategy.xml new file mode 100644 index 0000000000..951d5d45d6 --- /dev/null +++ b/spring-data-mongodb/src/test/resources/namespace/converter-custom-fieldnamingstrategy.xml @@ -0,0 +1,13 @@ + + + + + + + + +