Simplify the generation of inner bean definitions
See gh-28047
This commit is contained in:
parent
97986b368a
commit
c541bde513
|
|
@ -24,7 +24,6 @@ import java.util.Collections;
|
|||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
|
|
@ -52,7 +51,7 @@ public final class BeanParameterGenerator {
|
|||
|
||||
private final ResolvableTypeGenerator typeGenerator = new ResolvableTypeGenerator();
|
||||
|
||||
private final BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator;
|
||||
private final Function<BeanDefinition, CodeBlock> innerBeanDefinitionGenerator;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -60,7 +59,7 @@ public final class BeanParameterGenerator {
|
|||
* definition.
|
||||
* @param innerBeanDefinitionGenerator the inner bean definition generator
|
||||
*/
|
||||
public BeanParameterGenerator(BiConsumer<BeanDefinition, Builder> innerBeanDefinitionGenerator) {
|
||||
public BeanParameterGenerator(Function<BeanDefinition, CodeBlock> innerBeanDefinitionGenerator) {
|
||||
this.innerBeanDefinitionGenerator = innerBeanDefinitionGenerator;
|
||||
}
|
||||
|
||||
|
|
@ -68,7 +67,7 @@ public final class BeanParameterGenerator {
|
|||
* Create an instance with no support for inner bean definitions.
|
||||
*/
|
||||
public BeanParameterGenerator() {
|
||||
this((beanDefinition, builder) -> {
|
||||
this(beanDefinition -> {
|
||||
throw new IllegalStateException("Inner bean definition is not supported by this instance");
|
||||
});
|
||||
}
|
||||
|
|
@ -174,8 +173,8 @@ public final class BeanParameterGenerator {
|
|||
else if (value instanceof ResolvableType) {
|
||||
code.add(this.typeGenerator.generateTypeFor((ResolvableType) value));
|
||||
}
|
||||
else if (value instanceof BeanDefinition) {
|
||||
this.innerBeanDefinitionGenerator.accept((BeanDefinition) value, code);
|
||||
else if (value instanceof BeanDefinition bd) {
|
||||
code.add(this.innerBeanDefinitionGenerator.apply(bd));
|
||||
}
|
||||
else if (value instanceof BeanReference) {
|
||||
code.add("new $T($S)", RuntimeBeanReference.class, ((BeanReference) value).getBeanName());
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ import org.springframework.beans.factory.support.ManagedSet;
|
|||
import org.springframework.beans.factory.support.RootBeanDefinition;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.io.ResourceLoader;
|
||||
import org.springframework.javapoet.CodeBlock;
|
||||
import org.springframework.javapoet.support.CodeSnippet;
|
||||
import org.springframework.lang.Nullable;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
|
|
@ -221,7 +222,7 @@ class BeanParameterGeneratorTests {
|
|||
@Test
|
||||
void generateBeanDefinitionCallsConsumer() {
|
||||
BeanParameterGenerator customGenerator = new BeanParameterGenerator(
|
||||
((beanDefinition, builder) -> builder.add("test")));
|
||||
beanDefinition -> CodeBlock.of("test"));
|
||||
assertThat(CodeSnippet.process(customGenerator.generateParameterValue(
|
||||
new RootBeanDefinition()))).isEqualTo("test");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue