Skip to content

Commit 8670d2d

Browse files
mp911dechristophstrobl
authored andcommitted
Polishing.
Add deprecations, refine nullability arrangements. Original Pull Request: #4635
1 parent e6dd5a3 commit 8670d2d

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/EvaluationContextExpressionEvaluator.java

+12-17
Original file line numberDiff line numberDiff line change
@@ -17,32 +17,27 @@
1717

1818
import java.util.Collections;
1919
import java.util.Map;
20-
import java.util.function.Supplier;
2120

22-
import org.springframework.data.mapping.model.SpELExpressionEvaluator;
21+
import org.springframework.data.mapping.model.ValueExpressionEvaluator;
2322
import org.springframework.expression.EvaluationContext;
23+
import org.springframework.expression.Expression;
2424
import org.springframework.expression.ExpressionParser;
25-
import org.springframework.expression.spel.standard.SpelExpression;
26-
import org.springframework.expression.spel.standard.SpelExpressionParser;
2725
import org.springframework.expression.spel.support.StandardEvaluationContext;
2826
import org.springframework.lang.Nullable;
2927

3028
/**
3129
* @author Christoph Strobl
3230
* @since 3.3.5
3331
*/
34-
class EvaluationContextExpressionEvaluator implements SpELExpressionEvaluator {
32+
class EvaluationContextExpressionEvaluator implements ValueExpressionEvaluator {
3533

36-
ValueProvider valueProvider;
37-
ExpressionParser expressionParser;
38-
Supplier<EvaluationContext> evaluationContext;
34+
final ValueProvider valueProvider;
35+
final ExpressionParser expressionParser;
3936

40-
public EvaluationContextExpressionEvaluator(ValueProvider valueProvider, ExpressionParser expressionParser,
41-
Supplier<EvaluationContext> evaluationContext) {
37+
public EvaluationContextExpressionEvaluator(ValueProvider valueProvider, ExpressionParser expressionParser) {
4238

4339
this.valueProvider = valueProvider;
4440
this.expressionParser = expressionParser;
45-
this.evaluationContext = evaluationContext;
4641
}
4742

4843
@Nullable
@@ -52,19 +47,19 @@ public <T> T evaluate(String expression) {
5247
}
5348

5449
public EvaluationContext getEvaluationContext(String expressionString) {
55-
return evaluationContext != null ? evaluationContext.get() : new StandardEvaluationContext();
50+
return new StandardEvaluationContext();
5651
}
5752

58-
public SpelExpression getParsedExpression(String expressionString) {
59-
return (SpelExpression) (expressionParser != null ? expressionParser : new SpelExpressionParser())
60-
.parseExpression(expressionString);
53+
public Expression getParsedExpression(String expressionString) {
54+
return expressionParser.parseExpression(expressionString);
6155
}
6256

57+
@SuppressWarnings("unchecked")
6358
public <T> T evaluateExpression(String expressionString, Map<String, Object> variables) {
6459

65-
SpelExpression expression = getParsedExpression(expressionString);
60+
Expression expression = getParsedExpression(expressionString);
6661
EvaluationContext ctx = getEvaluationContext(expressionString);
67-
variables.forEach((key, value) -> ctx.setVariable(key, value));
62+
variables.forEach(ctx::setVariable);
6863

6964
Object result = expression.getValue(ctx, Object.class);
7065
return (T) result;

spring-data-mongodb/src/main/java/org/springframework/data/mongodb/util/json/ParameterBindingContext.java

+21-2
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.util.function.Function;
2020
import java.util.function.Supplier;
2121

22+
import org.springframework.data.mapping.model.SpELExpressionEvaluator;
2223
import org.springframework.data.mapping.model.ValueExpressionEvaluator;
2324
import org.springframework.data.spel.ExpressionDependencies;
2425
import org.springframework.data.util.Lazy;
@@ -45,7 +46,9 @@ public class ParameterBindingContext {
4546
* @param valueProvider
4647
* @param expressionParser
4748
* @param evaluationContext
49+
* @deprecated since 4.3, use {@link #ParameterBindingContext(ValueProvider, ExpressionParser, Supplier)} instead.
4850
*/
51+
@Deprecated(since = "4.3")
4952
public ParameterBindingContext(ValueProvider valueProvider, SpelExpressionParser expressionParser,
5053
EvaluationContext evaluationContext) {
5154
this(valueProvider, expressionParser, () -> evaluationContext);
@@ -59,13 +62,29 @@ public ParameterBindingContext(ValueProvider valueProvider, SpelExpressionParser
5962
*/
6063
public ParameterBindingContext(ValueProvider valueProvider, ExpressionParser expressionParser,
6164
Supplier<EvaluationContext> evaluationContext) {
62-
this(valueProvider, new EvaluationContextExpressionEvaluator(valueProvider, expressionParser, evaluationContext));
65+
this(valueProvider, new EvaluationContextExpressionEvaluator(valueProvider, expressionParser) {
66+
@Override
67+
public EvaluationContext getEvaluationContext(String expressionString) {
68+
return evaluationContext.get();
69+
}
70+
});
6371
}
6472

6573
/**
6674
* @param valueProvider
6775
* @param expressionEvaluator
6876
* @since 3.1
77+
* @deprecated since 4.3, use {@link #ParameterBindingContext(ValueProvider, ValueExpressionEvaluator)} instead.
78+
*/
79+
@Deprecated(since = "4.3")
80+
public ParameterBindingContext(ValueProvider valueProvider, SpELExpressionEvaluator expressionEvaluator) {
81+
this(valueProvider, (ValueExpressionEvaluator) expressionEvaluator);
82+
}
83+
84+
/**
85+
* @param valueProvider
86+
* @param expressionEvaluator
87+
* @since 4.3
6988
*/
7089
public ParameterBindingContext(ValueProvider valueProvider, ValueExpressionEvaluator expressionEvaluator) {
7190
this.valueProvider = valueProvider;
@@ -86,7 +105,7 @@ public static ParameterBindingContext forExpressions(ValueProvider valueProvider
86105
Function<ExpressionDependencies, EvaluationContext> contextFunction) {
87106

88107
return new ParameterBindingContext(valueProvider,
89-
new EvaluationContextExpressionEvaluator(valueProvider, expressionParser, null) {
108+
new EvaluationContextExpressionEvaluator(valueProvider, expressionParser) {
90109

91110
@Override
92111
public EvaluationContext getEvaluationContext(String expressionString) {

0 commit comments

Comments
 (0)