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
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 @@
+
+
+
+
+
+
+
+
+