Skip to content

Commit 97986b3

Browse files
committed
Harmonize use of generate
This commit harmonizes the use of the "generate" keyword for anything related to code generation. Previously, there was a mix of "generate" and "write." See gh-28047
1 parent ea19b92 commit 97986b3

File tree

6 files changed

+151
-149
lines changed

6 files changed

+151
-149
lines changed

spring-beans/src/main/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -838,7 +838,7 @@ public void applyTo(CodeContribution contribution) {
838838
boolean isRequired = isRequired(element);
839839
Member member = element.getMember();
840840
analyzeMember(contribution, member);
841-
contribution.statements().addStatement(this.generator.writeInjection(member, isRequired));
841+
contribution.statements().addStatement(this.generator.generateInjection(member, isRequired));
842842
});
843843
}
844844

spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
import org.springframework.util.ObjectUtils;
4444

4545
/**
46-
* Support for writing parameters.
46+
* Support for generating parameters.
4747
*
4848
* @author Stephane Nicoll
4949
* @since 6.0
@@ -52,16 +52,16 @@ public final class BeanParameterGenerator {
5252

5353
private final ResolvableTypeGenerator typeGenerator = new ResolvableTypeGenerator();
5454

55-
private final BiConsumer<BeanDefinition, Builder> innerBeanDefinitionWriter;
55+
private final BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator;
5656

5757

5858
/**
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
6060
* definition.
61-
* @param innerBeanDefinitionWriter the inner bean definition writer
61+
* @param innerBeanDefinitionGenerator the inner bean definition generator
6262
*/
63-
public BeanParameterGenerator(BiConsumer<BeanDefinition, Builder> innerBeanDefinitionWriter) {
64-
this.innerBeanDefinitionWriter = innerBeanDefinitionWriter;
63+
public BeanParameterGenerator(BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator) {
64+
this.innerBeanDefinitionGenerator = innerBeanDefinitionGenerator;
6565
}
6666

6767
/**
@@ -75,47 +75,47 @@ public BeanParameterGenerator() {
7575

7676

7777
/**
78-
* Write the specified parameter {@code value}.
78+
* Generate the specified parameter {@code value}.
7979
* @param value the value of the parameter
8080
* @return the value of the parameter
8181
*/
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));
8484
}
8585

8686
/**
87-
* Write the specified parameter {@code value}.
87+
* Generate the specified parameter {@code value}.
8888
* @param value the value of the parameter
8989
* @param parameterType the type of the parameter
9090
* @return the value of the parameter
9191
*/
92-
public CodeBlock writeParameterValue(@Nullable Object value, Supplier<ResolvableType> parameterType) {
92+
public CodeBlock generateParameterValue(@Nullable Object value, Supplier<ResolvableType> parameterType) {
9393
Builder code = CodeBlock.builder();
94-
writeParameterValue(code, value, parameterType);
94+
generateParameterValue(code, value, parameterType);
9595
return code.build();
9696
}
9797

9898
/**
99-
* Write the parameter types of the specified {@link Executable}.
99+
* Generate the parameter types of the specified {@link Executable}.
100100
* @param executable the executable
101101
* @return the parameter types of the executable as a comma separated list
102102
*/
103-
public CodeBlock writeExecutableParameterTypes(Executable executable) {
103+
public CodeBlock generateExecutableParameterTypes(Executable executable) {
104104
Class<?>[] parameterTypes = Arrays.stream(executable.getParameters())
105105
.map(Parameter::getType).toArray(Class<?>[]::new);
106106
return CodeBlock.of(Arrays.stream(parameterTypes).map(d -> "$T.class")
107107
.collect(Collectors.joining(", ")), (Object[]) parameterTypes);
108108
}
109109

110-
private void writeParameterValue(Builder code, @Nullable Object value, Supplier<ResolvableType> parameterTypeSupplier) {
110+
private void generateParameterValue(Builder code, @Nullable Object value, Supplier<ResolvableType> parameterTypeSupplier) {
111111
if (value == null) {
112112
code.add("null");
113113
return;
114114
}
115115
ResolvableType parameterType = parameterTypeSupplier.get();
116116
if (parameterType.isArray()) {
117117
code.add("new $T { ", parameterType.toClass());
118-
code.add(writeAll(Arrays.asList(ObjectUtils.toObjectArray(value)),
118+
code.add(generateAll(Arrays.asList(ObjectUtils.toObjectArray(value)),
119119
item -> parameterType.getComponentType()));
120120
code.add(" }");
121121
}
@@ -127,7 +127,7 @@ else if (value instanceof List<?> list) {
127127
Class<?> listType = (value instanceof ManagedList ? ManagedList.class : List.class);
128128
code.add("$T.of(", listType);
129129
ResolvableType collectionType = parameterType.as(List.class).getGenerics()[0];
130-
code.add(writeAll(list, item -> collectionType));
130+
code.add(generateAll(list, item -> collectionType));
131131
code.add(")");
132132
}
133133
}
@@ -139,7 +139,7 @@ else if (value instanceof Set<?> set) {
139139
Class<?> setType = (value instanceof ManagedSet ? ManagedSet.class : Set.class);
140140
code.add("$T.of(", setType);
141141
ResolvableType collectionType = parameterType.as(Set.class).getGenerics()[0];
142-
code.add(writeAll(set, item -> collectionType));
142+
code.add(generateAll(set, item -> collectionType));
143143
code.add(")");
144144
}
145145
}
@@ -151,7 +151,7 @@ else if (value instanceof Map<?, ?> map) {
151151
parameters.add(mapKey);
152152
parameters.add(mapValue);
153153
});
154-
code.add(writeAll(parameters, ResolvableType::forInstance));
154+
code.add(generateAll(parameters, ResolvableType::forInstance));
155155
code.add(")");
156156
}
157157
}
@@ -175,7 +175,7 @@ else if (value instanceof ResolvableType) {
175175
code.add(this.typeGenerator.generateTypeFor((ResolvableType) value));
176176
}
177177
else if (value instanceof BeanDefinition) {
178-
this.innerBeanDefinitionWriter.accept((BeanDefinition) value, code);
178+
this.innerBeanDefinitionGenerator.accept((BeanDefinition) value, code);
179179
}
180180
else if (value instanceof BeanReference) {
181181
code.add("new $T($S)", RuntimeBeanReference.class, ((BeanReference) value).getBeanName());
@@ -185,10 +185,10 @@ else if (value instanceof BeanReference) {
185185
}
186186
}
187187

188-
private <T> CodeBlock writeAll(Iterable<T> items, Function<T, ResolvableType> elementType) {
188+
private <T> CodeBlock generateAll(Iterable<T> items, Function<T, ResolvableType> elementType) {
189189
MultiCodeBlock multi = new MultiCodeBlock();
190190
items.forEach(item -> multi.add(code ->
191-
writeParameterValue(code, item, () -> elementType.apply(item))));
191+
generateParameterValue(code, item, () -> elementType.apply(item))));
192192
return multi.join(", ");
193193
}
194194

spring-beans/src/main/java/org/springframework/beans/factory/generator/DefaultBeanInstantiationGenerator.java

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import org.springframework.util.ClassUtils;
3434

3535
/**
36-
* Write the necessary statements to instantiate a bean.
36+
* Generate the necessary statements to instantiate a bean.
3737
*
3838
* @author Stephane Nicoll
3939
* @see BeanInstantiationContribution
@@ -64,18 +64,18 @@ class DefaultBeanInstantiationGenerator {
6464
* @return a code contribution that provides an initialized bean instance
6565
*/
6666
public CodeContribution generateBeanInstantiation(RuntimeHints runtimeHints) {
67-
DefaultCodeContribution contribution = new DefaultCodeContribution(runtimeHints);
68-
contribution.protectedAccess().analyze(this.instanceCreator, this.beanInstanceOptions);
67+
DefaultCodeContribution codeContribution = new DefaultCodeContribution(runtimeHints);
68+
codeContribution.protectedAccess().analyze(this.instanceCreator, this.beanInstanceOptions);
6969
if (this.instanceCreator instanceof Constructor<?> constructor) {
70-
writeBeanInstantiation(contribution, constructor);
70+
generateBeanInstantiation(codeContribution, constructor);
7171
}
7272
else if (this.instanceCreator instanceof Method method) {
73-
writeBeanInstantiation(contribution, method);
73+
generateBeanInstantiation(codeContribution, method);
7474
}
75-
return contribution;
75+
return codeContribution;
7676
}
7777

78-
private void writeBeanInstantiation(CodeContribution contribution, Constructor<?> constructor) {
78+
private void generateBeanInstantiation(CodeContribution codeContribution, Constructor<?> constructor) {
7979
Class<?> declaringType = ClassUtils.getUserClass(constructor.getDeclaringClass());
8080
boolean innerClass = isInnerClass(declaringType);
8181
boolean multiStatements = !this.contributions.isEmpty();
@@ -96,24 +96,24 @@ private void writeBeanInstantiation(CodeContribution contribution, Constructor<?
9696
code.add("$T::new", declaringType);
9797
}
9898
}
99-
contribution.statements().addStatement(code.build());
99+
codeContribution.statements().addStatement(code.build());
100100
return;
101101
}
102-
contribution.runtimeHints().reflection().registerConstructor(constructor,
102+
codeContribution.runtimeHints().reflection().registerConstructor(constructor,
103103
hint -> hint.withMode(ExecutableMode.INTROSPECT));
104104
code.add("(instanceContext) ->");
105105
branch(multiStatements, () -> code.beginControlFlow(""), () -> code.add(" "));
106106
if (multiStatements) {
107107
code.add("$T bean = ", declaringType);
108108
}
109-
code.add(this.injectionGenerator.writeInstantiation(constructor));
110-
contribution.statements().addStatement(code.build());
109+
code.add(this.injectionGenerator.generateInstantiation(constructor));
110+
codeContribution.statements().addStatement(code.build());
111111

112112
if (multiStatements) {
113-
for (BeanInstantiationContribution contributor : this.contributions) {
114-
contributor.applyTo(contribution);
113+
for (BeanInstantiationContribution contribution : this.contributions) {
114+
contribution.applyTo(codeContribution);
115115
}
116-
contribution.statements().addStatement("return bean")
116+
codeContribution.statements().addStatement("return bean")
117117
.add(codeBlock -> codeBlock.unindent().add("}"));
118118
}
119119
}
@@ -122,9 +122,9 @@ private static boolean isInnerClass(Class<?> type) {
122122
return type.isMemberClass() && !Modifier.isStatic(type.getModifiers());
123123
}
124124

125-
private void writeBeanInstantiation(CodeContribution contribution, Method method) {
125+
private void generateBeanInstantiation(CodeContribution codeContribution, Method method) {
126126
// Factory method can be introspected
127-
contribution.runtimeHints().reflection().registerMethod(method,
127+
codeContribution.runtimeHints().reflection().registerMethod(method,
128128
hint -> hint.withMode(ExecutableMode.INTROSPECT));
129129
List<Class<?>> parameterTypes = new ArrayList<>(Arrays.asList(method.getParameterTypes()));
130130
boolean multiStatements = !this.contributions.isEmpty();
@@ -137,21 +137,21 @@ private void writeBeanInstantiation(CodeContribution contribution, Method method
137137
() -> code.add("$T", declaringType),
138138
() -> code.add("beanFactory.getBean($T.class)", declaringType));
139139
code.add(".$L()", method.getName());
140-
contribution.statements().addStatement(code.build());
140+
codeContribution.statements().addStatement(code.build());
141141
return;
142142
}
143143
code.add("(instanceContext) ->");
144144
branch(multiStatements, () -> code.beginControlFlow(""), () -> code.add(" "));
145145
if (multiStatements) {
146146
code.add("$T bean = ", method.getReturnType());
147147
}
148-
code.add(this.injectionGenerator.writeInstantiation(method));
149-
contribution.statements().addStatement(code.build());
148+
code.add(this.injectionGenerator.generateInstantiation(method));
149+
codeContribution.statements().addStatement(code.build());
150150
if (multiStatements) {
151-
for (BeanInstantiationContribution contributor : this.contributions) {
152-
contributor.applyTo(contribution);
151+
for (BeanInstantiationContribution contribution : this.contributions) {
152+
contribution.applyTo(codeContribution);
153153
}
154-
contribution.statements().addStatement("return bean")
154+
codeContribution.statements().addStatement("return bean")
155155
.add(codeBlock -> codeBlock.unindent().add("}"));
156156
}
157157
}

spring-beans/src/main/java/org/springframework/beans/factory/generator/InjectionGenerator.java

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
import org.springframework.util.ReflectionUtils;
3838

3939
/**
40-
* Generate the necessary code to {@link #writeInstantiation(Executable)
41-
* create a bean instance} or {@link #writeInjection(Member, boolean)
40+
* Generate the necessary code to {@link #generateInstantiation(Executable)
41+
* create a bean instance} or {@link #generateInjection(Member, boolean)
4242
* inject dependencies}.
4343
* <p/>
4444
* The generator assumes a number of variables to be accessible:
@@ -63,37 +63,37 @@ public class InjectionGenerator {
6363

6464

6565
/**
66-
* Write the necessary code to instantiate an object using the specified
66+
* Generate the necessary code to instantiate an object using the specified
6767
* {@link Executable}. The code is suitable to be assigned to a variable
6868
* or used as a {@literal return} statement.
6969
* @param creator the executable to invoke to create an instance of the
7070
* requested object
7171
* @return the code to instantiate an object using the specified executable
7272
*/
73-
public CodeBlock writeInstantiation(Executable creator) {
73+
public CodeBlock generateInstantiation(Executable creator) {
7474
if (creator instanceof Constructor<?> constructor) {
75-
return write(constructor);
75+
return generateConstructorInstantiation(constructor);
7676
}
7777
if (creator instanceof Method method) {
78-
return writeMethodInstantiation(method);
78+
return generateMethodInstantiation(method);
7979
}
8080
throw new IllegalArgumentException("Could not handle creator " + creator);
8181
}
8282

8383
/**
84-
* Write the code to inject a value resolved by {@link BeanInstanceContext}
84+
* Generate the code to inject a value resolved by {@link BeanInstanceContext}
8585
* in the specified {@link Member}.
8686
* @param member the field or method to inject
8787
* @param required whether the value is required
8888
* @return a statement that injects a value to the specified member
8989
* @see #getProtectedAccessInjectionOptions(Member)
9090
*/
91-
public CodeBlock writeInjection(Member member, boolean required) {
91+
public CodeBlock generateInjection(Member member, boolean required) {
9292
if (member instanceof Method method) {
93-
return writeMethodInjection(method, required);
93+
return generateMethodInjection(method, required);
9494
}
9595
if (member instanceof Field field) {
96-
return writeFieldInjection(field, required);
96+
return generateFieldInjection(field, required);
9797
}
9898
throw new IllegalArgumentException("Could not handle member " + member);
9999
}
@@ -115,7 +115,7 @@ public Options getProtectedAccessInjectionOptions(Member member) {
115115
throw new IllegalArgumentException("Could not handle member " + member);
116116
}
117117

118-
private CodeBlock write(Constructor<?> creator) {
118+
private CodeBlock generateConstructorInstantiation(Constructor<?> creator) {
119119
Builder code = CodeBlock.builder();
120120
Class<?> declaringType = ClassUtils.getUserClass(creator.getDeclaringClass());
121121
boolean innerClass = isInnerClass(declaringType);
@@ -162,7 +162,7 @@ private static boolean isInnerClass(Class<?> type) {
162162
return type.isMemberClass() && !Modifier.isStatic(type.getModifiers());
163163
}
164164

165-
private CodeBlock writeMethodInstantiation(Method injectionPoint) {
165+
private CodeBlock generateMethodInstantiation(Method injectionPoint) {
166166
if (injectionPoint.getParameterCount() == 0) {
167167
Builder code = CodeBlock.builder();
168168
Class<?> declaringType = injectionPoint.getDeclaringClass();
@@ -175,10 +175,10 @@ private CodeBlock writeMethodInstantiation(Method injectionPoint) {
175175
code.add(".$L()", injectionPoint.getName());
176176
return code.build();
177177
}
178-
return write(injectionPoint, code -> code.add(".create(beanFactory, (attributes) ->"), true);
178+
return generateMethodInvocation(injectionPoint, code -> code.add(".create(beanFactory, (attributes) ->"), true);
179179
}
180180

181-
private CodeBlock writeMethodInjection(Method injectionPoint, boolean required) {
181+
private CodeBlock generateMethodInjection(Method injectionPoint, boolean required) {
182182
Consumer<Builder> attributesResolver = code -> {
183183
if (required) {
184184
code.add(".invoke(beanFactory, (attributes) ->");
@@ -187,15 +187,15 @@ private CodeBlock writeMethodInjection(Method injectionPoint, boolean required)
187187
code.add(".resolve(beanFactory, false).ifResolved((attributes) ->");
188188
}
189189
};
190-
return write(injectionPoint, attributesResolver, false);
190+
return generateMethodInvocation(injectionPoint, attributesResolver, false);
191191
}
192192

193-
private CodeBlock write(Method injectionPoint, Consumer<Builder> attributesResolver, boolean instantiation) {
193+
private CodeBlock generateMethodInvocation(Method injectionPoint, Consumer<Builder> attributesResolver, boolean instantiation) {
194194
Builder code = CodeBlock.builder();
195195
code.add("instanceContext");
196196
if (!instantiation) {
197197
code.add(".method($S, ", injectionPoint.getName());
198-
code.add(this.parameterGenerator.writeExecutableParameterTypes(injectionPoint));
198+
code.add(this.parameterGenerator.generateExecutableParameterTypes(injectionPoint));
199199
code.add(")\n").indent().indent();
200200
}
201201
attributesResolver.accept(code);
@@ -222,7 +222,7 @@ private CodeBlock write(Method injectionPoint, Consumer<Builder> attributesResol
222222
return code.build();
223223
}
224224

225-
CodeBlock writeFieldInjection(Field injectionPoint, boolean required) {
225+
CodeBlock generateFieldInjection(Field injectionPoint, boolean required) {
226226
Builder code = CodeBlock.builder();
227227
code.add("instanceContext.field($S, $T.class", injectionPoint.getName(), injectionPoint.getType());
228228
code.add(")\n").indent().indent();

0 commit comments

Comments
 (0)