From d294d50407b435adbe2f9cffbbbdcd548801382f Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 19 Mar 2024 11:56:55 +0100 Subject: [PATCH] Polishing. Update javadoc to reflect recent changes and split tests. Original Pull Request: #4666 --- .../core/aggregation/AggregationOptions.java | 4 ++++ .../aggregation/AggregationOptionsTests.java | 17 +++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java index 972980b1a..50d857d1c 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOptions.java @@ -33,6 +33,10 @@ import com.mongodb.ReadPreference; * Holds a set of configurable aggregation options that can be used within an aggregation pipeline. A list of support * aggregation options can be found in the * MongoDB reference documentation. + *

+ * As off 4.3 {@link #allowDiskUse} can be {@literal null}, indicating use of server default, and may only be applied if + * {@link #isAllowDiskUseSet() explicitly set}. For compatibility reasons {@link #isAllowDiskUse()} will remain + * returning {@literal false} if the no value has been set. * * @author Thomas Darimont * @author Oliver Gierke diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOptionsTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOptionsTests.java index 249fea987..7b92dfea8 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOptionsTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationOptionsTests.java @@ -86,6 +86,12 @@ class AggregationOptionsTests { assertThat(aggregationOptions.isAllowDiskUseSet()).isFalse(); assertThat(aggregationOptions.toDocument()).doesNotContainKey("allowDiskUse"); + } + + @Test // GH-4664 + void applyOptionsDoesNotChangeAllowDiskUseDefault() { + + aggregationOptions = AggregationOptions.fromDocument(new Document()); Document empty = new Document(); aggregationOptions.applyAndReturnPotentiallyChangedCommand(empty); @@ -93,6 +99,17 @@ class AggregationOptionsTests { assertThat(empty).doesNotContainKey("allowDiskUse"); } + @Test // GH-4664 + void applyOptionsDoesNotChangeExistingAllowDiskUse() { + + aggregationOptions = AggregationOptions.fromDocument(new Document()); + + Document existing = new Document("allowDiskUse", true); + aggregationOptions.applyAndReturnPotentiallyChangedCommand(existing); + + assertThat(existing).containsEntry("allowDiskUse", true); + } + @Test // DATAMONGO-960, DATAMONGO-2153, DATAMONGO-1836 void aggregationOptionsToString() {