From 2c1a3cf03e85fb8d1af3d5464837412f6bc368fc Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 16 Jul 2020 09:41:46 +0200 Subject: [PATCH] DATAMONGO-2536 - Polishing. Encapsulate skipResults in AggregationOptions. Reformat code. Add override Javadoc. Original pull request: #876. --- .../data/mongodb/core/MongoTemplate.java | 8 +- .../mongodb/core/ReactiveMongoTemplate.java | 19 +-- .../core/aggregation/AddFieldsOperation.java | 4 + .../mongodb/core/aggregation/Aggregation.java | 8 +- .../aggregation/AggregationOperation.java | 9 +- .../core/aggregation/AggregationOptions.java | 13 +- .../core/aggregation/AggregationPipeline.java | 4 +- .../core/aggregation/BucketAutoOperation.java | 11 +- .../core/aggregation/BucketOperation.java | 20 ++- .../core/aggregation/CountOperation.java | 4 +- .../DocumentEnhancingOperation.java | 6 +- .../core/aggregation/FacetOperation.java | 11 +- .../core/aggregation/GeoNearOperation.java | 21 ++- .../aggregation/GraphLookupOperation.java | 4 +- .../core/aggregation/GroupOperation.java | 8 +- .../core/aggregation/LimitOperation.java | 8 +- .../core/aggregation/LiteralOperators.java | 4 + .../core/aggregation/LookupOperation.java | 11 +- .../core/aggregation/MatchOperation.java | 11 +- .../core/aggregation/MergeOperation.java | 10 +- .../core/aggregation/OutOperation.java | 9 +- .../core/aggregation/ProjectionOperation.java | 14 +- .../core/aggregation/RedactOperation.java | 8 +- .../aggregation/ReplaceRootOperation.java | 6 +- .../core/aggregation/SampleOperation.java | 8 +- .../core/aggregation/SetOperation.java | 4 + .../core/aggregation/SkipOperation.java | 11 +- .../aggregation/SortByCountOperation.java | 10 +- .../core/aggregation/SortOperation.java | 11 +- .../core/aggregation/UnsetOperation.java | 12 +- .../core/aggregation/UnwindOperation.java | 13 +- .../core/aggregation/AggregationTests.java | 160 +++++++++--------- .../aggregation/ReactiveAggregationTests.java | 1 - 33 files changed, 278 insertions(+), 183 deletions(-) diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java index 1b1ad7d33..acdcfd7a9 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/MongoTemplate.java @@ -28,6 +28,7 @@ import org.bson.Document; import org.bson.conversions.Bson; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -62,7 +63,6 @@ import org.springframework.data.mongodb.core.QueryOperations.UpdateContext; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.AggregationOptions; -import org.springframework.data.mongodb.core.aggregation.AggregationOptions.ResultOptions; import org.springframework.data.mongodb.core.aggregation.AggregationResults; import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypedAggregation; @@ -2132,7 +2132,7 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, List rawResult = new ArrayList<>(); - Class domainType = aggregation instanceof TypedAggregation ? ((TypedAggregation) aggregation).getInputType() + Class domainType = aggregation instanceof TypedAggregation ? ((TypedAggregation) aggregation).getInputType() : null; Optional collation = Optionals.firstNonEmpty(options::getCollation, @@ -2153,10 +2153,10 @@ public class MongoTemplate implements MongoOperations, ApplicationContextAware, aggregateIterable = aggregateIterable.maxTime(options.getMaxTime().toMillis(), TimeUnit.MILLISECONDS); } - if(ResultOptions.SKIP.equals(options.resultOptions())) { + if (options.isSkipResults()) { // toCollection only allowed for $out and $merge if those are the last stages - if(aggregation.getPipeline().isOutOrMerge()) { + if (aggregation.getPipeline().isOutOrMerge()) { aggregateIterable.toCollection(); } else { aggregateIterable.first(); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java index 4688df6c7..da60cd671 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/ReactiveMongoTemplate.java @@ -26,7 +26,6 @@ import java.util.*; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Function; -import java.util.function.Supplier; import java.util.stream.Collectors; import org.bson.BsonValue; @@ -37,6 +36,7 @@ import org.reactivestreams.Publisher; import org.reactivestreams.Subscriber; import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; @@ -69,7 +69,6 @@ import org.springframework.data.mongodb.core.QueryOperations.UpdateContext; import org.springframework.data.mongodb.core.aggregation.Aggregation; import org.springframework.data.mongodb.core.aggregation.AggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.AggregationOptions; -import org.springframework.data.mongodb.core.aggregation.AggregationOptions.ResultOptions; import org.springframework.data.mongodb.core.aggregation.PrefixingDelegatingAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypeBasedAggregationOperationContext; import org.springframework.data.mongodb.core.aggregation.TypedAggregation; @@ -1006,11 +1005,14 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati } ReadDocumentCallback readCallback = new ReadDocumentCallback<>(mongoConverter, outputType, collectionName); - return execute(collectionName, collection -> aggregateAndMap(collection, pipeline, () -> aggregation.getPipeline().isOutOrMerge(), options, readCallback, - aggregation instanceof TypedAggregation ? ((TypedAggregation) aggregation).getInputType() : null)); + return execute(collectionName, + collection -> aggregateAndMap(collection, pipeline, aggregation.getPipeline().isOutOrMerge(), options, + readCallback, + aggregation instanceof TypedAggregation ? ((TypedAggregation) aggregation).getInputType() : null)); } - private Flux aggregateAndMap(MongoCollection collection, List pipeline, Supplier isOutOrMerge, + private Flux aggregateAndMap(MongoCollection collection, List pipeline, + boolean isOutOrMerge, AggregationOptions options, ReadDocumentCallback readCallback, @Nullable Class inputType) { AggregatePublisher cursor = collection.aggregate(pipeline, Document.class) @@ -1030,11 +1032,8 @@ public class ReactiveMongoTemplate implements ReactiveMongoOperations, Applicati cursor = cursor.maxTime(options.getMaxTime().toMillis(), TimeUnit.MILLISECONDS); } - if (ResultOptions.SKIP.equals(options.resultOptions())) { - if (isOutOrMerge.get()) { - return Flux.from(cursor.toCollection()).map(it -> (O) it); - } - return Flux.from(cursor.first()).thenMany(Mono.empty()); + if (options.isSkipResults()) { + return (isOutOrMerge ? Flux.from(cursor.toCollection()) : Flux.from(cursor.first())).thenMany(Mono.empty()); } return Flux.from(cursor).concatMap(readCallback::doWith); diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java index 8ebc744ad..449c137b7 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AddFieldsOperation.java @@ -99,6 +99,10 @@ public class AddFieldsOperation extends DocumentEnhancingOperation { return new AddFieldsOperationBuilder(getValueMap()); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.DocumentEnhancingOperation#mongoOperator() + */ @Override protected String mongoOperator() { return "$addFields"; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java index 32c4a441c..df7578125 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java @@ -645,9 +645,9 @@ public class Aggregation { /** * Creates a new {@link RedactOperation} that can restrict the content of a document based on information stored * within the document itself. - * + * *
-	 * 
+	 *
 	 * Aggregation.redact(ConditionalOperators.when(Criteria.where("level").is(5)) //
 	 * 		.then(RedactOperation.PRUNE) //
 	 * 		.otherwise(RedactOperation.DESCEND));
@@ -705,6 +705,10 @@ public class Aggregation {
 		return pipeline.toDocuments(rootContext);
 	}
 
+	/**
+	 * @return the {@link AggregationPipeline}.
+	 * @since 3.0.2
+	 */
 	public AggregationPipeline getPipeline() {
 		return pipeline;
 	}
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java
index e611528e7..b22458ad9 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationOperation.java
@@ -55,7 +55,14 @@ public interface AggregationOperation {
 		return Collections.singletonList(toDocument(context));
 	}
 
-	default String operator() {
+	/**
+	 * Return the MongoDB operator that is used for this {@link AggregationOperation}. Aggregation operations should
+	 * implement this method to avoid document rendering.
+	 *
+	 * @return the operator used for this {@link AggregationOperation}.
+	 * @since 3.0.2
+	 */
+	default String getOperator() {
 		return toDocument(Aggregation.DEFAULT_CONTEXT).keySet().iterator().next();
 	}
 }
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 aab74a8a6..fc5928215 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
@@ -221,11 +221,12 @@ public class AggregationOptions {
 	}
 
 	/**
-	 * @return the {@link ResultOptions} to be used when running the {@link Aggregation}. Never {@literal null}.
-	 * @since 3.0
+	 * @return {@literal true} to skip results when running an aggregation. Useful in combination with {@code $merge} or
+	 *         {@code $out}.
+	 * @since 3.0.2
 	 */
-	public ResultOptions resultOptions() {
-		return resultOptions;
+	public boolean isSkipResults() {
+		return ResultOptions.SKIP.equals(resultOptions);
 	}
 
 	/**
@@ -415,7 +416,7 @@ public class AggregationOptions {
 		 * option allows to execute the aggregation without having the cursor return the operation result.
 		 *
 		 * @return this.
-		 * @since 3.0
+		 * @since 3.0.2
 		 */
 		public Builder skipOutput() {
 
@@ -445,7 +446,7 @@ public class AggregationOptions {
 	/**
 	 * @since 3.0
 	 */
-	public enum ResultOptions {
+	private enum ResultOptions {
 
 		/**
 		 * Just do it!, and do not read the operation result.
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java
index 2b7ae7d2d..8c4b0ed10 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/AggregationPipeline.java
@@ -26,7 +26,7 @@ import org.springframework.util.Assert;
  * The {@link AggregationPipeline} holds the collection of {@link AggregationOperation aggregation stages}.
  *
  * @author Christoph Strobl
- * @since 3.1
+ * @since 3.0.2
  */
 public class AggregationPipeline {
 
@@ -86,7 +86,7 @@ public class AggregationPipeline {
 			return false;
 		}
 
-		String operator = pipeline.get(pipeline.size() - 1).operator();
+		String operator = pipeline.get(pipeline.size() - 1).getOperator();
 		return operator.equals("$out") || operator.equals("$merge");
 	}
 
diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java
index 22511adb8..3f2d73347 100644
--- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java
+++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/BucketAutoOperation.java
@@ -15,12 +15,11 @@
  */
 package org.springframework.data.mongodb.core.aggregation;
 
+import org.bson.Document;
 import org.springframework.data.mongodb.core.aggregation.BucketAutoOperation.BucketAutoOperationOutputBuilder;
 import org.springframework.data.mongodb.core.aggregation.BucketOperationSupport.OutputBuilder;
 import org.springframework.util.Assert;
 
-import org.bson.Document;
-
 /**
  * Encapsulates the aggregation framework {@code $bucketAuto}-operation. 
* Bucket stage is typically used with {@link Aggregation} and {@code $facet}. Categorizes incoming documents into a @@ -106,11 +105,15 @@ public class BucketAutoOperation extends BucketOperationSupport - * * Bucket stage is typically used with {@link Aggregation} and {@code $facet}. Categorizes incoming documents into * groups, called buckets, based on a specified expression and bucket boundaries.
- * * We recommend to use the static factory method {@link Aggregation#bucket(String)} instead of creating instances of * this class directly. * - * @see https://docs.mongodb.org/manual/reference/aggregation/bucket/ + * @see https://docs.mongodb.org/manual/reference/aggregation/bucket/ * @see BucketOperationSupport * @author Mark Paluch * @since 1.10 @@ -103,11 +101,15 @@ public class BucketOperation extends BucketOperationSupport { /** - * Creates a new {@link ExpressionBucketOperationBuilderSupport} for the given value, {@link BucketOperation} - * and parameters. + * Creates a new {@link ExpressionBucketOperationBuilderSupport} for the given value, {@link BucketOperation} and + * parameters. * * @param expression must not be {@literal null}. * @param operation must not be {@literal null}. diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/CountOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/CountOperation.java index 03bdf21ca..8ac0d45b6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/CountOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/CountOperation.java @@ -49,11 +49,11 @@ public class CountOperation implements FieldsExposingAggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), fieldName); + return new Document(getOperator(), fieldName); } @Override - public String operator() { + public String getOperator() { return "$count"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java index 77a1a064a..0a650dc0d 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/DocumentEnhancingOperation.java @@ -71,8 +71,12 @@ abstract class DocumentEnhancingOperation implements InheritsFieldsAggregationOp */ protected abstract String mongoOperator(); + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return mongoOperator(); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/FacetOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/FacetOperation.java index e1a4f9144..77fe14854 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/FacetOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/FacetOperation.java @@ -20,12 +20,11 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import org.bson.Document; import org.springframework.data.mongodb.core.aggregation.BucketOperationSupport.Output; import org.springframework.data.mongodb.core.aggregation.ExposedFields.ExposedField; import org.springframework.util.Assert; -import org.bson.Document; - /** * Encapsulates the aggregation framework {@code $facet}-operation.
* Facet of {@link AggregationOperation}s to be used in an {@link Aggregation}. Processes multiple @@ -84,11 +83,15 @@ public class FacetOperation implements FieldsExposingAggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), facets.toDocument(context)); + return new Document(getOperator(), facets.toDocument(context)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$facet"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GeoNearOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GeoNearOperation.java index b17b90d2f..83468abb1 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GeoNearOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GeoNearOperation.java @@ -16,14 +16,12 @@ package org.springframework.data.mongodb.core.aggregation; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import org.bson.Document; import org.springframework.data.mongodb.core.query.NearQuery; import org.springframework.lang.Nullable; import org.springframework.util.Assert; -import org.springframework.util.NumberUtils; import org.springframework.util.StringUtils; /** @@ -95,25 +93,26 @@ public class GeoNearOperation implements AggregationOperation { Document command = context.getMappedObject(nearQuery.toDocument()); - if(command.containsKey("query")) { + if (command.containsKey("query")) { command.replace("query", context.getMappedObject(command.get("query", Document.class))); } - if(command.containsKey("collation")) { - command.remove("collation"); - } - + command.remove("collation"); command.put("distanceField", distanceField); if (StringUtils.hasText(indexKey)) { command.put("key", indexKey); } - return new Document(operator(), command); + return new Document(getOperator(), command); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$geoNear"; } @@ -130,11 +129,11 @@ public class GeoNearOperation implements AggregationOperation { List stages = new ArrayList<>(); stages.add(command); - if(nearQuery.getSkip() != null && nearQuery.getSkip() > 0){ + if (nearQuery.getSkip() != null && nearQuery.getSkip() > 0) { stages.add(new Document("$skip", nearQuery.getSkip())); } - if(limit != null) { + if (limit != null) { stages.add(new Document("$limit", limit.longValue())); } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java index 4afb13177..abf7ff393 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GraphLookupOperation.java @@ -119,11 +119,11 @@ public class GraphLookupOperation implements InheritsFieldsAggregationOperation graphLookup.put("restrictSearchWithMatch", context.getMappedObject(restrictSearchWithMatch.getCriteriaObject())); } - return new Document(operator(), graphLookup); + return new Document(getOperator(), graphLookup); } @Override - public String operator() { + public String getOperator() { return "$graphLookup"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java index d4a4a9dd3..8f586fd75 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/GroupOperation.java @@ -429,11 +429,15 @@ public class GroupOperation implements FieldsExposingAggregationOperation { operationObject.putAll(operation.toDocument(context)); } - return new Document(operator(), operationObject); + return new Document(getOperator(), operationObject); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$group"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java index bc0a0de8e..e41363b23 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LimitOperation.java @@ -49,11 +49,15 @@ public class LimitOperation implements AggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), Long.valueOf(maxElements)); + return new Document(getOperator(), Long.valueOf(maxElements)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$limit"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LiteralOperators.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LiteralOperators.java index 64ac1a1d2..062f823e3 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LiteralOperators.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LiteralOperators.java @@ -76,6 +76,10 @@ public class LiteralOperators { super(value); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AbstractAggregationExpression#getMongoMethod() + */ @Override protected String getMongoMethod() { return "$literal"; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java index 4f2c89c0d..7be63c33e 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/LookupOperation.java @@ -83,11 +83,15 @@ public class LookupOperation implements FieldsExposingAggregationOperation, Inhe lookupObject.append("foreignField", foreignField.getTarget()); lookupObject.append("as", as.getTarget()); - return new Document(operator(), lookupObject); + return new Document(getOperator(), lookupObject); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$lookup"; } @@ -173,8 +177,7 @@ public class LookupOperation implements FieldsExposingAggregationOperation, Inhe Assert.hasText(name, "'As' must not be null or empty!"); as = new ExposedField(Fields.field(name), true); - return new LookupOperation(from, localField, foreignField, - as); + return new LookupOperation(from, localField, foreignField, as); } @Override diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MatchOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MatchOperation.java index d306077c2..8f2f0aa28 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MatchOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MatchOperation.java @@ -30,7 +30,8 @@ import org.springframework.util.Assert; * @author Thomas Darimont * @author Oliver Gierke * @since 1.3 - * @see MongoDB Aggregation Framework: $match + * @see MongoDB Aggregation Framework: + * $match */ public class MatchOperation implements AggregationOperation { @@ -53,11 +54,15 @@ public class MatchOperation implements AggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), context.getMappedObject(criteriaDefinition.getCriteriaObject())); + return new Document(getOperator(), context.getMappedObject(criteriaDefinition.getCriteriaObject())); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$match"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java index eba2d204b..05e01e4fc 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/MergeOperation.java @@ -100,7 +100,7 @@ public class MergeOperation implements FieldsExposingAggregationOperation, Inher public Document toDocument(AggregationOperationContext context) { if (isJustCollection()) { - return new Document(operator(), into.collection); + return new Document(getOperator(), into.collection); } Document $merge = new Document(); @@ -122,11 +122,15 @@ public class MergeOperation implements FieldsExposingAggregationOperation, Inher $merge.putAll(whenNotMatched.toDocument(context)); } - return new Document(operator(), $merge); + return new Document(getOperator(), $merge); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$merge"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java index d4c44a1f7..4eaa66966 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/OutOperation.java @@ -16,7 +16,6 @@ package org.springframework.data.mongodb.core.aggregation; import org.bson.Document; - import org.springframework.data.mongodb.util.BsonUtils; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -211,11 +210,15 @@ public class OutOperation implements AggregationOperation { $out.append("uniqueKey", uniqueKey); } - return new Document(operator(), $out); + return new Document(getOperator(), $out); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$out"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java index d0bbcfa06..21278041a 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ProjectionOperation.java @@ -261,11 +261,15 @@ public class ProjectionOperation implements FieldsExposingAggregationOperation { fieldObject.putAll(projection.toDocument(context)); } - return new Document(operator(), fieldObject); + return new Document(getOperator(), fieldObject); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$project"; } @@ -1553,7 +1557,7 @@ public class ProjectionOperation implements FieldsExposingAggregationOperation { final Field aliasedField = Fields.field(alias, this.field.getName()); return new OperationProjection(aliasedField, operation, values.toArray()) { - /* + /* * (non-Javadoc) * @see org.springframework.data.mongodb.core.aggregation.ProjectionOperation.ProjectionOperationBuilder.OperationProjection#getField() */ @@ -1754,7 +1758,7 @@ public class ProjectionOperation implements FieldsExposingAggregationOperation { this.expression = expression; } - /* + /* * (non-Javadoc) * @see org.springframework.data.mongodb.core.aggregation.ProjectionOperation.Projection#toDocument(org.springframework.data.mongodb.core.aggregation.AggregationOperationContext) */ @@ -1882,7 +1886,7 @@ public class ProjectionOperation implements FieldsExposingAggregationOperation { this.projections = projections; } - /* + /* * (non-Javadoc) * @see org.springframework.data.mongodb.core.aggregation.ProjectionOperation.Projection#toDocument(org.springframework.data.mongodb.core.aggregation.AggregationOperationContext) */ diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java index 7f27bf77a..3428b64bb 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/RedactOperation.java @@ -74,11 +74,15 @@ public class RedactOperation implements AggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), condition.toDocument(context)); + return new Document(getOperator(), condition.toDocument(context)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$redact"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java index 6d53221f9..a63275fee 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/ReplaceRootOperation.java @@ -86,8 +86,12 @@ public class ReplaceRootOperation implements FieldsExposingAggregationOperation return new Document("$replaceRoot", new Document("newRoot", getReplacement().toDocumentExpression(context))); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$replaceRoot"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SampleOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SampleOperation.java index a7c1fe711..b1c3bf4ce 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SampleOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SampleOperation.java @@ -48,11 +48,15 @@ public class SampleOperation implements AggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), new Document("size", this.sampleSize)); + return new Document(getOperator(), new Document("size", this.sampleSize)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$sample"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java index b9f43d5d3..cd06098fe 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SetOperation.java @@ -99,6 +99,10 @@ public class SetOperation extends DocumentEnhancingOperation { return new FieldAppender(getValueMap()); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.DocumentEnhancingOperation#mongoOperator() + */ @Override protected String mongoOperator() { return "$set"; diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java index 10883b037..2fbbc7209 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SkipOperation.java @@ -28,7 +28,8 @@ import org.springframework.util.Assert; * @author Oliver Gierke * @author Christoph Strobl * @since 1.3 - * @see MongoDB Aggregation Framework: $skip + * @see MongoDB Aggregation Framework: + * $skip */ public class SkipOperation implements AggregationOperation { @@ -51,11 +52,15 @@ public class SkipOperation implements AggregationOperation { */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), skipCount); + return new Document(getOperator(), skipCount); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$skip"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortByCountOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortByCountOperation.java index f26e60eac..a631b0862 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortByCountOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortByCountOperation.java @@ -67,19 +67,23 @@ public class SortByCountOperation implements AggregationOperation { this.groupByField = null; } - /* + /* * (non-Javadoc) * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#toDocument(org.springframework.data.mongodb.core.aggregation.AggregationOperationContext) */ @Override public Document toDocument(AggregationOperationContext context) { - return new Document(operator(), groupByExpression == null ? context.getReference(groupByField).toString() + return new Document(getOperator(), groupByExpression == null ? context.getReference(groupByField).toString() : groupByExpression.toDocument(context)); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$sortByCount"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortOperation.java index cfd3f8a3e..5b5cce458 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/SortOperation.java @@ -33,7 +33,8 @@ import org.springframework.util.Assert; * @author Christoph Strobl * @author Mark Paluch * @since 1.3 - * @see MongoDB Aggregation Framework: $sort + * @see MongoDB Aggregation Framework: + * $sort */ public class SortOperation implements AggregationOperation { @@ -74,11 +75,15 @@ public class SortOperation implements AggregationOperation { object.put(reference.getRaw(), order.isAscending() ? 1 : -1); } - return new Document(operator(), object); + return new Document(getOperator(), object); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$sort"; } } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java index 89dc79ea8..b42cef2a6 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnsetOperation.java @@ -40,7 +40,7 @@ public class UnsetOperation implements InheritsFieldsAggregationOperation { /** * Create new instance of {@link UnsetOperation}. - * + * * @param fields must not be {@literal null}. */ public UnsetOperation(Collection fields) { @@ -117,15 +117,19 @@ public class UnsetOperation implements InheritsFieldsAggregationOperation { public Document toDocument(AggregationOperationContext context) { if (fields.size() == 1) { - return new Document(operator(), computeFieldName(fields.iterator().next(), context)); + return new Document(getOperator(), computeFieldName(fields.iterator().next(), context)); } - return new Document(operator(), + return new Document(getOperator(), fields.stream().map(it -> computeFieldName(it, context)).collect(Collectors.toList())); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$unset"; } diff --git a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java index 492afd244..11e4dcaea 100644 --- a/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java +++ b/spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/UnwindOperation.java @@ -31,7 +31,8 @@ import org.springframework.util.Assert; * @author Mark Paluch * @author Christoph Strobl * @since 1.3 - * @see MongoDB Aggregation Framework: $unwind + * @see MongoDB Aggregation Framework: + * $unwind */ public class UnwindOperation implements AggregationOperation, FieldsExposingAggregationOperation.InheritsFieldsAggregationOperation { @@ -94,7 +95,7 @@ public class UnwindOperation String path = context.getReference(field).toString(); if (!preserveNullAndEmptyArrays && arrayIndex == null) { - return new Document(operator(), path); + return new Document(getOperator(), path); } Document unwindArgs = new Document(); @@ -104,11 +105,15 @@ public class UnwindOperation } unwindArgs.put("preserveNullAndEmptyArrays", preserveNullAndEmptyArrays); - return new Document(operator(), unwindArgs); + return new Document(getOperator(), unwindArgs); } + /* + * (non-Javadoc) + * @see org.springframework.data.mongodb.core.aggregation.AggregationOperation#getOperator() + */ @Override - public String operator() { + public String getOperator() { return "$unwind"; } diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java index 6be58d731..abc994a05 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/AggregationTests.java @@ -99,17 +99,17 @@ public class AggregationTests { private static boolean initialized = false; @Template // - static MongoTestTemplate mongoTemplate; + private static MongoTestTemplate mongoTemplate; @BeforeEach - public void setUp() { + void setUp() { cleanDb(); initSampleDataIfNecessary(); } @AfterEach - public void cleanUp() { + void cleanUp() { cleanDb(); } @@ -167,25 +167,25 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void shouldHandleMissingInputCollection() { + void shouldHandleMissingInputCollection() { assertThatIllegalArgumentException() .isThrownBy(() -> mongoTemplate.aggregate(newAggregation(), (String) null, TagCount.class)); } @Test // DATAMONGO-586 - public void shouldHandleMissingAggregationPipeline() { + void shouldHandleMissingAggregationPipeline() { assertThatIllegalArgumentException() .isThrownBy(() -> mongoTemplate.aggregate(null, INPUT_COLLECTION, TagCount.class)); } @Test // DATAMONGO-586 - public void shouldHandleMissingEntityClass() { + void shouldHandleMissingEntityClass() { assertThatIllegalArgumentException() .isThrownBy(() -> mongoTemplate.aggregate(newAggregation(), INPUT_COLLECTION, null)); } @Test // DATAMONGO-586 - public void shouldAggregate() { + void shouldAggregate() { createTagDocuments(); @@ -214,7 +214,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void shouldAggregateAndStream() { + void shouldAggregateAndStream() { createTagDocuments(); @@ -243,7 +243,7 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void shouldAggregateEmptyCollection() { + void shouldAggregateEmptyCollection() { Aggregation aggregation = newAggregation(// project("tags"), // @@ -266,7 +266,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void shouldAggregateEmptyCollectionAndStream() { + void shouldAggregateEmptyCollectionAndStream() { Aggregation aggregation = newAggregation(// project("tags"), // @@ -289,7 +289,7 @@ public class AggregationTests { } @Test // DATAMONGO-1391 - public void shouldUnwindWithIndex() { + void shouldUnwindWithIndex() { MongoCollection coll = mongoTemplate.getCollection(INPUT_COLLECTION); @@ -315,7 +315,7 @@ public class AggregationTests { } @Test // DATAMONGO-1391 - public void shouldUnwindPreserveEmpty() { + void shouldUnwindPreserveEmpty() { MongoCollection coll = mongoTemplate.getCollection(INPUT_COLLECTION); @@ -341,7 +341,7 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void shouldDetectResultMismatch() { + void shouldDetectResultMismatch() { createTagDocuments(); @@ -366,7 +366,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void shouldDetectResultMismatchWhileStreaming() { + void shouldDetectResultMismatchWhileStreaming() { createTagDocuments(); @@ -391,7 +391,7 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void complexAggregationFrameworkUsageLargestAndSmallestCitiesByState() { + void complexAggregationFrameworkUsageLargestAndSmallestCitiesByState() { /* //complex mongodb aggregation framework example from https://docs.mongodb.org/manual/tutorial/aggregation-examples/#largest-and-smallest-cities-by-state db.zipInfo.aggregate( @@ -499,11 +499,11 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void findStatesWithPopulationOver10MillionAggregationExample() { + void findStatesWithPopulationOver10MillionAggregationExample() { /* //complex mongodb aggregation framework example from https://docs.mongodb.org/manual/tutorial/aggregation-examples/#largest-and-smallest-cities-by-state - + db.zipcodes.aggregate( { $group: { @@ -549,7 +549,7 @@ public class AggregationTests { * Framework: $cond */ @Test // DATAMONGO-861 - public void aggregationUsingConditionalProjectionToCalculateDiscount() { + void aggregationUsingConditionalProjectionToCalculateDiscount() { /* db.inventory.aggregate( @@ -602,7 +602,7 @@ public class AggregationTests { * Framework: $ifNull */ @Test // DATAMONGO-861 - public void aggregationUsingIfNullToProjectSaneDefaults() { + void aggregationUsingIfNullToProjectSaneDefaults() { /* db.inventory.aggregate( @@ -642,7 +642,7 @@ public class AggregationTests { } @Test // DATAMONGO-861 - public void aggregationUsingConditionalProjection() { + void aggregationUsingConditionalProjection() { TypedAggregation aggregation = newAggregation(ZipInfo.class, // project() // @@ -664,7 +664,7 @@ public class AggregationTests { } @Test // DATAMONGO-861 - public void aggregationUsingNestedConditionalProjection() { + void aggregationUsingNestedConditionalProjection() { TypedAggregation aggregation = newAggregation(ZipInfo.class, // project() // @@ -687,7 +687,7 @@ public class AggregationTests { } @Test // DATAMONGO-861 - public void aggregationUsingIfNullProjection() { + void aggregationUsingIfNullProjection() { mongoTemplate.insert(new LineItem("id", "caption", 0)); mongoTemplate.insert(new LineItem("idonly", null, 0)); @@ -711,7 +711,7 @@ public class AggregationTests { } @Test // DATAMONGO-861 - public void aggregationUsingIfNullReplaceWithFieldReferenceProjection() { + void aggregationUsingIfNullReplaceWithFieldReferenceProjection() { mongoTemplate.insert(new LineItem("id", "caption", 0)); mongoTemplate.insert(new LineItem("idonly", null, 0)); @@ -735,7 +735,7 @@ public class AggregationTests { } @Test // DATAMONGO-861 - public void shouldAllowGroupingUsingConditionalExpressions() { + void shouldAllowGroupingUsingConditionalExpressions() { mongoTemplate.dropCollection(CarPerson.class); @@ -779,7 +779,7 @@ public class AggregationTests { } @Test // DATAMONGO-1784, DATAMONGO-2264 - public void shouldAllowSumUsingConditionalExpressions() { + void shouldAllowSumUsingConditionalExpressions() { mongoTemplate.dropCollection(CarPerson.class); @@ -827,7 +827,7 @@ public class AggregationTests { * the Five Most Common “Likes” */ @Test // DATAMONGO-586 - public void returnFiveMostCommonLikesAggregationFrameworkExample() { + void returnFiveMostCommonLikesAggregationFrameworkExample() { createUserWithLikesDocuments(); @@ -848,7 +848,7 @@ public class AggregationTests { assertLikeStats(result.getMappedResults().get(4), "e", 3); } - protected TypedAggregation createUsersWithCommonLikesAggregation() { + TypedAggregation createUsersWithCommonLikesAggregation() { return newAggregation(UserWithLikes.class, // unwind("likes"), // group("likes").count().as("number"), // @@ -859,7 +859,7 @@ public class AggregationTests { } @Test // DATAMONGO-586 - public void arithmenticOperatorsInProjectionExample() { + void arithmenticOperatorsInProjectionExample() { Product product = new Product("P1", "A", 1.99, 3, 0.05, 0.19); mongoTemplate.insert(product); @@ -902,7 +902,7 @@ public class AggregationTests { } @Test // DATAMONGO-774 - public void expressionsInProjectionExample() { + void expressionsInProjectionExample() { Product product = new Product("P1", "A", 1.99, 3, 0.05, 0.19); mongoTemplate.insert(product); @@ -934,7 +934,7 @@ public class AggregationTests { } @Test // DATAMONGO-774 - public void stringExpressionsInProjectionExample() { + void stringExpressionsInProjectionExample() { Product product = new Product("P1", "A", 1.99, 3, 0.05, 0.19); mongoTemplate.insert(product); @@ -954,7 +954,7 @@ public class AggregationTests { } @Test // DATAMONGO-774 - public void expressionsInProjectionExampleShowcase() { + void expressionsInProjectionExampleShowcase() { Product product = new Product("P1", "A", 1.99, 3, 0.05, 0.19); mongoTemplate.insert(product); @@ -983,7 +983,7 @@ public class AggregationTests { * Data MongoDB - Aggregation Framework - invalid reference in group Operation */ @Test // DATAMONGO-753 - public void allowsNestedFieldReferencesAsGroupIdsInGroupExpressions() { + void allowsNestedFieldReferencesAsGroupIdsInGroupExpressions() { mongoTemplate.insert(new DATAMONGO753().withPDs(new PD("A", 1), new PD("B", 1), new PD("C", 1))); mongoTemplate.insert(new DATAMONGO753().withPDs(new PD("B", 1), new PD("B", 1), new PD("C", 1))); @@ -1013,7 +1013,7 @@ public class AggregationTests { * Data MongoDB - Aggregation Framework - invalid reference in group Operation */ @Test // DATAMONGO-753 - public void aliasesNestedFieldInProjectionImmediately() { + void aliasesNestedFieldInProjectionImmediately() { mongoTemplate.insert(new DATAMONGO753().withPDs(new PD("A", 1), new PD("B", 1), new PD("C", 1))); mongoTemplate.insert(new DATAMONGO753().withPDs(new PD("B", 1), new PD("B", 1), new PD("C", 1))); @@ -1032,7 +1032,7 @@ public class AggregationTests { } @Test // DATAMONGO-774 - public void shouldPerformDateProjectionOperatorsCorrectly() throws ParseException { + void shouldPerformDateProjectionOperatorsCorrectly() throws ParseException { Data data = new Data(); data.stringValue = "ABC"; @@ -1058,7 +1058,7 @@ public class AggregationTests { } @Test // DATAMONGO-774 - public void shouldPerformStringProjectionOperatorsCorrectly() throws ParseException { + void shouldPerformStringProjectionOperatorsCorrectly() throws ParseException { Data data = new Data(); data.dateValue = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSSZ").parse("29.08.1983 12:34:56.789+0000"); @@ -1094,7 +1094,7 @@ public class AggregationTests { } @Test // DATAMONGO-1550 - public void shouldPerformReplaceRootOperatorCorrectly() throws ParseException { + void shouldPerformReplaceRootOperatorCorrectly() throws ParseException { Data data = new Data(); DataItem dataItem = new DataItem(); @@ -1115,7 +1115,7 @@ public class AggregationTests { } @Test // DATAMONGO-788, DATAMONGO-2264 - public void referencesToGroupIdsShouldBeRenderedProperly() { + void referencesToGroupIdsShouldBeRenderedProperly() { mongoTemplate.insert(new DATAMONGO788(1, 1)); mongoTemplate.insert(new DATAMONGO788(1, 1)); @@ -1142,7 +1142,7 @@ public class AggregationTests { } @Test // DATAMONGO-806 - public void shouldAllowGroupByIdFields() { + void shouldAllowGroupByIdFields() { mongoTemplate.dropCollection(User.class); @@ -1173,7 +1173,7 @@ public class AggregationTests { } @Test // DATAMONGO-840 - public void shouldAggregateOrderDataToAnInvoice() { + void shouldAggregateOrderDataToAnInvoice() { mongoTemplate.dropCollection(Order.class); @@ -1210,7 +1210,7 @@ public class AggregationTests { } @Test // DATAMONGO-924 - public void shouldAllowGroupingByAliasedFieldDefinedInFormerAggregationStage() { + void shouldAllowGroupingByAliasedFieldDefinedInFormerAggregationStage() { mongoTemplate.dropCollection(CarPerson.class); @@ -1241,7 +1241,7 @@ public class AggregationTests { } @Test // DATAMONGO-960 - public void returnFiveMostCommonLikesAggregationFrameworkExampleWithSortOnDiskOptionEnabled() { + void returnFiveMostCommonLikesAggregationFrameworkExampleWithSortOnDiskOptionEnabled() { createUserWithLikesDocuments(); @@ -1264,7 +1264,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void returnFiveMostCommonLikesAggregationFrameworkExampleWithSortOnDiskOptionEnabledWhileStreaming() { + void returnFiveMostCommonLikesAggregationFrameworkExampleWithSortOnDiskOptionEnabledWhileStreaming() { createUserWithLikesDocuments(); @@ -1290,7 +1290,7 @@ public class AggregationTests { } @Test // DATAMONGO-960 - public void returnFiveMostCommonLikesShouldReturnStageExecutionInformationWithExplainOptionEnabled() { + void returnFiveMostCommonLikesShouldReturnStageExecutionInformationWithExplainOptionEnabled() { createUserWithLikesDocuments(); @@ -1308,7 +1308,7 @@ public class AggregationTests { } @Test // DATAMONGO-954, DATAMONGO-2264 - public void shouldSupportReturningCurrentAggregationRoot() { + void shouldSupportReturningCurrentAggregationRoot() { mongoTemplate.save(new Person("p1_first", "p1_last", 25)); mongoTemplate.save(new Person("p2_first", "p2_last", 32)); @@ -1333,7 +1333,7 @@ public class AggregationTests { * {@link https://stackoverflow.com/questions/24185987/using-root-inside-spring-data-mongodb-for-retrieving-whole-document} */ @Test // DATAMONGO-954, DATAMONGO-2264 - public void shouldSupportReturningCurrentAggregationRootInReference() { + void shouldSupportReturningCurrentAggregationRootInReference() { mongoTemplate.save(new Reservation("0123", "42", 100)); mongoTemplate.save(new Reservation("0360", "43", 200)); @@ -1352,7 +1352,7 @@ public class AggregationTests { } @Test // DATAMONGO-1549 - public void shouldApplyCountCorrectly() { + void shouldApplyCountCorrectly() { mongoTemplate.save(new Reservation("0123", "42", 100)); mongoTemplate.save(new Reservation("0360", "43", 200)); @@ -1371,7 +1371,7 @@ public class AggregationTests { } @Test // DATAMONGO-975 - public void shouldRetrieveDateTimeFragementsCorrectly() throws Exception { + void shouldRetrieveDateTimeFragementsCorrectly() throws Exception { mongoTemplate.dropCollection(ObjectWithDate.class); @@ -1424,7 +1424,7 @@ public class AggregationTests { } @Test // DATAMONGO-1127 - public void shouldSupportGeoNearQueriesForAggregationWithDistanceField() { + void shouldSupportGeoNearQueriesForAggregationWithDistanceField() { mongoTemplate.insertAll(Arrays.asList(TestEntities.geolocation().pennStation(), TestEntities.geolocation().tenGenOffice(), TestEntities.geolocation().flatironBuilding())); @@ -1444,7 +1444,7 @@ public class AggregationTests { } @Test // DATAMONGO-1348 - public void shouldSupportGeoJsonInGeoNearQueriesForAggregationWithDistanceField() { + void shouldSupportGeoJsonInGeoNearQueriesForAggregationWithDistanceField() { mongoTemplate.insert(new Venue("Penn Station", -73.99408, 40.75057)); mongoTemplate.insert(new Venue("10gen Office", -73.99171, 40.738868)); @@ -1466,7 +1466,7 @@ public class AggregationTests { } @Test // DATAMONGO-1348 - public void shouldSupportGeoJsonInGeoNearQueriesForAggregationWithDistanceFieldInMiles() { + void shouldSupportGeoJsonInGeoNearQueriesForAggregationWithDistanceFieldInMiles() { mongoTemplate.insert(new Venue("Penn Station", -73.99408, 40.75057)); mongoTemplate.insert(new Venue("10gen Office", -73.99171, 40.738868)); @@ -1489,7 +1489,7 @@ public class AggregationTests { } @Test // DATAMONGO-1133 - public void shouldHonorFieldAliasesForFieldReferences() { + void shouldHonorFieldAliasesForFieldReferences() { mongoTemplate.insert(new MeterData("m1", "counter1", 42)); mongoTemplate.insert(new MeterData("m1", "counter1", 13)); @@ -1509,7 +1509,7 @@ public class AggregationTests { } @Test // DATAMONGO-1326 - public void shouldLookupPeopleCorectly() { + void shouldLookupPeopleCorectly() { createUsersWithReferencedPersons(); @@ -1528,7 +1528,7 @@ public class AggregationTests { } @Test // DATAMONGO-1326 - public void shouldGroupByAndLookupPeopleCorectly() { + void shouldGroupByAndLookupPeopleCorectly() { createUsersWithReferencedPersons(); @@ -1549,7 +1549,7 @@ public class AggregationTests { @Test // DATAMONGO-1418, DATAMONGO-1824 @MongoVersion(asOf = "2.6") - public void shouldCreateOutputCollection() { + void shouldCreateOutputCollection() { createPersonDocuments(); @@ -1573,7 +1573,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void shouldCreateOutputCollectionWhileStreaming() { + void shouldCreateOutputCollectionWhileStreaming() { createPersonDocuments(); @@ -1595,7 +1595,7 @@ public class AggregationTests { } @Test // DATAMONGO-1637 - public void shouldReturnDocumentsWithOutputCollectionWhileStreaming() { + void shouldReturnDocumentsWithOutputCollectionWhileStreaming() { createPersonDocuments(); @@ -1626,7 +1626,7 @@ public class AggregationTests { } @Test // DATAMONGO-1418, DATAMONGO-2536 - public void outShouldOutBeTheLastOperation() { + void outShouldOutBeTheLastOperation() { assertThatIllegalArgumentException().isThrownBy(() -> newAggregation(match(new Criteria()), // group("field1").count().as("totalCount"), // out("collection1"), // @@ -1634,7 +1634,7 @@ public class AggregationTests { } @Test // DATAMONGO-1325 - public void shouldApplySampleCorrectly() { + void shouldApplySampleCorrectly() { createUserWithLikesDocuments(); @@ -1651,7 +1651,7 @@ public class AggregationTests { @Test // DATAMONGO-1457 @MongoVersion(asOf = "3.2") - public void sliceShouldBeAppliedCorrectly() { + void sliceShouldBeAppliedCorrectly() { createUserWithLikesDocuments(); @@ -1667,7 +1667,7 @@ public class AggregationTests { } @Test // DATAMONGO-1491 - public void filterShouldBeAppliedCorrectly() { + void filterShouldBeAppliedCorrectly() { Item item43 = Item.builder().itemId("43").quantity(2).price(2L).build(); Item item2 = Item.builder().itemId("2").quantity(1).price(240L).build(); @@ -1697,7 +1697,7 @@ public class AggregationTests { } @Test // DATAMONGO-1538 - public void letShouldBeAppliedCorrectly() { + void letShouldBeAppliedCorrectly() { Sales2 sales1 = Sales2.builder().id("1").price(10).tax(0.5F).applyDiscount(true).build(); Sales2 sales2 = Sales2.builder().id("2").price(10).tax(0.25F).applyDiscount(false).build(); @@ -1721,7 +1721,7 @@ public class AggregationTests { } @Test // DATAMONGO-1551, DATAMONGO-2264 - public void graphLookupShouldBeAppliedCorrectly() { + void graphLookupShouldBeAppliedCorrectly() { Employee em1 = Employee.builder().id(1).name("Dev").build(); Employee em2 = Employee.builder().id(2).name("Eliot").reportsTo("Dev").build(); @@ -1753,7 +1753,7 @@ public class AggregationTests { } @Test // DATAMONGO-1552 - public void bucketShouldCollectDocumentsIntoABucket() { + void bucketShouldCollectDocumentsIntoABucket() { Art a1 = Art.builder().id(1).title("The Pillars of Society").artist("Grosz").year(1926).price(199.99).build(); Art a2 = Art.builder().id(2).title("Melancholy III").artist("Munch").year(1902).price(280.00).build(); @@ -1787,7 +1787,7 @@ public class AggregationTests { } @Test // DATAMONGO-1552, DATAMONGO-2437 - public void bucketAutoShouldCollectDocumentsIntoABucket() { + void bucketAutoShouldCollectDocumentsIntoABucket() { Art a1 = Art.builder().id(1).title("The Pillars of Society").artist("Grosz").year(1926).price(199.99).build(); Art a2 = Art.builder().id(2).title("Melancholy III").artist("Munch").year(1902).price(280.00).build(); @@ -1820,7 +1820,7 @@ public class AggregationTests { } @Test // DATAMONGO-1552 - public void facetShouldCreateFacets() { + void facetShouldCreateFacets() { Art a1 = Art.builder().id(1).title("The Pillars of Society").artist("Grosz").year(1926).price(199.99).build(); Art a2 = Art.builder().id(2).title("Melancholy III").artist("Munch").year(1902).price(280.00).build(); @@ -1863,7 +1863,7 @@ public class AggregationTests { } @Test // DATAMONGO-1986 - public void runMatchOperationCriteriaThroughQueryMapperForTypedAggregation() { + void runMatchOperationCriteriaThroughQueryMapperForTypedAggregation() { mongoTemplate.insertAll(TestEntities.geolocation().newYork()); @@ -1878,7 +1878,7 @@ public class AggregationTests { } @Test // DATAMONGO-1986 - public void runMatchOperationCriteriaThroughQueryMapperForUntypedAggregation() { + void runMatchOperationCriteriaThroughQueryMapperForUntypedAggregation() { mongoTemplate.insertAll(TestEntities.geolocation().newYork()); @@ -1893,7 +1893,7 @@ public class AggregationTests { } @Test // DATAMONGO-2437 - public void shouldReadComplexIdValueCorrectly() { + void shouldReadComplexIdValueCorrectly() { WithComplexId source = new WithComplexId(); source.id = new ComplexId(); @@ -1908,7 +1908,7 @@ public class AggregationTests { } @Test // DATAMONGO-2536 - public void skipOutputDoesNotReadBackAggregationResults() { + void skipOutputDoesNotReadBackAggregationResults() { createTagDocuments(); @@ -2021,7 +2021,7 @@ public class AggregationTests { String pDch; @org.springframework.data.mongodb.core.mapping.Field("alias") int up; - public PD(String pDch, int up) { + PD(String pDch, int up) { this.pDch = pDch; this.up = up; } @@ -2036,7 +2036,7 @@ public class AggregationTests { public DATAMONGO788() {} - public DATAMONGO788(int x, int y) { + DATAMONGO788(int x, int y) { this.x = x; this.xField = x; this.y = y; @@ -2052,7 +2052,7 @@ public class AggregationTests { public User() {} - public User(String id, PushMessage... msgs) { + User(String id, PushMessage... msgs) { this.id = id; this.msgs = Arrays.asList(msgs); } @@ -2067,7 +2067,7 @@ public class AggregationTests { public PushMessage() {} - public PushMessage(String id, String content, Date createDate) { + PushMessage(String id, String content, Date createDate) { this.id = id; this.content = content; this.createDate = createDate; @@ -2082,7 +2082,7 @@ public class AggregationTests { private String lastName; private Descriptors descriptors; - public CarPerson(String firstname, String lastname, Entry... entries) { + CarPerson(String firstname, String lastname, Entry... entries) { this.firstName = firstname; this.lastName = lastname; @@ -2102,7 +2102,7 @@ public class AggregationTests { private List entries = new ArrayList(); - public CarDescriptor(Entry... entries) { + CarDescriptor(Entry... entries) { for (Entry entry : entries) { this.entries.add(entry); @@ -2118,7 +2118,7 @@ public class AggregationTests { public Entry() {} - public Entry(String make, String model, int year) { + Entry(String make, String model, int year) { this.make = make; this.model = model; this.year = year; @@ -2134,7 +2134,7 @@ public class AggregationTests { public Reservation() {} - public Reservation(String hotelCode, String confirmationNumber, int timestamp) { + Reservation(String hotelCode, String confirmationNumber, int timestamp) { this.hotelCode = hotelCode; this.confirmationNumber = confirmationNumber; this.timestamp = timestamp; @@ -2145,7 +2145,7 @@ public class AggregationTests { Date dateValue; - public ObjectWithDate(Date dateValue) { + ObjectWithDate(Date dateValue) { this.dateValue = dateValue; } } @@ -2161,14 +2161,14 @@ public class AggregationTests { public InventoryItem() {} - public InventoryItem(int id, String item, int qty) { + InventoryItem(int id, String item, int qty) { this.id = id; this.item = item; this.qty = qty; } - public InventoryItem(int id, String item, String description, int qty) { + InventoryItem(int id, String item, String description, int qty) { this.id = id; this.item = item; diff --git a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ReactiveAggregationTests.java b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ReactiveAggregationTests.java index 61d3834b4..9051c27b2 100644 --- a/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ReactiveAggregationTests.java +++ b/spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/ReactiveAggregationTests.java @@ -181,5 +181,4 @@ public class ReactiveAggregationTests { reactiveMongoTemplate.aggregate(agg, Document.class).as(StepVerifier::create).verifyComplete(); } - }