Polishing.
Add deprecations, refine nullability arrangements. Original Pull Request: #4635
This commit is contained in:
committed by
Christoph Strobl
parent
e6dd5a3565
commit
8670d2d369
@@ -17,13 +17,11 @@ package org.springframework.data.mongodb.util.json;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.springframework.data.mapping.model.SpELExpressionEvaluator;
|
||||
import org.springframework.data.mapping.model.ValueExpressionEvaluator;
|
||||
import org.springframework.expression.EvaluationContext;
|
||||
import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.ExpressionParser;
|
||||
import org.springframework.expression.spel.standard.SpelExpression;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
import org.springframework.lang.Nullable;
|
||||
|
||||
@@ -31,18 +29,15 @@ import org.springframework.lang.Nullable;
|
||||
* @author Christoph Strobl
|
||||
* @since 3.3.5
|
||||
*/
|
||||
class EvaluationContextExpressionEvaluator implements SpELExpressionEvaluator {
|
||||
class EvaluationContextExpressionEvaluator implements ValueExpressionEvaluator {
|
||||
|
||||
ValueProvider valueProvider;
|
||||
ExpressionParser expressionParser;
|
||||
Supplier<EvaluationContext> evaluationContext;
|
||||
final ValueProvider valueProvider;
|
||||
final ExpressionParser expressionParser;
|
||||
|
||||
public EvaluationContextExpressionEvaluator(ValueProvider valueProvider, ExpressionParser expressionParser,
|
||||
Supplier<EvaluationContext> evaluationContext) {
|
||||
public EvaluationContextExpressionEvaluator(ValueProvider valueProvider, ExpressionParser expressionParser) {
|
||||
|
||||
this.valueProvider = valueProvider;
|
||||
this.expressionParser = expressionParser;
|
||||
this.evaluationContext = evaluationContext;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -52,19 +47,19 @@ class EvaluationContextExpressionEvaluator implements SpELExpressionEvaluator {
|
||||
}
|
||||
|
||||
public EvaluationContext getEvaluationContext(String expressionString) {
|
||||
return evaluationContext != null ? evaluationContext.get() : new StandardEvaluationContext();
|
||||
return new StandardEvaluationContext();
|
||||
}
|
||||
|
||||
public SpelExpression getParsedExpression(String expressionString) {
|
||||
return (SpelExpression) (expressionParser != null ? expressionParser : new SpelExpressionParser())
|
||||
.parseExpression(expressionString);
|
||||
public Expression getParsedExpression(String expressionString) {
|
||||
return expressionParser.parseExpression(expressionString);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T evaluateExpression(String expressionString, Map<String, Object> variables) {
|
||||
|
||||
SpelExpression expression = getParsedExpression(expressionString);
|
||||
Expression expression = getParsedExpression(expressionString);
|
||||
EvaluationContext ctx = getEvaluationContext(expressionString);
|
||||
variables.forEach((key, value) -> ctx.setVariable(key, value));
|
||||
variables.forEach(ctx::setVariable);
|
||||
|
||||
Object result = expression.getValue(ctx, Object.class);
|
||||
return (T) result;
|
||||
|
||||
@@ -19,6 +19,7 @@ import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import org.springframework.data.mapping.model.SpELExpressionEvaluator;
|
||||
import org.springframework.data.mapping.model.ValueExpressionEvaluator;
|
||||
import org.springframework.data.spel.ExpressionDependencies;
|
||||
import org.springframework.data.util.Lazy;
|
||||
@@ -45,7 +46,9 @@ public class ParameterBindingContext {
|
||||
* @param valueProvider
|
||||
* @param expressionParser
|
||||
* @param evaluationContext
|
||||
* @deprecated since 4.3, use {@link #ParameterBindingContext(ValueProvider, ExpressionParser, Supplier)} instead.
|
||||
*/
|
||||
@Deprecated(since = "4.3")
|
||||
public ParameterBindingContext(ValueProvider valueProvider, SpelExpressionParser expressionParser,
|
||||
EvaluationContext evaluationContext) {
|
||||
this(valueProvider, expressionParser, () -> evaluationContext);
|
||||
@@ -59,13 +62,29 @@ public class ParameterBindingContext {
|
||||
*/
|
||||
public ParameterBindingContext(ValueProvider valueProvider, ExpressionParser expressionParser,
|
||||
Supplier<EvaluationContext> evaluationContext) {
|
||||
this(valueProvider, new EvaluationContextExpressionEvaluator(valueProvider, expressionParser, evaluationContext));
|
||||
this(valueProvider, new EvaluationContextExpressionEvaluator(valueProvider, expressionParser) {
|
||||
@Override
|
||||
public EvaluationContext getEvaluationContext(String expressionString) {
|
||||
return evaluationContext.get();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @param valueProvider
|
||||
* @param expressionEvaluator
|
||||
* @since 3.1
|
||||
* @deprecated since 4.3, use {@link #ParameterBindingContext(ValueProvider, ValueExpressionEvaluator)} instead.
|
||||
*/
|
||||
@Deprecated(since = "4.3")
|
||||
public ParameterBindingContext(ValueProvider valueProvider, SpELExpressionEvaluator expressionEvaluator) {
|
||||
this(valueProvider, (ValueExpressionEvaluator) expressionEvaluator);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param valueProvider
|
||||
* @param expressionEvaluator
|
||||
* @since 4.3
|
||||
*/
|
||||
public ParameterBindingContext(ValueProvider valueProvider, ValueExpressionEvaluator expressionEvaluator) {
|
||||
this.valueProvider = valueProvider;
|
||||
@@ -86,7 +105,7 @@ public class ParameterBindingContext {
|
||||
Function<ExpressionDependencies, EvaluationContext> contextFunction) {
|
||||
|
||||
return new ParameterBindingContext(valueProvider,
|
||||
new EvaluationContextExpressionEvaluator(valueProvider, expressionParser, null) {
|
||||
new EvaluationContextExpressionEvaluator(valueProvider, expressionParser) {
|
||||
|
||||
@Override
|
||||
public EvaluationContext getEvaluationContext(String expressionString) {
|
||||
|
||||
Reference in New Issue
Block a user