Skip to content

Commit 85054d9

Browse files
committed
DATAMONGO-1418 - Polishing.
Added ticket references. Simplified code. Original pull request: #361.
1 parent aceec20 commit 85054d9

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
@@ -26,7 +26,7 @@
2626
import org.springframework.data.domain.Sort.Direction;
2727
import org.springframework.data.mongodb.core.aggregation.ExposedFields.ExposedField;
2828
import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldReference;
29-
import org.springframework.data.mongodb.core.aggregation.Fields.AggregationField;
29+
import org.springframework.data.mongodb.core.aggregation.Fields.*;
3030
import org.springframework.data.mongodb.core.aggregation.FieldsExposingAggregationOperation.InheritsFieldsAggregationOperation;
3131
import org.springframework.data.mongodb.core.query.Criteria;
3232
import org.springframework.data.mongodb.core.query.NearQuery;
@@ -159,9 +159,9 @@ protected Aggregation(List<AggregationOperation> aggregationOperations, Aggregat
159159
Assert.isTrue(!aggregationOperations.isEmpty(), "At least one AggregationOperation has to be provided");
160160
Assert.notNull(options, "AggregationOptions must not be null!");
161161

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

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

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)