1
1
/*
2
- * Copyright 2002-2022 the original author or authors.
2
+ * Copyright 2002-2024 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
18
18
19
19
import org .junit .jupiter .api .Test ;
20
20
21
+ import org .springframework .expression .EvaluationContext ;
21
22
import org .springframework .expression .Expression ;
22
23
import org .springframework .expression .spel .standard .SpelExpressionParser ;
24
+ import org .springframework .expression .spel .support .SimpleEvaluationContext ;
23
25
import org .springframework .util .ObjectUtils ;
24
26
25
27
import static org .assertj .core .api .Assertions .assertThat ;
28
+ import static org .assertj .core .api .Assertions .assertThatExceptionOfType ;
26
29
27
30
/**
28
31
* Test construction of arrays.
29
32
*
30
33
* @author Andy Clement
31
34
* @author Sam Brannen
35
+ * @author Juergen Hoeller
32
36
*/
33
37
class ArrayConstructorTests extends AbstractExpressionTests {
34
38
@@ -97,7 +101,7 @@ void errorCases() {
97
101
void typeArrayConstructors () {
98
102
evaluate ("new String[]{'a','b','c','d'}[1]" , "b" , String .class );
99
103
evaluateAndCheckError ("new String[]{'a','b','c','d'}.size()" , SpelMessage .METHOD_NOT_FOUND , 30 , "size()" ,
100
- "java.lang.String[]" );
104
+ "java.lang.String[]" );
101
105
evaluate ("new String[]{'a','b','c','d'}.length" , 4 , Integer .class );
102
106
}
103
107
@@ -110,10 +114,18 @@ void basicArray() {
110
114
void multiDimensionalArrays () {
111
115
evaluate ("new String[2][2]" , "[Ljava.lang.String;[2]{[2]{null,null},[2]{null,null}}" , String [][].class );
112
116
evaluate ("new String[3][2][1]" ,
113
- "[[Ljava.lang.String;[3]{[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}}}" ,
114
- String [][][].class );
117
+ "[[Ljava.lang.String;[3]{[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}},[2]{[1]{null},[1]{null}}}" ,
118
+ String [][][].class );
115
119
}
116
120
121
+ @ Test
122
+ void noArrayConstruction () {
123
+ EvaluationContext context = SimpleEvaluationContext .forReadWriteDataBinding ().build ();
124
+ assertThatExceptionOfType (SpelEvaluationException .class ).isThrownBy (() ->
125
+ parser .parseExpression ("new int[2]" ).getValue (context ));
126
+ }
127
+
128
+
117
129
private void evaluateArrayBuildingExpression (String expression , String expectedToString ) {
118
130
SpelExpressionParser parser = new SpelExpressionParser ();
119
131
Expression e = parser .parseExpression (expression );
0 commit comments