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,

View File

@@ -80,6 +80,7 @@ public class DefaultGenerationContext implements GenerationContext {
*/
DefaultGenerationContext(GeneratedClasses generatedClasses,
GeneratedFiles generatedFiles, RuntimeHints runtimeHints) {
Assert.notNull(generatedClasses, "'generatedClasses' must not be null");
Assert.notNull(generatedFiles, "'generatedFiles' must not be null");
Assert.notNull(runtimeHints, "'runtimeHints' must not be null");
@@ -90,8 +91,7 @@ public class DefaultGenerationContext implements GenerationContext {
}
private DefaultGenerationContext(DefaultGenerationContext existing, String name) {
int sequence = existing.sequenceGenerator
.computeIfAbsent(name, key -> new AtomicInteger()).getAndIncrement();
int sequence = existing.sequenceGenerator.computeIfAbsent(name, key -> new AtomicInteger()).getAndIncrement();
String featureName = (sequence > 0 ? name + sequence : name);
this.sequenceGenerator = existing.sequenceGenerator;
this.generatedClasses = existing.generatedClasses.withFeatureNamePrefix(featureName);
@@ -99,6 +99,7 @@ public class DefaultGenerationContext implements GenerationContext {
this.runtimeHints = existing.runtimeHints;
}
@Override
public GeneratedClasses getGeneratedClasses() {
return this.generatedClasses;

View File

@@ -133,6 +133,7 @@ public class ReflectionHints {
*/
public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader,
String typeName, Consumer<TypeHint.Builder> typeHint) {
if (ClassUtils.isPresent(typeName, classLoader)) {
registerType(TypeReference.of(typeName), typeHint);
}
@@ -149,6 +150,7 @@ public class ReflectionHints {
*/
public ReflectionHints registerTypeIfPresent(@Nullable ClassLoader classLoader,
String typeName, MemberCategory... memberCategories) {
return registerTypeIfPresent(classLoader, typeName, TypeHint.builtWith(memberCategories));
}
@@ -208,7 +210,6 @@ public class ReflectionHints {
* @deprecated in favor of {@link #registerConstructor(Constructor, ExecutableMode)}
*/
@Deprecated
@SuppressWarnings("deprecation")
public ReflectionHints registerConstructor(Constructor<?> constructor, Consumer<ExecutableHint.Builder> constructorHint) {
return registerType(TypeReference.of(constructor.getDeclaringClass()),
typeHint -> typeHint.withConstructor(mapParameters(constructor), constructorHint));
@@ -246,15 +247,14 @@ public class ReflectionHints {
* @deprecated in favor of {@link #registerMethod(Method, ExecutableMode)}
*/
@Deprecated
@SuppressWarnings("deprecation")
public ReflectionHints registerMethod(Method method, Consumer<ExecutableHint.Builder> methodHint) {
return registerType(TypeReference.of(method.getDeclaringClass()),
typeHint -> typeHint.withMethod(method.getName(), mapParameters(method), methodHint));
}
private List<TypeReference> mapParameters(Executable executable) {
return Arrays.stream(executable.getParameterTypes()).map(TypeReference::of)
.collect(Collectors.toList());
return Arrays.stream(executable.getParameterTypes()).map(TypeReference::of).collect(Collectors.toList());
}
}