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) {