diff --git a/pom.xml b/pom.xml index 74b7a38a74..aae2d59454 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 1.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index 7d18f752fc..0bb32bb842 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.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 1.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 13c0985a6a..7080e20418 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.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 64d6f7864a..8cb85e732a 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.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index 819112059b..6bef9732bc 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.8.0.BUILD-SNAPSHOT + 1.8.0.DATAMONGO-1263-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java index 6e66f48be0..8650cd9f89 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolver.java @@ -108,7 +108,7 @@ public void doWithPersistentProperty(MongoPersistentProperty persistentProperty) try { if (persistentProperty.isEntity()) { - indexInformation.addAll(resolveIndexForClass(persistentProperty.getActualType(), + indexInformation.addAll(resolveIndexForClass(persistentProperty.getTypeInformation().getActualType(), persistentProperty.getFieldName(), root.getCollection(), guard)); } @@ -135,7 +135,7 @@ public void doWithPersistentProperty(MongoPersistentProperty persistentProperty) * @return List of {@link IndexDefinitionHolder} representing indexes for given type and its referenced property * types. Will never be {@code null}. */ - private List resolveIndexForClass(final Class type, final String path, + private List resolveIndexForClass(final TypeInformation type, final String path, final String collection, final CycleGuard guard) { MongoPersistentEntity entity = mappingContext.getPersistentEntity(type); @@ -153,8 +153,8 @@ public void doWithPersistentProperty(MongoPersistentProperty persistentProperty) if (persistentProperty.isEntity()) { try { - indexInformation.addAll(resolveIndexForClass(persistentProperty.getActualType(), propertyDotPath, - collection, guard)); + indexInformation.addAll(resolveIndexForClass(persistentProperty.getTypeInformation().getActualType(), + propertyDotPath, collection, guard)); } catch (CyclicPropertyReferenceException e) { LOGGER.info(e.getMessage()); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java index 527cd59cfd..92b14be834 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/index/MongoPersistentEntityIndexResolverUnitTests.java @@ -853,6 +853,19 @@ public void shouldOnlyConsiderEntitiesAsPotentialCycleCandidates() { } + /** + * @see DATAMONGO-1263 + */ + @Test + public void shouldConsiderGenericTypeArgumentsOfCollectionElements() { + + List indexDefinitions = prepareMappingContextAndResolveIndexForType(EntityWithGenericTypeWrapperAsElement.class); + + assertThat(indexDefinitions, hasSize(1)); + assertThat((String) indexDefinitions.get(0).getIndexOptions().get("name"), + equalTo("listWithGeneircTypeElement.entity.property_index")); + } + @Document static class MixedIndexRoot { @@ -1028,6 +1041,15 @@ public static class AlternatePathToNoCycleButIndenticallNamedPropertiesDeeplyNes NoCycleButIndenticallNamedPropertiesDeeplyNested propertyWithIndexedStructure; } + static class GenericEntityWrapper { + T entity; + } + + @Document + static class EntityWithGenericTypeWrapperAsElement { + List> listWithGeneircTypeElement; + } + } private static List prepareMappingContextAndResolveIndexForType(Class type) {