17
17
package org .springframework .beans .factory .aot ;
18
18
19
19
import java .lang .reflect .Array ;
20
- import java .util .ArrayList ;
21
20
import java .util .Collection ;
22
21
import java .util .Collections ;
23
- import java .util .HashMap ;
24
22
import java .util .Iterator ;
25
23
import java .util .LinkedHashMap ;
26
24
import java .util .LinkedHashSet ;
@@ -61,25 +59,25 @@ class BeanDefinitionPropertyValueCodeGenerator {
61
59
62
60
private final MethodGenerator methodGenerator ;
63
61
64
- private final List <Delegate > delegates ;
62
+ private final List <Delegate > delegates = List .of (
63
+ new PrimitiveDelegate (),
64
+ new StringDelegate (),
65
+ new EnumDelegate (),
66
+ new ClassDelegate (),
67
+ new ResolvableTypeDelegate (),
68
+ new ArrayDelegate (),
69
+ new ManagedListDelegate (),
70
+ new ManagedSetDelegate (),
71
+ new ManagedMapDelegate (),
72
+ new ListDelegate (),
73
+ new SetDelegate (),
74
+ new MapDelegate (),
75
+ new BeanReferenceDelegate ()
76
+ );
65
77
66
78
67
79
BeanDefinitionPropertyValueCodeGenerator (MethodGenerator methodGenerator ) {
68
80
this .methodGenerator = methodGenerator ;
69
- this .delegates = new ArrayList <>();
70
- this .delegates .add (new PrimitiveDelegate ());
71
- this .delegates .add (new StringDelegate ());
72
- this .delegates .add (new EnumDelegate ());
73
- this .delegates .add (new ClassDelegate ());
74
- this .delegates .add (new ResolvableTypeDelegate ());
75
- this .delegates .add (new ArrayDelegate ());
76
- this .delegates .add (new ManagedListDelegate ());
77
- this .delegates .add (new ManagedSetDelegate ());
78
- this .delegates .add (new ManagedMapDelegate ());
79
- this .delegates .add (new ListDelegate ());
80
- this .delegates .add (new SetDelegate ());
81
- this .delegates .add (new MapDelegate ());
82
- this .delegates .add (new BeanReferenceDelegate ());
83
81
}
84
82
85
83
@@ -121,20 +119,17 @@ private interface Delegate {
121
119
*/
122
120
private static class PrimitiveDelegate implements Delegate {
123
121
124
- private static final Map <Character , String > CHAR_ESCAPES ;
125
-
126
- static {
127
- Map <Character , String > escapes = new HashMap <>();
128
- escapes .put ('\b' , "\\ b" );
129
- escapes .put ('\t' , "\\ t" );
130
- escapes .put ('\n' , "\\ n" );
131
- escapes .put ('\f' , "\\ f" );
132
- escapes .put ('\r' , "\\ r" );
133
- escapes .put ('\"' , "\" " );
134
- escapes .put ('\'' , "\\ '" );
135
- escapes .put ('\\' , "\\ \\ " );
136
- CHAR_ESCAPES = Collections .unmodifiableMap (escapes );
137
- }
122
+ private static final Map <Character , String > CHAR_ESCAPES = Map .of (
123
+ '\b' , "\\ b" ,
124
+ '\t' , "\\ t" ,
125
+ '\n' , "\\ n" ,
126
+ '\f' , "\\ f" ,
127
+ '\r' , "\\ r" ,
128
+ '\"' , "\" " ,
129
+ '\'' , "\\ '" ,
130
+ '\\' , "\\ \\ "
131
+ );
132
+
138
133
139
134
@ Override
140
135
@ Nullable
@@ -258,7 +253,9 @@ public CodeBlock generateCode(@Nullable Object value, ResolvableType type) {
258
253
builder .add ("new $T {" , type .toClass ());
259
254
for (int i = 0 ; i < length ; i ++) {
260
255
Object component = Array .get (value , i );
261
- builder .add ((i != 0 ) ? ", " : "" );
256
+ if (i != 0 ) {
257
+ builder .add (", " );
258
+ }
262
259
builder .add ("$L" , BeanDefinitionPropertyValueCodeGenerator .this
263
260
.generateCode (component , componentType ));
264
261
}
@@ -274,8 +271,7 @@ public CodeBlock generateCode(@Nullable Object value, ResolvableType type) {
274
271
/**
275
272
* Abstract {@link Delegate} for {@code Collection} types.
276
273
*/
277
- private abstract class CollectionDelegate <T extends Collection <?>>
278
- implements Delegate {
274
+ private abstract class CollectionDelegate <T extends Collection <?>> implements Delegate {
279
275
280
276
private final Class <?> collectionType ;
281
277
@@ -301,8 +297,7 @@ public CodeBlock generateCode(Object value, ResolvableType type) {
301
297
return null ;
302
298
}
303
299
304
- protected CodeBlock generateCollectionCode (ResolvableType elementType ,
305
- T collection ) {
300
+ protected CodeBlock generateCollectionCode (ResolvableType elementType , T collection ) {
306
301
return generateCollectionOf (collection , this .collectionType , elementType );
307
302
}
308
303
@@ -315,7 +310,9 @@ protected final CodeBlock generateCollectionOf(Collection<?> collection,
315
310
Object element = iterator .next ();
316
311
builder .add ("$L" , BeanDefinitionPropertyValueCodeGenerator .this
317
312
.generateCode (element , elementType ));
318
- builder .add ((!iterator .hasNext ()) ? "" : ", " );
313
+ if (iterator .hasNext ()) {
314
+ builder .add (", " );
315
+ }
319
316
}
320
317
builder .add (")" );
321
318
return builder .build ();
@@ -382,7 +379,9 @@ private <K, V> CodeBlock generateManagedMapCode(ResolvableType type,
382
379
.generateCode (entry .getKey (), keyType ),
383
380
BeanDefinitionPropertyValueCodeGenerator .this
384
381
.generateCode (entry .getValue (), valueType ));
385
- builder .add ((!iterator .hasNext ()) ? "" : ", " );
382
+ if (iterator .hasNext ()) {
383
+ builder .add (", " );
384
+ }
386
385
}
387
386
builder .add (")" );
388
387
return builder .build ();
@@ -413,8 +412,7 @@ private class SetDelegate extends CollectionDelegate<Set<?>> {
413
412
}
414
413
415
414
@ Override
416
- protected CodeBlock generateCollectionCode (ResolvableType elementType ,
417
- Set <?> set ) {
415
+ protected CodeBlock generateCollectionCode (ResolvableType elementType , Set <?> set ) {
418
416
if (set instanceof LinkedHashSet ) {
419
417
return CodeBlock .of ("new $T($L)" , LinkedHashSet .class ,
420
418
generateCollectionOf (set , List .class , elementType ));
@@ -473,7 +471,9 @@ private <K, V> CodeBlock generateMapCode(ResolvableType type, Map<K, V> map) {
473
471
else {
474
472
builder .add ("$T.entry($L,$L)" , Map .class , keyCode , valueCode );
475
473
}
476
- builder .add ((!iterator .hasNext ()) ? "" : ", " );
474
+ if (iterator .hasNext ()) {
475
+ builder .add (", " );
476
+ }
477
477
}
478
478
builder .add (")" );
479
479
return builder .build ();
@@ -495,12 +495,11 @@ private <K, V> CodeBlock generateLinkedHashMapCode(Map<K, V> map,
495
495
builder .returns (Map .class );
496
496
builder .addStatement ("$T map = new $T($L)" , Map .class ,
497
497
LinkedHashMap .class , map .size ());
498
- map .forEach (
499
- (key , value ) -> builder .addStatement ("map.put($L, $L)" ,
500
- BeanDefinitionPropertyValueCodeGenerator .this
501
- .generateCode (key , keyType ),
502
- BeanDefinitionPropertyValueCodeGenerator .this
503
- .generateCode (value , valueType )));
498
+ map .forEach ((key , value ) -> builder .addStatement ("map.put($L, $L)" ,
499
+ BeanDefinitionPropertyValueCodeGenerator .this
500
+ .generateCode (key , keyType ),
501
+ BeanDefinitionPropertyValueCodeGenerator .this
502
+ .generateCode (value , valueType )));
504
503
builder .addStatement ("return map" );
505
504
});
506
505
return CodeBlock .of ("$L()" , method .getName ());
0 commit comments