From 3eba7de07323345d28b3de963998ba8f46c9d318 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 16 Aug 2018 11:39:12 +0200 Subject: [PATCH] DATAMONGO-2053 - Polishing. Tweak Javadoc. Surpress generics warnings. Remove nullable annotation from ObjectOperatorFactory.value as it cannot be null. Extend tests. Reformat. Original pull request: #601. --- .../aggregation/AbstractAggregationExpression.java | 2 +- .../mongodb/core/aggregation/ObjectOperators.java | 13 +++++++------ .../core/aggregation/ObjectOperatorsUnitTests.java | 6 ++++-- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java index ecdea2166..e42e9ed12 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AbstractAggregationExpression.java @@ -93,7 +93,7 @@ abstract class AbstractAggregationExpression implements AggregationExpression { return targetDocument; } - if(value instanceof SystemVariable) { + if (value instanceof SystemVariable) { return value.toString(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java index 954d915cb..17a7bcdab 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ObjectOperators.java @@ -19,11 +19,10 @@ import java.util.Arrays; import java.util.Collection; import org.bson.Document; -import org.springframework.lang.Nullable; import org.springframework.util.Assert; /** - * Abstraction for + * Gateway for * object * expression operators. * @@ -57,7 +56,7 @@ public class ObjectOperators { */ public static class ObjectOperatorFactory { - @Nullable private final Object value; + private final Object value; /** * Creates new {@link ObjectOperatorFactory} for given {@literal value}. @@ -67,6 +66,7 @@ public class ObjectOperators { public ObjectOperatorFactory(Object value) { Assert.notNull(value, "Value must not be null!"); + this.value = value; } @@ -83,7 +83,7 @@ public class ObjectOperators { /** * Creates new {@link MergeObjects aggregation expression} that takes the associated value and combines it with the - * given values into a single document.
+ * given values (documents or mapped objects) into a single document.
* NOTE: Requires MongoDB 4.0 or later. * * @return new instance of {@link MergeObjects}. @@ -186,7 +186,7 @@ public class ObjectOperators { } /** - * Creates new {@link MergeObjects aggregation expression} by adding the given values. + * Creates new {@link MergeObjects aggregation expression} by adding the given values (documents or mapped objects). * * @param values must not be {@literal null}. * @return new instance of {@link MergeObjects}. @@ -204,11 +204,12 @@ public class ObjectOperators { return super.toDocument(potentiallyExtractSingleValue(value), context); } + @SuppressWarnings("unchecked") private Object potentiallyExtractSingleValue(Object value) { if (value instanceof Collection) { - Collection collection = ((Collection) value); + Collection collection = ((Collection) value); if (collection.size() == 1) { return collection.iterator().next(); } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java index c1d6d3484..a1b2a04b3 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ObjectOperatorsUnitTests.java @@ -26,6 +26,7 @@ import org.springframework.data.mongodb.core.aggregation.ObjectOperators.MergeOb * Unit tests for {@link ObjectOperators}. * * @author Christoph Strobl + * @author Mark Paluch * @currentRead Royal Assassin - Robin Hobb */ public class ObjectOperatorsUnitTests { @@ -67,8 +68,9 @@ public class ObjectOperatorsUnitTests { public void mergeMixed() { assertThat( - ObjectOperators.valueOf("kettricken").mergeWithValuesOf(EXPRESSION).toDocument(Aggregation.DEFAULT_CONTEXT)) - .isEqualTo(Document.parse("{ $mergeObjects: [ \"$kettricken\", " + EXPRESSION_STRING + " ] } ")); + ObjectOperators.valueOf("kettricken").mergeWithValuesOf(EXPRESSION).mergeWithValuesOf("verity") + .toDocument(Aggregation.DEFAULT_CONTEXT)).isEqualTo( + Document.parse("{ $mergeObjects: [ \"$kettricken\", " + EXPRESSION_STRING + ", \"$verity\" ] } ")); } @Test // DATAMONGO-2053