Skip to content

Commit f454d25

Browse files
committed
1 parent e6f1ae9 commit f454d25

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

spel-vararg/pom.xml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1616
<kotlin.code.style>official</kotlin.code.style>
1717
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
18+
<maven.compiler.source>19</maven.compiler.source>
19+
<maven.compiler.target>19</maven.compiler.target>
1820
</properties>
1921

2022
<repositories>
@@ -100,13 +102,19 @@
100102
<dependency>
101103
<groupId>org.springframework</groupId>
102104
<artifactId>spring-expression</artifactId>
103-
<version>6.1.8</version>
105+
<version>6.1.11</version>
104106
</dependency>
105107
<dependency>
106108
<groupId>org.jetbrains.kotlin</groupId>
107109
<artifactId>kotlin-reflect</artifactId>
108110
<version>2.0.0</version>
109111
</dependency>
112+
<dependency>
113+
<groupId>org.assertj</groupId>
114+
<artifactId>assertj-core</artifactId>
115+
<version>3.26.3</version>
116+
<scope>test</scope>
117+
</dependency>
110118
</dependencies>
111119

112120
</project>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import org.junit.jupiter.api.Test;
2+
import org.springframework.expression.Expression;
3+
import org.springframework.expression.spel.standard.SpelExpressionParser;
4+
import org.springframework.expression.spel.support.StandardEvaluationContext;
5+
import org.springframework.util.ReflectionUtils;
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
8+
import java.lang.reflect.Method;
9+
10+
public class SpelVarargArrayTest {
11+
@Test
12+
public void arrayFlattenedAsVararg_Before_6_1_10() {
13+
assertThat(evaluateExpression("#objectVarargDemo({'World', 123})")).isEqualTo("There are 2 argument(s): World 123");
14+
}
15+
16+
@Test
17+
public void arrayFlattenedAsVararg_After_6_1_11() {
18+
assertThat(evaluateExpression("#objectVarargDemo({'World', 123})")).isEqualTo("There are 1 argument(s): [World, 123]");
19+
}
20+
21+
private static final Method demoMethod =
22+
ReflectionUtils.findMethod(SpelVarargArrayTest.class, "objectVarargDemo", Object[].class);
23+
24+
private static Object evaluateExpression(String expression) {
25+
SpelExpressionParser parser = new SpelExpressionParser();
26+
Expression exp = parser.parseExpression(expression);
27+
StandardEvaluationContext context = new StandardEvaluationContext();
28+
context.registerFunction("objectVarargDemo", demoMethod);
29+
return exp.getValue(context);
30+
}
31+
32+
static String objectVarargDemo(Object... args) {
33+
StringBuilder sb = new StringBuilder();
34+
sb.append(String.format("There are %d argument(s): ", args.length));
35+
for (Object arg : args) {
36+
sb.append(arg).append(" ");
37+
}
38+
return sb.toString().trim();
39+
}
40+
}

0 commit comments

Comments
 (0)