Polishing

This commit is contained in:
Juergen Hoeller
2022-09-14 12:55:53 +02:00
parent 6feeeec70e
commit 50d34366bc
5 changed files with 26 additions and 45 deletions

View File

@@ -41,8 +41,7 @@ import org.springframework.util.ObjectUtils;
*/
class BeanDefinitionMethodGeneratorFactory {
private static final Log logger = LogFactory
.getLog(BeanDefinitionMethodGeneratorFactory.class);
private static final Log logger = LogFactory.getLog(BeanDefinitionMethodGeneratorFactory.class);
private final AotServices<BeanRegistrationAotProcessor> aotProcessors;

View File

@@ -83,8 +83,7 @@ class BeanDefinitionPropertyValueCodeGenerator {
CodeBlock generateCode(@Nullable Object value) {
ResolvableType type = (value != null) ? ResolvableType.forInstance(value)
: ResolvableType.NONE;
ResolvableType type = ResolvableType.forInstance(value);
try {
return generateCode(value, type);
}
@@ -205,7 +204,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
@@ -223,7 +221,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
@@ -240,7 +237,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
@@ -257,7 +253,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
@@ -281,7 +276,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
@@ -334,7 +328,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
code.add(")");
return code.build();
}
}
@@ -346,7 +339,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
public ManagedListDelegate() {
super(ManagedList.class, CodeBlock.of("new $T()", ManagedList.class));
}
}
@@ -358,7 +350,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
public ManagedSetDelegate() {
super(ManagedSet.class, CodeBlock.of("new $T()", ManagedSet.class));
}
}
@@ -367,8 +358,7 @@ class BeanDefinitionPropertyValueCodeGenerator {
*/
private class ManagedMapDelegate implements Delegate {
private static final CodeBlock EMPTY_RESULT = CodeBlock.of("$T.ofEntries()",
ManagedMap.class);
private static final CodeBlock EMPTY_RESULT = CodeBlock.of("$T.ofEntries()", ManagedMap.class);
@Override
@Nullable
@@ -379,8 +369,7 @@ class BeanDefinitionPropertyValueCodeGenerator {
return null;
}
private <K, V> CodeBlock generateManagedMapCode(ResolvableType type,
ManagedMap<K, V> managedMap) {
private <K, V> CodeBlock generateManagedMapCode(ResolvableType type, ManagedMap<K, V> managedMap) {
if (managedMap.isEmpty()) {
return EMPTY_RESULT;
}
@@ -403,7 +392,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
code.add(")");
return code.build();
}
}
@@ -415,7 +403,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
ListDelegate() {
super(List.class, CodeBlock.of("$T.emptyList()", Collections.class));
}
}
@@ -441,7 +428,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
private Set<?> orderForCodeConsistency(Set<?> set) {
return new TreeSet<Object>(set);
}
}
@@ -450,8 +436,7 @@ class BeanDefinitionPropertyValueCodeGenerator {
*/
private class MapDelegate implements Delegate {
private static final CodeBlock EMPTY_RESULT = CodeBlock.of("$T.emptyMap()",
Collections.class);
private static final CodeBlock EMPTY_RESULT = CodeBlock.of("$T.emptyMap()", Collections.class);
@Override
@Nullable
@@ -502,6 +487,7 @@ class BeanDefinitionPropertyValueCodeGenerator {
private <K, V> CodeBlock generateLinkedHashMapCode(Map<K, V> map,
ResolvableType keyType, ResolvableType valueType) {
GeneratedMethods generatedMethods = BeanDefinitionPropertyValueCodeGenerator.this.generatedMethods;
GeneratedMethod generatedMethod = generatedMethods.add("getMap", method -> {
method.addAnnotation(AnnotationSpec
@@ -520,7 +506,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
});
return CodeBlock.of("$L()", generatedMethod.getName());
}
}
@@ -532,8 +517,8 @@ class BeanDefinitionPropertyValueCodeGenerator {
@Override
@Nullable
public CodeBlock generateCode(Object value, ResolvableType type) {
if (value instanceof RuntimeBeanReference runtimeBeanReference
&& runtimeBeanReference.getBeanType() != null) {
if (value instanceof RuntimeBeanReference runtimeBeanReference &&
runtimeBeanReference.getBeanType() != null) {
return CodeBlock.of("new $T($T.class)", RuntimeBeanReference.class,
runtimeBeanReference.getBeanType());
}
@@ -543,7 +528,6 @@ class BeanDefinitionPropertyValueCodeGenerator {
}
return null;
}
}
}

View File

@@ -73,19 +73,20 @@ class DefaultBeanRegistrationCodeFragments extends BeanRegistrationCodeFragments
public Class<?> getTarget(RegisteredBean registeredBean,
Executable constructorOrFactoryMethod) {
Class<?> target = extractDeclaringClass(registeredBean.getBeanType(),
constructorOrFactoryMethod);
Class<?> target = extractDeclaringClass(registeredBean.getBeanType(), constructorOrFactoryMethod);
while (target.getName().startsWith("java.") && registeredBean.isInnerBean()) {
target = registeredBean.getParent().getBeanClass();
RegisteredBean parent = registeredBean.getParent();
Assert.state(parent != null, "No parent available for inner bean");
target = parent.getBeanClass();
}
return target;
}
private Class<?> extractDeclaringClass(ResolvableType beanType, Executable executable) {
Class<?> declaringClass = ClassUtils.getUserClass(executable.getDeclaringClass());
if (executable instanceof Constructor<?>
&& AccessVisibility.forMember(executable) == AccessVisibility.PUBLIC
&& FactoryBean.class.isAssignableFrom(declaringClass)) {
if (executable instanceof Constructor<?> &&
AccessVisibility.forMember(executable) == AccessVisibility.PUBLIC &&
FactoryBean.class.isAssignableFrom(declaringClass)) {
return extractTargetClassFromFactoryBean(declaringClass, beanType);
}
return executable.getDeclaringClass();
@@ -101,8 +102,7 @@ class DefaultBeanRegistrationCodeFragments extends BeanRegistrationCodeFragments
* @return the target class to use
*/
private Class<?> extractTargetClassFromFactoryBean(Class<?> factoryBeanType, ResolvableType beanType) {
ResolvableType target = ResolvableType.forType(factoryBeanType)
.as(FactoryBean.class).getGeneric(0);
ResolvableType target = ResolvableType.forType(factoryBeanType).as(FactoryBean.class).getGeneric(0);
if (target.getType().equals(Class.class)) {
return target.toClass();
}
@@ -155,8 +155,7 @@ class DefaultBeanRegistrationCodeFragments extends BeanRegistrationCodeFragments
.getBeanDefinitionMethodGenerator(innerRegisteredBean, name);
Assert.state(methodGenerator != null, "Unexpected filtering of inner-bean");
MethodReference generatedMethod = methodGenerator
.generateBeanDefinitionMethod(generationContext,
this.beanRegistrationsCode);
.generateBeanDefinitionMethod(generationContext, this.beanRegistrationsCode);
return generatedMethod.toInvokeCodeBlock(ArgumentCodeGenerator.none());
}
return null;
@@ -181,13 +180,11 @@ class DefaultBeanRegistrationCodeFragments extends BeanRegistrationCodeFragments
CodeBlock.Builder code = CodeBlock.builder();
if (postProcessors.isEmpty()) {
code.addStatement("$L.setInstanceSupplier($L)", BEAN_DEFINITION_VARIABLE,
instanceSupplierCode);
code.addStatement("$L.setInstanceSupplier($L)", BEAN_DEFINITION_VARIABLE, instanceSupplierCode);
return code.build();
}
code.addStatement("$T $L = $L",
ParameterizedTypeName.get(InstanceSupplier.class,
this.registeredBean.getBeanClass()),
ParameterizedTypeName.get(InstanceSupplier.class, this.registeredBean.getBeanClass()),
INSTANCE_SUPPLIER_VARIABLE, instanceSupplierCode);
for (MethodReference postProcessor : postProcessors) {
code.addStatement("$L = $L.andThen($L)", INSTANCE_SUPPLIER_VARIABLE,