1
1
/*
2
- * Copyright 2002-2023 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.
41
41
import org .springframework .util .ClassUtils ;
42
42
43
43
/**
44
- * Internal {@link BeanRegistrationCodeFragments} implementation used by
45
- * default.
44
+ * Internal {@link BeanRegistrationCodeFragments} implementation used by default.
46
45
*
47
46
* @author Phillip Webb
48
47
*/
@@ -55,8 +54,8 @@ class DefaultBeanRegistrationCodeFragments implements BeanRegistrationCodeFragme
55
54
private final BeanDefinitionMethodGeneratorFactory beanDefinitionMethodGeneratorFactory ;
56
55
57
56
58
- DefaultBeanRegistrationCodeFragments (BeanRegistrationsCode beanRegistrationsCode ,
59
- RegisteredBean registeredBean ,
57
+ DefaultBeanRegistrationCodeFragments (
58
+ BeanRegistrationsCode beanRegistrationsCode , RegisteredBean registeredBean ,
60
59
BeanDefinitionMethodGeneratorFactory beanDefinitionMethodGeneratorFactory ) {
61
60
62
61
this .beanRegistrationsCode = beanRegistrationsCode ;
@@ -66,9 +65,7 @@ class DefaultBeanRegistrationCodeFragments implements BeanRegistrationCodeFragme
66
65
67
66
68
67
@ Override
69
- public ClassName getTarget (RegisteredBean registeredBean ,
70
- Executable constructorOrFactoryMethod ) {
71
-
68
+ public ClassName getTarget (RegisteredBean registeredBean , Executable constructorOrFactoryMethod ) {
72
69
Class <?> target = extractDeclaringClass (registeredBean .getBeanType (), constructorOrFactoryMethod );
73
70
while (target .getName ().startsWith ("java." ) && registeredBean .isInnerBean ()) {
74
71
RegisteredBean parent = registeredBean .getParent ();
@@ -80,9 +77,8 @@ public ClassName getTarget(RegisteredBean registeredBean,
80
77
81
78
private Class <?> extractDeclaringClass (ResolvableType beanType , Executable executable ) {
82
79
Class <?> declaringClass = ClassUtils .getUserClass (executable .getDeclaringClass ());
83
- if (executable instanceof Constructor <?>
84
- && AccessControl .forMember (executable ).isPublic ()
85
- && FactoryBean .class .isAssignableFrom (declaringClass )) {
80
+ if (executable instanceof Constructor <?> && AccessControl .forMember (executable ).isPublic () &&
81
+ FactoryBean .class .isAssignableFrom (declaringClass )) {
86
82
return extractTargetClassFromFactoryBean (declaringClass , beanType );
87
83
}
88
84
return executable .getDeclaringClass ();
@@ -91,8 +87,7 @@ private Class<?> extractDeclaringClass(ResolvableType beanType, Executable execu
91
87
/**
92
88
* Extract the target class of a public {@link FactoryBean} based on its
93
89
* constructor. If the implementation does not resolve the target class
94
- * because it itself uses a generic, attempt to extract it from the
95
- * bean type.
90
+ * because it itself uses a generic, attempt to extract it from the bean type.
96
91
* @param factoryBeanType the factory bean type
97
92
* @param beanType the bean type
98
93
* @return the target class to use
@@ -113,17 +108,15 @@ public CodeBlock generateNewBeanDefinitionCode(GenerationContext generationConte
113
108
ResolvableType beanType , BeanRegistrationCode beanRegistrationCode ) {
114
109
115
110
CodeBlock .Builder code = CodeBlock .builder ();
116
- RootBeanDefinition mergedBeanDefinition = this .registeredBean .getMergedBeanDefinition ();
117
- Class <?> beanClass = (mergedBeanDefinition .hasBeanClass ()
118
- ? ClassUtils .getUserClass (mergedBeanDefinition .getBeanClass ()) : null );
111
+ RootBeanDefinition mbd = this .registeredBean .getMergedBeanDefinition ();
112
+ Class <?> beanClass = (mbd .hasBeanClass () ? ClassUtils .getUserClass (mbd .getBeanClass ()) : null );
119
113
CodeBlock beanClassCode = generateBeanClassCode (
120
114
beanRegistrationCode .getClassName ().packageName (),
121
115
(beanClass != null ? beanClass : beanType .toClass ()));
122
116
code .addStatement ("$T $L = new $T($L)" , RootBeanDefinition .class ,
123
117
BEAN_DEFINITION_VARIABLE , RootBeanDefinition .class , beanClassCode );
124
118
if (targetTypeNecessary (beanType , beanClass )) {
125
- code .addStatement ("$L.setTargetType($L)" , BEAN_DEFINITION_VARIABLE ,
126
- generateBeanTypeCode (beanType ));
119
+ code .addStatement ("$L.setTargetType($L)" , BEAN_DEFINITION_VARIABLE , generateBeanTypeCode (beanType ));
127
120
}
128
121
return code .build ();
129
122
}
@@ -148,18 +141,16 @@ private boolean targetTypeNecessary(ResolvableType beanType, @Nullable Class<?>
148
141
if (beanType .hasGenerics ()) {
149
142
return true ;
150
143
}
151
- if (beanClass != null
152
- && this .registeredBean .getMergedBeanDefinition ().getFactoryMethodName () != null ) {
144
+ if (beanClass != null && this .registeredBean .getMergedBeanDefinition ().getFactoryMethodName () != null ) {
153
145
return true ;
154
146
}
155
147
return (beanClass != null && !beanType .toClass ().equals (beanClass ));
156
148
}
157
149
158
150
@ Override
159
151
public CodeBlock generateSetBeanDefinitionPropertiesCode (
160
- GenerationContext generationContext ,
161
- BeanRegistrationCode beanRegistrationCode , RootBeanDefinition beanDefinition ,
162
- Predicate <String > attributeFilter ) {
152
+ GenerationContext generationContext , BeanRegistrationCode beanRegistrationCode ,
153
+ RootBeanDefinition beanDefinition , Predicate <String > attributeFilter ) {
163
154
164
155
return new BeanDefinitionPropertiesCodeGenerator (
165
156
generationContext .getRuntimeHints (), attributeFilter ,
@@ -169,9 +160,7 @@ public CodeBlock generateSetBeanDefinitionPropertiesCode(
169
160
}
170
161
171
162
@ Nullable
172
- protected CodeBlock generateValueCode (GenerationContext generationContext ,
173
- String name , Object value ) {
174
-
163
+ protected CodeBlock generateValueCode (GenerationContext generationContext , String name , Object value ) {
175
164
RegisteredBean innerRegisteredBean = getInnerRegisteredBean (value );
176
165
if (innerRegisteredBean != null ) {
177
166
BeanDefinitionMethodGenerator methodGenerator = this .beanDefinitionMethodGeneratorFactory
@@ -197,9 +186,8 @@ private RegisteredBean getInnerRegisteredBean(Object value) {
197
186
198
187
@ Override
199
188
public CodeBlock generateSetBeanInstanceSupplierCode (
200
- GenerationContext generationContext ,
201
- BeanRegistrationCode beanRegistrationCode , CodeBlock instanceSupplierCode ,
202
- List <MethodReference > postProcessors ) {
189
+ GenerationContext generationContext , BeanRegistrationCode beanRegistrationCode ,
190
+ CodeBlock instanceSupplierCode , List <MethodReference > postProcessors ) {
203
191
204
192
CodeBlock .Builder code = CodeBlock .builder ();
205
193
if (postProcessors .isEmpty ()) {
@@ -219,8 +207,8 @@ public CodeBlock generateSetBeanInstanceSupplierCode(
219
207
}
220
208
221
209
@ Override
222
- public CodeBlock generateInstanceSupplierCode (GenerationContext generationContext ,
223
- BeanRegistrationCode beanRegistrationCode ,
210
+ public CodeBlock generateInstanceSupplierCode (
211
+ GenerationContext generationContext , BeanRegistrationCode beanRegistrationCode ,
224
212
Executable constructorOrFactoryMethod , boolean allowDirectSupplierShortcut ) {
225
213
226
214
return new InstanceSupplierCodeGenerator (generationContext ,
@@ -229,8 +217,8 @@ public CodeBlock generateInstanceSupplierCode(GenerationContext generationContex
229
217
}
230
218
231
219
@ Override
232
- public CodeBlock generateReturnCode (GenerationContext generationContext ,
233
- BeanRegistrationCode beanRegistrationCode ) {
220
+ public CodeBlock generateReturnCode (
221
+ GenerationContext generationContext , BeanRegistrationCode beanRegistrationCode ) {
234
222
235
223
CodeBlock .Builder code = CodeBlock .builder ();
236
224
code .addStatement ("return $L" , BEAN_DEFINITION_VARIABLE );
0 commit comments