Skip to content

Commit 846aa5a

Browse files
committed
Move ValueParser into expression package.
1 parent bb3dc49 commit 846aa5a

14 files changed

+60
-17
lines changed

src/main/java/org/springframework/data/spel/CompositeValueExpression.java renamed to src/main/java/org/springframework/data/expression/CompositeValueExpression.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import java.util.List;
1919

20+
import org.springframework.data.spel.ExpressionDependencies;
21+
2022
/**
2123
* Composite {@link ValueExpression} consisting of multiple placeholder, SpEL, and literal expressions.
2224
*
@@ -32,6 +34,21 @@ public String getExpressionString() {
3234
return raw;
3335
}
3436

37+
@Override
38+
public ExpressionDependencies getExpressionDependencies() {
39+
40+
ExpressionDependencies dependencies = ExpressionDependencies.none();
41+
42+
for (ValueExpression expression : expressions) {
43+
ExpressionDependencies dependency = expression.getExpressionDependencies();
44+
if (!dependency.equals(ExpressionDependencies.none())) {
45+
dependencies = dependencies.mergeWith(dependency);
46+
}
47+
}
48+
49+
return dependencies;
50+
}
51+
3552
@Override
3653
public boolean isLiteral() {
3754

src/main/java/org/springframework/data/spel/DefaultValueEvaluationContext.java renamed to src/main/java/org/springframework/data/expression/DefaultValueEvaluationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import org.springframework.core.env.Environment;
1919
import org.springframework.expression.EvaluationContext;

src/main/java/org/springframework/data/spel/DefaultValueExpressionParser.java renamed to src/main/java/org/springframework/data/expression/DefaultValueExpressionParser.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import java.util.ArrayList;
1919
import java.util.List;
2020

21+
import org.springframework.data.spel.ExpressionDependencies;
22+
import org.springframework.expression.Expression;
2123
import org.springframework.expression.ParseException;
2224
import org.springframework.expression.ParserContext;
2325
import org.springframework.util.Assert;
@@ -125,8 +127,11 @@ private PlaceholderExpression createPlaceholder(String part) {
125127
}
126128

127129
private ExpressionExpression createExpression(String expression) {
128-
return new ExpressionExpression(
129-
configuration.getExpressionParser().parseExpression(expression, ParserContext.TEMPLATE_EXPRESSION));
130+
131+
Expression expr = configuration.getExpressionParser().parseExpression(expression,
132+
ParserContext.TEMPLATE_EXPRESSION);
133+
ExpressionDependencies dependencies = ExpressionDependencies.discover(expr);
134+
return new ExpressionExpression(expr, dependencies);
130135
}
131136

132137
private static int findPlaceholderEndIndex(CharSequence buf, int startIndex) {

src/main/java/org/springframework/data/spel/ExpressionExpression.java renamed to src/main/java/org/springframework/data/expression/ExpressionExpression.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

18+
import org.springframework.data.spel.ExpressionDependencies;
1819
import org.springframework.expression.EvaluationContext;
1920
import org.springframework.expression.Expression;
2021

@@ -25,13 +26,18 @@
2526
* @author Mark Paluch
2627
* @since 3.3
2728
*/
28-
record ExpressionExpression(Expression expression) implements ValueExpression {
29+
record ExpressionExpression(Expression expression, ExpressionDependencies dependencies) implements ValueExpression {
2930

3031
@Override
3132
public String getExpressionString() {
3233
return expression.getExpressionString();
3334
}
3435

36+
@Override
37+
public ExpressionDependencies getExpressionDependencies() {
38+
return dependencies();
39+
}
40+
3541
@Override
3642
public boolean isLiteral() {
3743
return false;

src/main/java/org/springframework/data/spel/LiteralValueExpression.java renamed to src/main/java/org/springframework/data/expression/LiteralValueExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
/**
1919
* Literal expression returning the underlying expression string upon evaluation.

src/main/java/org/springframework/data/spel/PlaceholderExpression.java renamed to src/main/java/org/springframework/data/expression/PlaceholderExpression.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import org.springframework.core.env.Environment;
1919
import org.springframework.expression.EvaluationException;

src/main/java/org/springframework/data/spel/ValueEvaluationContext.java renamed to src/main/java/org/springframework/data/expression/ValueEvaluationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import org.springframework.core.env.Environment;
1919
import org.springframework.expression.EvaluationContext;

src/main/java/org/springframework/data/spel/ValueExpression.java renamed to src/main/java/org/springframework/data/expression/ValueExpression.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,9 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

18+
import org.springframework.data.spel.ExpressionDependencies;
1819
import org.springframework.expression.EvaluationException;
1920
import org.springframework.lang.Nullable;
2021

@@ -35,6 +36,15 @@ public interface ValueExpression {
3536
*/
3637
String getExpressionString();
3738

39+
/**
40+
* Returns the expression dependencies.
41+
*
42+
* @return the dependencies the underlying expression requires. Can be {@link ExpressionDependencies#none()}.
43+
*/
44+
default ExpressionDependencies getExpressionDependencies() {
45+
return ExpressionDependencies.none();
46+
}
47+
3848
/**
3949
* Returns whether the expression is a literal expression (that doesn't actually require evaluation).
4050
*

src/main/java/org/springframework/data/spel/ValueExpressionParser.java renamed to src/main/java/org/springframework/data/expression/ValueExpressionParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import org.springframework.expression.ParseException;
1919

src/main/java/org/springframework/data/spel/ValueParserConfiguration.java renamed to src/main/java/org/springframework/data/expression/ValueParserConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import org.springframework.expression.ExpressionParser;
1919

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/**
2+
* Value Expression implementation.
3+
*/
4+
@org.springframework.lang.NonNullApi
5+
package org.springframework.data.expression;

src/main/java/org/springframework/data/mapping/model/BasicPersistentEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,10 @@
3434
import org.springframework.data.annotation.Immutable;
3535
import org.springframework.data.annotation.TypeAlias;
3636
import org.springframework.data.domain.Persistable;
37+
import org.springframework.data.expression.ValueEvaluationContext;
3738
import org.springframework.data.mapping.*;
3839
import org.springframework.data.spel.EvaluationContextProvider;
3940
import org.springframework.data.spel.ExpressionDependencies;
40-
import org.springframework.data.spel.ValueEvaluationContext;
4141
import org.springframework.data.support.IsNewStrategy;
4242
import org.springframework.data.support.PersistableIsNewStrategy;
4343
import org.springframework.data.util.Lazy;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/**
2-
* SpEL and Value Expression implementations.
2+
* SpEL support.
33
*/
44
@org.springframework.lang.NonNullApi
55
package org.springframework.data.spel;

src/test/java/org/springframework/data/spel/ValueEvaluationUnitTests.java renamed to src/test/java/org/springframework/data/expression/ValueEvaluationUnitTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package org.springframework.data.spel;
16+
package org.springframework.data.expression;
1717

1818
import static org.assertj.core.api.Assertions.*;
1919

@@ -32,7 +32,7 @@
3232
import org.springframework.expression.spel.support.StandardEvaluationContext;
3333

3434
/**
35-
* Unit tests for {@link org.springframework.data.spel.ValueExpression} and its parsing.
35+
* Unit tests for {@link ValueExpression} and its parsing.
3636
*
3737
* @author Christoph Strobl
3838
* @author Mark Paluch

0 commit comments

Comments
 (0)