From ebbd66cfceb4bfdef9d3672cfd6611cc83740d27 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 10 Nov 2014 14:34:07 +0100 Subject: [PATCH 1/2] DATAMONGO-1087 - Invalid cycle message. Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/pom.xml | 2 +- spring-data-mongodb-log4j/pom.xml | 2 +- spring-data-mongodb/pom.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 75745189ed..0aed04e3e5 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-1087-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..bd61a32cd0 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-1087-SNAPSHOT ../pom.xml @@ -48,7 +48,7 @@ org.springframework.data spring-data-mongodb - 1.7.0.BUILD-SNAPSHOT + 1.7.0.DATAMONGO-1087-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index 13110137b6..e4ac3ea62b 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-1087-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-log4j/pom.xml b/spring-data-mongodb-log4j/pom.xml index 6ff09e4577..782ac729cc 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-1087-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index bfcacd66eb..3dc2756c6b 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-1087-SNAPSHOT ../pom.xml From 2c60d345f262d4011e7f781a1a7843e0288bc407 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 11 Nov 2014 10:16:48 +0100 Subject: [PATCH 2/2] DATAMONGO-1087 - Fix index resolver detecting cycles for partial match. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now check for presence of a dot path to verify that we’ve detected a cycle. --- .../MongoPersistentEntityIndexResolver.java | 2 +- ...ersistentEntityIndexResolverUnitTests.java | 50 +++++++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) 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 87c6377395..a7d4e920e2 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 @@ -540,7 +540,7 @@ boolean cycles(MongoPersistentProperty property, String path) { return false; } - return path.contains(this.path); + return path.equals(this.path) || path.contains(this.path + ".") || path.contains("." + this.path); } } } 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 5df5d53910..ba876bc03d 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 @@ -830,6 +830,32 @@ public void shouldUseIndexNameOnRootLevel() { assertThat((String) indexDefinitions.get(0).getIndexOptions().get("name"), equalTo("property_index")); } + /** + * @see DATAMONGO-1087 + */ + @Test + public void shouldAllowMultiplePropertiesOfSameTypeWithMatchingStartLettersOnRoot() { + + List indexDefinitions = prepareMappingContextAndResolveIndexForType(MultiplePropertiesOfSameTypeWithMatchingStartLetters.class); + + assertThat(indexDefinitions, hasSize(2)); + assertThat((String) indexDefinitions.get(0).getIndexOptions().get("name"), equalTo("name.component")); + assertThat((String) indexDefinitions.get(1).getIndexOptions().get("name"), equalTo("nameLast.component")); + } + + /** + * @see DATAMONGO-1087 + */ + @Test + public void shouldAllowMultiplePropertiesOfSameTypeWithMatchingStartLettersOnNestedProperty() { + + List indexDefinitions = prepareMappingContextAndResolveIndexForType(MultiplePropertiesOfSameTypeWithMatchingStartLettersOnNestedProperty.class); + + assertThat(indexDefinitions, hasSize(2)); + assertThat((String) indexDefinitions.get(0).getIndexOptions().get("name"), equalTo("component.nameLast")); + assertThat((String) indexDefinitions.get(1).getIndexOptions().get("name"), equalTo("component.name")); + } + @Document static class MixedIndexRoot { @@ -970,6 +996,30 @@ static class DocumentWithNestedTypeHavingNamedIndex { TypeWithNamedIndex propertyOfTypeHavingNamedIndex; } + @Document + public class MultiplePropertiesOfSameTypeWithMatchingStartLetters { + + public class NameComponent { + + @Indexed String component; + } + + NameComponent name; + NameComponent nameLast; + } + + @Document + public class MultiplePropertiesOfSameTypeWithMatchingStartLettersOnNestedProperty { + + public class NameComponent { + + @Indexed String nameLast; + @Indexed String name; + } + + NameComponent component; + } + } private static List prepareMappingContextAndResolveIndexForType(Class type) {