Browse Source

Merge pull request #27604 from Xjzon

* pr/27604:
  Polish "Add support for custom expression parsing"
  Add support for custom expression parsing

Closes gh-27604
pull/27630/head
Stephane Nicoll 3 years ago
parent
commit
47d3819eab
  1. 13
      spring-context/src/main/java/org/springframework/context/expression/CachedExpressionEvaluator.java
  2. 2
      spring-context/src/test/java/org/springframework/context/expression/CachedExpressionEvaluatorTests.java

13
spring-context/src/main/java/org/springframework/context/expression/CachedExpressionEvaluator.java

@ -75,7 +75,7 @@ public abstract class CachedExpressionEvaluator { @@ -75,7 +75,7 @@ public abstract class CachedExpressionEvaluator {
/**
* Return the {@link Expression} for the specified SpEL value
* <p>Parse the expression if it hasn't been already.
* <p>{@link #parseExpression(String) Parse the expression} if it hasn't been already.
* @param cache the cache to use
* @param elementKey the element on which the expression is defined
* @param expression the expression to parse
@ -86,12 +86,21 @@ public abstract class CachedExpressionEvaluator { @@ -86,12 +86,21 @@ public abstract class CachedExpressionEvaluator {
ExpressionKey expressionKey = createKey(elementKey, expression);
Expression expr = cache.get(expressionKey);
if (expr == null) {
expr = getParser().parseExpression(expression);
expr = parseExpression(expression);
cache.put(expressionKey, expr);
}
return expr;
}
/**
* Parse the specified {@code expression}.
* @param expression the expression to parse
* @since 5.3.13
*/
protected Expression parseExpression(String expression) {
return getParser().parseExpression(expression);
}
private ExpressionKey createKey(AnnotatedElementKey elementKey, String expression) {
return new ExpressionKey(elementKey, expression);
}

2
spring-context/src/test/java/org/springframework/context/expression/CachedExpressionEvaluatorTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2019 the original author or authors.
* Copyright 2002-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.

Loading…
Cancel
Save