From 243c1719d3246bc40981b3be8b936cc9eb4c8e57 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 13 Aug 2018 13:00:10 +0200 Subject: [PATCH 1/2] DATAMONGO-2055 - Prepare issue branch. --- pom.xml | 2 +- spring-data-mongodb-benchmarks/pom.xml | 2 +- spring-data-mongodb-cross-store/pom.xml | 4 ++-- spring-data-mongodb-distribution/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 0ff20c5825..e1b3336d7b 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-mongodb-parent - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT pom Spring Data MongoDB diff --git a/spring-data-mongodb-benchmarks/pom.xml b/spring-data-mongodb-benchmarks/pom.xml index 9baccaa905..5ccc64fa36 100644 --- a/spring-data-mongodb-benchmarks/pom.xml +++ b/spring-data-mongodb-benchmarks/pom.xml @@ -7,7 +7,7 @@ org.springframework.data spring-data-mongodb-parent - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb-cross-store/pom.xml b/spring-data-mongodb-cross-store/pom.xml index 47a5b7aba7..d1f1afe2e2 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 - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT ../pom.xml @@ -50,7 +50,7 @@ org.springframework.data spring-data-mongodb - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT diff --git a/spring-data-mongodb-distribution/pom.xml b/spring-data-mongodb-distribution/pom.xml index e5c865ea08..7bb882abee 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 - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT ../pom.xml diff --git a/spring-data-mongodb/pom.xml b/spring-data-mongodb/pom.xml index b86dc2808c..5a453221da 100644 --- a/spring-data-mongodb/pom.xml +++ b/spring-data-mongodb/pom.xml @@ -11,7 +11,7 @@ org.springframework.data spring-data-mongodb-parent - 2.1.0.BUILD-SNAPSHOT + 2.1.0.DATAMONGO-2055-SNAPSHOT ../pom.xml From 73c274d366c9acf8012c450937a66c9733ce37f9 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Mon, 13 Aug 2018 13:31:13 +0200 Subject: [PATCH 2/2] DATAMONGO-2055 - Allow position modifier to be negative using push at position on Update. --- .../springframework/data/mongodb/core/query/Update.java | 8 ++------ .../data/mongodb/core/query/UpdateTests.java | 8 +++++--- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java index a96e4c9f69..64302c8770 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/query/Update.java @@ -893,18 +893,14 @@ public PushOperatorBuilder sort(Sort sort) { /** * Forces values to be added at the given {@literal position}. * - * @param position needs to be greater than or equal to zero. + * @param position the position offset. As of MongoDB 3.6 use a negative value to indicate starting from the end, + * counting (but not including) the last element of the array. * @return never {@literal null}. * @since 1.7 */ public PushOperatorBuilder atPosition(int position) { - if (position < 0) { - throw new IllegalArgumentException("Position must be greater than or equal to zero."); - } - this.modifiers.addModifier(new PositionModifier(position)); - return this; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java index 1340e83247..f467bcc67f 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/query/UpdateTests.java @@ -390,9 +390,11 @@ public void getUpdateObjectShouldReturnCorrectRepresentationForBitwiseXor() { .isEqualTo(new Document().append("$bit", new Document("key", new Document("xor", 10L)))); } - @Test(expected = IllegalArgumentException.class) // DATAMONGO-943 - public void pushShouldThrowExceptionWhenGivenNegativePosition() { - new Update().push("foo").atPosition(-1).each("booh"); + @Test // DATAMONGO-943, // DATAMONGO-2055 + public void pushShouldAllowNegativePosition() { + + assertThat(new Update().push("foo").atPosition(-1).each("booh").toString()).isEqualTo( + "{ \"$push\" : { \"foo\" : { \"$java\" : { \"$position\" : { \"$java\" : { \"$position\" : -1} }, \"$each\" : { \"$java\" : { \"$each\" : [ \"booh\"]} } } } } }"); } @Test // DATAMONGO-1346