43
43
import org .springframework .util .ObjectUtils ;
44
44
45
45
/**
46
- * Support for writing parameters.
46
+ * Support for generating parameters.
47
47
*
48
48
* @author Stephane Nicoll
49
49
* @since 6.0
@@ -52,16 +52,16 @@ public final class BeanParameterGenerator {
52
52
53
53
private final ResolvableTypeGenerator typeGenerator = new ResolvableTypeGenerator ();
54
54
55
- private final BiConsumer <BeanDefinition , Builder > innerBeanDefinitionWriter ;
55
+ private final BiConsumer <BeanDefinition , Builder > innerBeanDefinitionGenerator ;
56
56
57
57
58
58
/**
59
- * Create an instance with the callback to use to write an inner bean
59
+ * Create an instance with the callback to use to generate an inner bean
60
60
* definition.
61
- * @param innerBeanDefinitionWriter the inner bean definition writer
61
+ * @param innerBeanDefinitionGenerator the inner bean definition generator
62
62
*/
63
- public BeanParameterGenerator (BiConsumer <BeanDefinition , Builder > innerBeanDefinitionWriter ) {
64
- this .innerBeanDefinitionWriter = innerBeanDefinitionWriter ;
63
+ public BeanParameterGenerator (BiConsumer <BeanDefinition , Builder > innerBeanDefinitionGenerator ) {
64
+ this .innerBeanDefinitionGenerator = innerBeanDefinitionGenerator ;
65
65
}
66
66
67
67
/**
@@ -75,47 +75,47 @@ public BeanParameterGenerator() {
75
75
76
76
77
77
/**
78
- * Write the specified parameter {@code value}.
78
+ * Generate the specified parameter {@code value}.
79
79
* @param value the value of the parameter
80
80
* @return the value of the parameter
81
81
*/
82
- public CodeBlock writeParameterValue (@ Nullable Object value ) {
83
- return writeParameterValue (value , () -> ResolvableType .forInstance (value ));
82
+ public CodeBlock generateParameterValue (@ Nullable Object value ) {
83
+ return generateParameterValue (value , () -> ResolvableType .forInstance (value ));
84
84
}
85
85
86
86
/**
87
- * Write the specified parameter {@code value}.
87
+ * Generate the specified parameter {@code value}.
88
88
* @param value the value of the parameter
89
89
* @param parameterType the type of the parameter
90
90
* @return the value of the parameter
91
91
*/
92
- public CodeBlock writeParameterValue (@ Nullable Object value , Supplier <ResolvableType > parameterType ) {
92
+ public CodeBlock generateParameterValue (@ Nullable Object value , Supplier <ResolvableType > parameterType ) {
93
93
Builder code = CodeBlock .builder ();
94
- writeParameterValue (code , value , parameterType );
94
+ generateParameterValue (code , value , parameterType );
95
95
return code .build ();
96
96
}
97
97
98
98
/**
99
- * Write the parameter types of the specified {@link Executable}.
99
+ * Generate the parameter types of the specified {@link Executable}.
100
100
* @param executable the executable
101
101
* @return the parameter types of the executable as a comma separated list
102
102
*/
103
- public CodeBlock writeExecutableParameterTypes (Executable executable ) {
103
+ public CodeBlock generateExecutableParameterTypes (Executable executable ) {
104
104
Class <?>[] parameterTypes = Arrays .stream (executable .getParameters ())
105
105
.map (Parameter ::getType ).toArray (Class <?>[]::new );
106
106
return CodeBlock .of (Arrays .stream (parameterTypes ).map (d -> "$T.class" )
107
107
.collect (Collectors .joining (", " )), (Object []) parameterTypes );
108
108
}
109
109
110
- private void writeParameterValue (Builder code , @ Nullable Object value , Supplier <ResolvableType > parameterTypeSupplier ) {
110
+ private void generateParameterValue (Builder code , @ Nullable Object value , Supplier <ResolvableType > parameterTypeSupplier ) {
111
111
if (value == null ) {
112
112
code .add ("null" );
113
113
return ;
114
114
}
115
115
ResolvableType parameterType = parameterTypeSupplier .get ();
116
116
if (parameterType .isArray ()) {
117
117
code .add ("new $T { " , parameterType .toClass ());
118
- code .add (writeAll (Arrays .asList (ObjectUtils .toObjectArray (value )),
118
+ code .add (generateAll (Arrays .asList (ObjectUtils .toObjectArray (value )),
119
119
item -> parameterType .getComponentType ()));
120
120
code .add (" }" );
121
121
}
@@ -127,7 +127,7 @@ else if (value instanceof List<?> list) {
127
127
Class <?> listType = (value instanceof ManagedList ? ManagedList .class : List .class );
128
128
code .add ("$T.of(" , listType );
129
129
ResolvableType collectionType = parameterType .as (List .class ).getGenerics ()[0 ];
130
- code .add (writeAll (list , item -> collectionType ));
130
+ code .add (generateAll (list , item -> collectionType ));
131
131
code .add (")" );
132
132
}
133
133
}
@@ -139,7 +139,7 @@ else if (value instanceof Set<?> set) {
139
139
Class <?> setType = (value instanceof ManagedSet ? ManagedSet .class : Set .class );
140
140
code .add ("$T.of(" , setType );
141
141
ResolvableType collectionType = parameterType .as (Set .class ).getGenerics ()[0 ];
142
- code .add (writeAll (set , item -> collectionType ));
142
+ code .add (generateAll (set , item -> collectionType ));
143
143
code .add (")" );
144
144
}
145
145
}
@@ -151,7 +151,7 @@ else if (value instanceof Map<?, ?> map) {
151
151
parameters .add (mapKey );
152
152
parameters .add (mapValue );
153
153
});
154
- code .add (writeAll (parameters , ResolvableType ::forInstance ));
154
+ code .add (generateAll (parameters , ResolvableType ::forInstance ));
155
155
code .add (")" );
156
156
}
157
157
}
@@ -175,7 +175,7 @@ else if (value instanceof ResolvableType) {
175
175
code .add (this .typeGenerator .generateTypeFor ((ResolvableType ) value ));
176
176
}
177
177
else if (value instanceof BeanDefinition ) {
178
- this .innerBeanDefinitionWriter .accept ((BeanDefinition ) value , code );
178
+ this .innerBeanDefinitionGenerator .accept ((BeanDefinition ) value , code );
179
179
}
180
180
else if (value instanceof BeanReference ) {
181
181
code .add ("new $T($S)" , RuntimeBeanReference .class , ((BeanReference ) value ).getBeanName ());
@@ -185,10 +185,10 @@ else if (value instanceof BeanReference) {
185
185
}
186
186
}
187
187
188
- private <T > CodeBlock writeAll (Iterable <T > items , Function <T , ResolvableType > elementType ) {
188
+ private <T > CodeBlock generateAll (Iterable <T > items , Function <T , ResolvableType > elementType ) {
189
189
MultiCodeBlock multi = new MultiCodeBlock ();
190
190
items .forEach (item -> multi .add (code ->
191
- writeParameterValue (code , item , () -> elementType .apply (item ))));
191
+ generateParameterValue (code , item , () -> elementType .apply (item ))));
192
192
return multi .join (", " );
193
193
}
194
194
0 commit comments