Skip to content

Commit fe749cf

Browse files
committed
1 parent e6f1ae9 commit fe749cf

File tree

2 files changed

+52
-1
lines changed

2 files changed

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

0 commit comments

Comments
 (0)