From c541bde513443862e24e372c83f33e8c511d8903 Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Fri, 4 Mar 2022 10:03:53 +0100 Subject: [PATCH] Simplify the generation of inner bean definitions See gh-28047 --- .../factory/generator/BeanParameterGenerator.java | 11 +++++------ .../generator/BeanParameterGeneratorTests.java | 3 ++- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java b/spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java index 9e7e6dc71bb..e78c6589eb5 100644 --- a/spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java +++ b/spring-beans/src/main/java/org/springframework/beans/factory/generator/BeanParameterGenerator.java @@ -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 innerBeanDefinitionGenerator; + private final Function innerBeanDefinitionGenerator; /** @@ -60,7 +59,7 @@ public final class BeanParameterGenerator { * definition. * @param innerBeanDefinitionGenerator the inner bean definition generator */ - public BeanParameterGenerator(BiConsumer innerBeanDefinitionGenerator) { + public BeanParameterGenerator(Function 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()); diff --git a/spring-beans/src/test/java/org/springframework/beans/factory/generator/BeanParameterGeneratorTests.java b/spring-beans/src/test/java/org/springframework/beans/factory/generator/BeanParameterGeneratorTests.java index 34dfea0e14a..c0fbb384055 100644 --- a/spring-beans/src/test/java/org/springframework/beans/factory/generator/BeanParameterGeneratorTests.java +++ b/spring-beans/src/test/java/org/springframework/beans/factory/generator/BeanParameterGeneratorTests.java @@ -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"); }