Browse Source

DATAMONGO-2320 - Polishing.

Use for-loops instead of Stream API and Collectors. Reformat code. Invert condition for smoother readability.

Original pull request: #776.
pull/777/head
Mark Paluch 6 years ago
parent
commit
8167f9d199
  1. 27
      spring-data-mongodb/src/main/java/org/springframework/data/mongodb/core/aggregation/NestedDelegatingExpressionAggregationOperationContext.java

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

@ -16,13 +16,11 @@ @@ -16,13 +16,11 @@
package org.springframework.data.mongodb.core.aggregation;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collectors;
import org.bson.Document;
import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldReference;
import org.springframework.data.mongodb.core.aggregation.ExposedFields.ExpressionFieldReference;
import org.springframework.data.mongodb.core.aggregation.ExposedFields.FieldReference;
import org.springframework.util.Assert;
/**
@ -31,23 +29,25 @@ import org.springframework.util.Assert; @@ -31,23 +29,25 @@ import org.springframework.util.Assert;
* variable.
*
* @author Christoph Strobl
* @author Mark Paluch
* @since 1.10
*/
class NestedDelegatingExpressionAggregationOperationContext implements AggregationOperationContext {
private final AggregationOperationContext delegate;
private final Set<String> inners;
private final Collection<Field> inners;
/**
* Creates new {@link NestedDelegatingExpressionAggregationOperationContext}.
*
* @param referenceContext must not be {@literal null}.
*/
NestedDelegatingExpressionAggregationOperationContext(AggregationOperationContext referenceContext, Collection<Field> inners) {
NestedDelegatingExpressionAggregationOperationContext(AggregationOperationContext referenceContext,
Collection<Field> inners) {
Assert.notNull(referenceContext, "Reference context must not be null!");
this.delegate = referenceContext;
this.inners = inners.stream().map(Field::getName).collect(Collectors.toSet());
this.inners = inners;
}
/*
@ -76,20 +76,23 @@ class NestedDelegatingExpressionAggregationOperationContext implements Aggregati @@ -76,20 +76,23 @@ class NestedDelegatingExpressionAggregationOperationContext implements Aggregati
public FieldReference getReference(Field field) {
FieldReference reference = delegate.getReference(field);
return !isInnerVariableReference(field) ? reference : new ExpressionFieldReference(delegate.getReference(field)) ;
return isInnerVariableReference(field) ? new ExpressionFieldReference(delegate.getReference(field)) : reference;
}
private boolean isInnerVariableReference(Field field) {
if(inners.isEmpty()) {
if (inners.isEmpty()) {
return false;
}
if(inners.contains(field.getName())) {
return true;
for (Field inner : inners) {
if (inner.getName().equals(field.getName())
|| (field.getTarget().contains(".") && field.getTarget().startsWith(inner.getName()))) {
return true;
}
}
return inners.stream().anyMatch(it -> field.getTarget().contains(".") && field.getTarget().startsWith(it));
return false;
}
/*

Loading…
Cancel
Save