From 89a3d64adafb4fc716473ad2d21f7b76ad63db2a Mon Sep 17 00:00:00 2001 From: Sam Brannen Date: Wed, 10 May 2023 15:47:49 +0200 Subject: [PATCH] Reintroduce support for null SpEL expressions Closes gh-30464 --- .../standard/InternalSpelExpressionParser.java | 2 +- .../expression/spel/standard/SpelParserTests.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java b/spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java index 23a09f71977..0d1a50472c8 100644 --- a/spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java +++ b/spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java @@ -158,7 +158,7 @@ class InternalSpelExpressionParser extends TemplateAwareExpressionParser { } private void checkExpressionLength(String string) { - if (string.length() > MAX_EXPRESSION_LENGTH) { + if (string != null && string.length() > MAX_EXPRESSION_LENGTH) { throw new SpelEvaluationException(SpelMessage.MAX_EXPRESSION_LENGTH_EXCEEDED, MAX_EXPRESSION_LENGTH); } } diff --git a/spring-expression/src/test/java/org/springframework/expression/spel/standard/SpelParserTests.java b/spring-expression/src/test/java/org/springframework/expression/spel/standard/SpelParserTests.java index f2a37e55ede..787489d4761 100644 --- a/spring-expression/src/test/java/org/springframework/expression/spel/standard/SpelParserTests.java +++ b/spring-expression/src/test/java/org/springframework/expression/spel/standard/SpelParserTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2023 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. @@ -21,7 +21,9 @@ import java.util.function.Consumer; import org.junit.jupiter.api.Test; import org.springframework.expression.EvaluationContext; +import org.springframework.expression.Expression; import org.springframework.expression.ExpressionException; +import org.springframework.expression.ExpressionParser; import org.springframework.expression.spel.SpelMessage; import org.springframework.expression.spel.SpelNode; import org.springframework.expression.spel.SpelParseException; @@ -35,9 +37,19 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; /** * @author Andy Clement * @author Juergen Hoeller + * @author Sam Brannen */ public class SpelParserTests { + @Test // gh-30464 + public void nullExpression() { + ExpressionParser parser = new SpelExpressionParser(); + String expression = null; + Expression expr = parser.parseExpression(expression); + Object result = expr.getValue(); + assertThat(result).isNull(); + } + @Test public void theMostBasic() { SpelExpressionParser parser = new SpelExpressionParser();