@@ -103,17 +103,17 @@ void dataClassBindingWithConversionError() {
103
103
}
104
104
105
105
@ Test
106
- void listBinding () {
106
+ void dataClassWithListBinding () {
107
107
MapValueResolver valueResolver = new MapValueResolver (Map .of (
108
108
"dataClassList[0].param1" , "value1" , "dataClassList[0].param2" , "true" ,
109
109
"dataClassList[1].param1" , "value2" , "dataClassList[1].param2" , "true" ,
110
110
"dataClassList[2].param1" , "value3" , "dataClassList[2].param2" , "true" ));
111
111
112
- DataBinder binder = initDataBinder (ListDataClass .class );
112
+ DataBinder binder = initDataBinder (DataClassListRecord .class );
113
113
binder .construct (valueResolver );
114
114
115
- ListDataClass dataClass = getTarget (binder );
116
- List <DataClass > list = dataClass .dataClassList ();
115
+ DataClassListRecord target = getTarget (binder );
116
+ List <DataClass > list = target .dataClassList ();
117
117
118
118
assertThat (list ).hasSize (3 );
119
119
assertThat (list .get (0 ).param1 ()).isEqualTo ("value1" );
@@ -122,35 +122,35 @@ void listBinding() {
122
122
}
123
123
124
124
@ Test // gh-34145
125
- void listBindingWithNonconsecutiveIndices () {
125
+ void dataClassWithListBindingWithNonconsecutiveIndices () {
126
126
MapValueResolver valueResolver = new MapValueResolver (Map .of (
127
127
"dataClassList[0].param1" , "value1" , "dataClassList[0].param2" , "true" ,
128
128
"dataClassList[1].param1" , "value2" , "dataClassList[1].param2" , "true" ,
129
129
"dataClassList[3].param1" , "value3" , "dataClassList[3].param2" , "true" ));
130
130
131
- DataBinder binder = initDataBinder (ListDataClass .class );
131
+ DataBinder binder = initDataBinder (DataClassListRecord .class );
132
132
binder .construct (valueResolver );
133
133
134
- ListDataClass dataClass = getTarget (binder );
135
- List <DataClass > list = dataClass .dataClassList ();
134
+ DataClassListRecord target = getTarget (binder );
135
+ List <DataClass > list = target .dataClassList ();
136
136
137
137
assertThat (list .get (0 ).param1 ()).isEqualTo ("value1" );
138
138
assertThat (list .get (1 ).param1 ()).isEqualTo ("value2" );
139
139
assertThat (list .get (3 ).param1 ()).isEqualTo ("value3" );
140
140
}
141
141
142
142
@ Test
143
- void mapBinding () {
143
+ void dataClassWithMapBinding () {
144
144
MapValueResolver valueResolver = new MapValueResolver (Map .of (
145
145
"dataClassMap[a].param1" , "value1" , "dataClassMap[a].param2" , "true" ,
146
146
"dataClassMap[b].param1" , "value2" , "dataClassMap[b].param2" , "true" ,
147
147
"dataClassMap['c'].param1" , "value3" , "dataClassMap['c'].param2" , "true" ));
148
148
149
- DataBinder binder = initDataBinder (MapDataClass .class );
149
+ DataBinder binder = initDataBinder (DataClassMapRecord .class );
150
150
binder .construct (valueResolver );
151
151
152
- MapDataClass dataClass = getTarget (binder );
153
- Map <String , DataClass > map = dataClass .dataClassMap ();
152
+ DataClassMapRecord target = getTarget (binder );
153
+ Map <String , DataClass > map = target .dataClassMap ();
154
154
155
155
assertThat (map ).hasSize (3 );
156
156
assertThat (map .get ("a" ).param1 ()).isEqualTo ("value1" );
@@ -159,24 +159,58 @@ void mapBinding() {
159
159
}
160
160
161
161
@ Test
162
- void arrayBinding () {
162
+ void dataClassWithArrayBinding () {
163
163
MapValueResolver valueResolver = new MapValueResolver (Map .of (
164
164
"dataClassArray[0].param1" , "value1" , "dataClassArray[0].param2" , "true" ,
165
165
"dataClassArray[1].param1" , "value2" , "dataClassArray[1].param2" , "true" ,
166
166
"dataClassArray[2].param1" , "value3" , "dataClassArray[2].param2" , "true" ));
167
167
168
- DataBinder binder = initDataBinder (ArrayDataClass .class );
168
+ DataBinder binder = initDataBinder (DataClassArrayRecord .class );
169
169
binder .construct (valueResolver );
170
170
171
- ArrayDataClass dataClass = getTarget (binder );
172
- DataClass [] array = dataClass .dataClassArray ();
171
+ DataClassArrayRecord target = getTarget (binder );
172
+ DataClass [] array = target .dataClassArray ();
173
173
174
174
assertThat (array ).hasSize (3 );
175
175
assertThat (array [0 ].param1 ()).isEqualTo ("value1" );
176
176
assertThat (array [1 ].param1 ()).isEqualTo ("value2" );
177
177
assertThat (array [2 ].param1 ()).isEqualTo ("value3" );
178
178
}
179
179
180
+ @ Test
181
+ void simpleListBinding () {
182
+ MapValueResolver valueResolver = new MapValueResolver (Map .of ("integerList[0]" , "1" , "integerList[1]" , "2" ));
183
+
184
+ DataBinder binder = initDataBinder (IntegerListRecord .class );
185
+ binder .construct (valueResolver );
186
+
187
+ IntegerListRecord target = getTarget (binder );
188
+ assertThat (target .integerList ()).containsExactly (1 , 2 );
189
+ }
190
+
191
+ @ Test
192
+ void simpleMapBinding () {
193
+ MapValueResolver valueResolver = new MapValueResolver (Map .of ("integerMap[a]" , "1" , "integerMap[b]" , "2" ));
194
+
195
+ DataBinder binder = initDataBinder (IntegerMapRecord .class );
196
+ binder .construct (valueResolver );
197
+
198
+ IntegerMapRecord target = getTarget (binder );
199
+ assertThat (target .integerMap ()).hasSize (2 ).containsEntry ("a" , 1 ).containsEntry ("b" , 2 );
200
+ }
201
+
202
+ @ Test
203
+ void simpleArrayBinding () {
204
+ MapValueResolver valueResolver = new MapValueResolver (Map .of ("integerArray[0]" , "1" , "integerArray[1]" , "2" ));
205
+
206
+ DataBinder binder = initDataBinder (IntegerArrayRecord .class );
207
+ binder .construct (valueResolver );
208
+
209
+ IntegerArrayRecord target = getTarget (binder );
210
+ assertThat (target .integerArray ()).containsExactly (1 , 2 );
211
+ }
212
+
213
+
180
214
@ SuppressWarnings ("SameParameterValue" )
181
215
private static DataBinder initDataBinder (Class <?> targetType ) {
182
216
DataBinder binder = new DataBinder (null );
@@ -248,15 +282,27 @@ public DataClass nestedParam2() {
248
282
}
249
283
250
284
251
- private record ListDataClass (List <DataClass > dataClassList ) {
285
+ private record DataClassListRecord (List <DataClass > dataClassList ) {
286
+ }
287
+
288
+
289
+ private record DataClassMapRecord (Map <String , DataClass > dataClassMap ) {
290
+ }
291
+
292
+
293
+ private record DataClassArrayRecord (DataClass [] dataClassArray ) {
294
+ }
295
+
296
+
297
+ private record IntegerListRecord (List <Integer > integerList ) {
252
298
}
253
299
254
300
255
- private record MapDataClass (Map <String , DataClass > dataClassMap ) {
301
+ private record IntegerMapRecord (Map <String , Integer > integerMap ) {
256
302
}
257
303
258
304
259
- private record ArrayDataClass ( DataClass [] dataClassArray ) {
305
+ private record IntegerArrayRecord ( Integer [] integerArray ) {
260
306
}
261
307
262
308
0 commit comments