From 70cf66111c4a55d36d66c673b121086cbb6bb928 Mon Sep 17 00:00:00 2001 From: Rossen Stoyanchev Date: Mon, 31 Mar 2014 21:46:17 -0400 Subject: [PATCH] Add protected method to SpringELExpression Issue: SWF-1476 --- .../binding/expression/spel/SpringELExpression.java | 8 ++++++++ .../expression/spel/SpringELExpressionParser.java | 13 ++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpression.java b/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpression.java index c0937a40..8b2a0ab2 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpression.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpression.java @@ -133,9 +133,17 @@ public class SpringELExpression implements Expression { context.setVariables(getVariableValues(rootObject)); context.setTypeConverter(new StandardTypeConverter(conversionService)); context.getPropertyAccessors().addAll(propertyAccessors); + extendEvaluationContext(context); return context; } + /** + * Invoked every time an evaluation context is created allowing further + * initialization from sub-classes. + */ + protected void extendEvaluationContext(StandardEvaluationContext context) { + } + /** * Turn the map of variable-names-to-expressions into a map of variable-names-to-plain-objects * by evaluating each object against the input rootObject. diff --git a/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpressionParser.java b/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpressionParser.java index 818136b0..cdfa47c8 100644 --- a/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpressionParser.java +++ b/spring-binding/src/main/java/org/springframework/binding/expression/spel/SpringELExpressionParser.java @@ -78,7 +78,18 @@ public class SpringELExpressionParser implements ExpressionParser { Class expectedResultType = context.getExpectedEvaluationResultType(); org.springframework.core.convert.ConversionService cs = conversionService.getDelegateConversionService(); - return new SpringELExpression(spelExpression, expressionVars, expectedResultType, cs, propertyAccessors); + return createSpringELExpression(expressionVars, spelExpression, expectedResultType, cs); + } + + /** + * Create the {@link SpringELExpression}. + */ + protected SpringELExpression createSpringELExpression(Map expressionVars, + org.springframework.expression.Expression spelExpression, Class expectedResultType, + org.springframework.core.convert.ConversionService conversionService) { + + return new SpringELExpression(spelExpression, expressionVars, + expectedResultType, conversionService, propertyAccessors); } private org.springframework.expression.Expression parseSpelExpression(String expression, ParserContext context) {