Merge branch '6.0.x'
This commit is contained in:
commit
c3795731b5
|
|
@ -284,7 +284,11 @@ public enum SpelMessage {
|
|||
|
||||
/** @since 5.2.24 */
|
||||
VARIABLE_ASSIGNMENT_NOT_SUPPORTED(Kind.ERROR, 1080,
|
||||
"Assignment to variable ''{0}'' is not supported");
|
||||
"Assignment to variable ''{0}'' is not supported"),
|
||||
|
||||
/** @since 6.0.13 */
|
||||
NEGATIVE_REPEATED_TEXT_COUNT(Kind.ERROR, 1081,
|
||||
"Repeat count ''{0}'' must not be negative");
|
||||
|
||||
|
||||
private final Kind kind;
|
||||
|
|
|
|||
|
|
@ -123,6 +123,10 @@ public class OpMultiply extends Operator {
|
|||
}
|
||||
|
||||
private void checkRepeatedTextSize(String text, int count) {
|
||||
if (count < 0) {
|
||||
throw new SpelEvaluationException(getStartPosition(),
|
||||
SpelMessage.NEGATIVE_REPEATED_TEXT_COUNT, count);
|
||||
}
|
||||
int result = text.length() * count;
|
||||
if (result < 0 || result > MAX_REPEATED_TEXT_SIZE) {
|
||||
throw new SpelEvaluationException(getStartPosition(),
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ import org.springframework.expression.spel.standard.SpelExpression;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.springframework.expression.spel.SpelMessage.MAX_CONCATENATED_STRING_LENGTH_EXCEEDED;
|
||||
import static org.springframework.expression.spel.SpelMessage.MAX_REPEATED_TEXT_SIZE_EXCEEDED;
|
||||
import static org.springframework.expression.spel.SpelMessage.NEGATIVE_REPEATED_TEXT_COUNT;
|
||||
|
||||
/**
|
||||
* Tests the evaluation of expressions using various operators.
|
||||
|
|
@ -587,6 +588,13 @@ class OperatorTests extends AbstractExpressionTests {
|
|||
evaluateAndCheckError("'ab' * " + repeatCount, String.class, MAX_REPEATED_TEXT_SIZE_EXCEEDED, 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
void stringRepeatWithNegativeRepeatCount() {
|
||||
// 4 is the position of the '*' (repeat operator)
|
||||
// -1 is the negative repeat count
|
||||
evaluateAndCheckError("'a' * -1", String.class, NEGATIVE_REPEATED_TEXT_COUNT, 4, -1);
|
||||
}
|
||||
|
||||
@Test
|
||||
void stringConcatenation() {
|
||||
evaluate("'' + ''", "", String.class);
|
||||
|
|
|
|||
Loading…
Reference in New Issue