Skip to content

Commit 7aafe57

Browse files
jxblumchristophstrobl
authored andcommitted
Simplify logic in SpringDataBeanFactoryInitializationAotProcessor.
Original Pull Request: #2624
1 parent 2d16692 commit 7aafe57

File tree

1 file changed

+34
-19
lines changed

1 file changed

+34
-19
lines changed

src/main/java/org/springframework/data/aot/SpringDataBeanFactoryInitializationAotProcessor.java

+34-19
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.springframework.data.aot;
1717

1818
import java.util.Collections;
19+
import java.util.function.Function;
1920
import java.util.function.Supplier;
2021

2122
import org.apache.commons.logging.Log;
@@ -49,6 +50,15 @@ public class SpringDataBeanFactoryInitializationAotProcessor implements BeanFact
4950

5051
private static final Log logger = LogFactory.getLog(BeanFactoryInitializationAotProcessor.class);
5152

53+
private static final Function<Object, Object> arrayToListFunction = target ->
54+
ObjectUtils.isArray(target) ? CollectionUtils.arrayToList(target) : target;
55+
56+
private static final Function<Object, Object> asSingletonSetFunction = target ->
57+
!(target instanceof Iterable<?>) ? Collections.singleton(target) : target;
58+
59+
private static final Function<Object, Object> constructorArgumentFunction =
60+
arrayToListFunction.andThen(asSingletonSetFunction);
61+
5262
@Nullable
5363
@Override
5464
public BeanFactoryInitializationAotContribution processAheadOfTime(ConfigurableListableBeanFactory beanFactory) {
@@ -64,33 +74,38 @@ private void processManagedTypes(ConfigurableListableBeanFactory beanFactory) {
6474

6575
BeanDefinition beanDefinition = beanFactory.getBeanDefinition(beanName);
6676

67-
if (beanDefinition.getConstructorArgumentValues().isEmpty()) {
68-
return;
69-
}
77+
if (hasConstructorArguments(beanDefinition)) {
7078

71-
ValueHolder argumentValue = beanDefinition.getConstructorArgumentValues().getArgumentValue(0, null, null, null);
79+
ValueHolder argumentValue = beanDefinition.getConstructorArgumentValues()
80+
.getArgumentValue(0, null, null, null);
7281

73-
if (argumentValue.getValue()instanceof Supplier supplier) {
82+
if (argumentValue.getValue() instanceof Supplier supplier) {
7483

75-
if (logger.isDebugEnabled()) {
76-
logger.info(String.format("Replacing ManagedType bean definition %s.", beanName));
77-
}
84+
if (logger.isDebugEnabled()) {
85+
logger.info(String.format("Replacing ManagedType bean definition %s.", beanName));
86+
}
7887

79-
Object value = supplier.get();
80-
if (ObjectUtils.isArray(value)) {
81-
value = CollectionUtils.arrayToList(value);
82-
}
83-
if (!(value instanceof Iterable<?>)) {
84-
value = Collections.singleton(value);
85-
}
88+
Object value = constructorArgumentFunction.apply(supplier.get());
8689

87-
BeanDefinition beanDefinitionReplacement = BeanDefinitionBuilder.rootBeanDefinition(ManagedTypes.class)
88-
.setFactoryMethod("fromIterable").addConstructorArgValue(value).getBeanDefinition();
90+
BeanDefinition beanDefinitionReplacement = newManagedTypeBeanDefinition(value);
8991

90-
registry.removeBeanDefinition(beanName);
91-
registry.registerBeanDefinition(beanName, beanDefinitionReplacement);
92+
registry.removeBeanDefinition(beanName);
93+
registry.registerBeanDefinition(beanName, beanDefinitionReplacement);
94+
}
9295
}
9396
}
9497
}
9598
}
99+
100+
private boolean hasConstructorArguments(BeanDefinition beanDefinition) {
101+
return !beanDefinition.getConstructorArgumentValues().isEmpty();
102+
}
103+
104+
private BeanDefinition newManagedTypeBeanDefinition(Object constructorArgumentValue) {
105+
106+
return BeanDefinitionBuilder.rootBeanDefinition(ManagedTypes.class)
107+
.setFactoryMethod("fromIterable")
108+
.addConstructorArgValue(constructorArgumentValue)
109+
.getBeanDefinition();
110+
}
96111
}

0 commit comments

Comments
 (0)