diff --git a/pom.xml b/pom.xml
index 75745189ed..c5967a43d9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-mongodb-parent
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
pom
Spring Data MongoDB
diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml
index 40e8a0f253..92c08d0604 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.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
../pom.xml
@@ -48,7 +48,7 @@
org.springframework.data
spring-data-mongodb
- 1.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml
index 13110137b6..45682ebfe6 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.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml
index 6ff09e4577..c93f5093a2 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.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml
index bfcacd66eb..2c916ee45b 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.7.0.BUILD-SNAPSHOT
+ 1.7.0.DATAMONGO-1053-SNAPSHOT
../pom.xml
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java
index c99c0eef84..b4f4f1a2b1 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntity.java
@@ -284,7 +284,7 @@ public void doWithPersistentProperty(MongoPersistentProperty persistentProperty)
private void potentiallyAssertLanguageType(MongoPersistentProperty persistentProperty) {
- if (persistentProperty.isLanguageProperty()) {
+ if (persistentProperty.isExplicitLanguageProperty()) {
assertPropertyType(persistentProperty, String.class);
}
}
diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java
index ac2ff1f9e1..4ad9439d5a 100644
--- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java
+++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/mapping/BasicMongoPersistentEntityUnitTests.java
@@ -24,6 +24,7 @@
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.context.ApplicationContext;
+import org.springframework.data.mapping.model.MappingException;
import org.springframework.data.util.ClassTypeInformation;
/**
@@ -36,6 +37,7 @@
public class BasicMongoPersistentEntityUnitTests {
@Mock ApplicationContext context;
+ @Mock MongoPersistentProperty propertyMock;
@Test
public void subclassInheritsAtDocumentAnnotation() {
@@ -80,6 +82,61 @@ public void shouldDetectLanguageCorrectly() {
assertThat(entity.getLanguage(), is("spanish"));
}
+ /**
+ * @see DATAMONGO-1053
+ */
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Test(expected = MappingException.class)
+ public void verifyShouldThrowExceptionForInvalidTypeOfExplicitLanguageProperty() {
+
+ BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity(
+ ClassTypeInformation.from(AnyDocument.class));
+
+ when(propertyMock.isExplicitLanguageProperty()).thenReturn(true);
+ when(propertyMock.getActualType()).thenReturn((Class) Number.class);
+
+ entity.addPersistentProperty(propertyMock);
+ entity.verify();
+ }
+
+ /**
+ * @see DATAMONGO-1053
+ */
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Test
+ public void verifyShouldPassForStringAsExplicitLanguageProperty() {
+
+ BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity(
+ ClassTypeInformation.from(AnyDocument.class));
+ when(propertyMock.isExplicitLanguageProperty()).thenReturn(true);
+ when(propertyMock.getActualType()).thenReturn((Class) String.class);
+ entity.addPersistentProperty(propertyMock);
+
+ entity.verify();
+
+ verify(propertyMock, times(1)).isExplicitLanguageProperty();
+ verify(propertyMock, times(1)).getActualType();
+ }
+
+ /**
+ * @see DATAMONGO-1053
+ */
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ @Test
+ public void verifyShouldIgnoreNonExplicitLanguageProperty() {
+
+ BasicMongoPersistentEntity entity = new BasicMongoPersistentEntity(
+ ClassTypeInformation.from(AnyDocument.class));
+ when(propertyMock.isExplicitLanguageProperty()).thenReturn(false);
+ when(propertyMock.getActualType()).thenReturn((Class) Number.class);
+ entity.addPersistentProperty(propertyMock);
+
+ entity.verify();
+
+ verify(propertyMock, times(1)).isExplicitLanguageProperty();
+ verify(propertyMock, never()).getActualType();
+ }
+
@Document(collection = "contacts")
class Contact {
@@ -111,4 +168,8 @@ public String getCollectionName() {
static class DocumentWithLanguage {
}
+
+ static class AnyDocument {
+
+ }
}