Skip to content

Commit f4a5482

Browse files
committed
DATAMONGO-1418 - Polishing.
Added ticket references. Simplified code. Original pull request: #361.
1 parent 0db36af commit f4a5482

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/Aggregation.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import org.springframework.data.domain.Sort.Direction;
2626
import org.springframework.data.mongodb.core.aggregation.ExposedFields.ExposedField;
2727
import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldReference;
28-
import org.springframework.data.mongodb.core.aggregation.Fields.AggregationField;
28+
import org.springframework.data.mongodb.core.aggregation.Fields.*;
2929
import org.springframework.data.mongodb.core.aggregation.FieldsExposingAggregationOperation.InheritsFieldsAggregationOperation;
3030
import org.springframework.data.mongodb.core.query.Criteria;
3131
import org.springframework.data.mongodb.core.query.NearQuery;
@@ -161,9 +161,9 @@ protected Aggregation(List<AggregationOperation> aggregationOperations, Aggregat
161161
Assert.isTrue(!aggregationOperations.isEmpty(), "At least one AggregationOperation has to be provided");
162162
Assert.notNull(options, "AggregationOptions must not be null!");
163163

164-
//check $out is the last operation if exist
165-
for (int i = 0; i < aggregationOperations.size(); i++) {
166-
if (aggregationOperations.get(i) instanceof OutOperation && i != aggregationOperations.size() - 1) {
164+
// check $out is the last operation if it exists
165+
for (AggregationOperation aggregationOperation : aggregationOperations) {
166+
if (aggregationOperation instanceof OutOperation && !isLast(aggregationOperation, aggregationOperations)) {
167167
throw new IllegalArgumentException("The $out operator must be the last stage in the pipeline.");
168168
}
169169
}
@@ -172,6 +172,10 @@ protected Aggregation(List<AggregationOperation> aggregationOperations, Aggregat
172172
this.options = options;
173173
}
174174

175+
private boolean isLast(AggregationOperation aggregationOperation, List<AggregationOperation> aggregationOperations) {
176+
return aggregationOperations.indexOf(aggregationOperation) == aggregationOperations.size() - 1;
177+
}
178+
175179
/**
176180
* A pointer to the previous {@link AggregationOperation}.
177181
*

spring-data-mongodb/src/test/java/org/springframework/data/mongodb/core/aggregation/OutOperationUnitTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
*/
2525
public class OutOperationUnitTest {
2626

27+
/**
28+
* @see DATAMONGO-1418
29+
*/
2730
@Test(expected = IllegalArgumentException.class)
2831
public void shouldCheckNPEInCreation() {
2932
new OutOperation(null);

0 commit comments

Comments
 (0)