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 { + + } }