From c02dd14c66b4004d0e1db65855c364ac3e2f5a6b Mon Sep 17 00:00:00 2001 From: JonasG Date: Thu, 25 Jan 2024 15:56:08 +0100 Subject: [PATCH 1/2] Use generic wildcard for Pulsar beans See gh-39308 --- .../pulsar/PulsarAutoConfiguration.java | 5 +++-- .../pulsar/PulsarAutoConfigurationTests.java | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java index c60565b5918..fbe4f3fcc5a 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java @@ -65,6 +65,7 @@ import org.springframework.pulsar.reader.PulsarReaderContainerProperties; * @author Soby Chacko * @author Alexander Preuß * @author Phillip Webb + * @author Jonas Geiregat * @since 3.2.0 */ @AutoConfiguration @@ -131,7 +132,7 @@ public class PulsarAutoConfiguration { @Bean @ConditionalOnMissingBean(PulsarConsumerFactory.class) - DefaultPulsarConsumerFactory pulsarConsumerFactory(PulsarClient pulsarClient, + DefaultPulsarConsumerFactory pulsarConsumerFactory(PulsarClient pulsarClient, ObjectProvider> customizersProvider) { List> customizers = new ArrayList<>(); customizers.add(this.propertiesMapper::customizeConsumerBuilder); @@ -150,7 +151,7 @@ public class PulsarAutoConfiguration { @Bean @ConditionalOnMissingBean(name = "pulsarListenerContainerFactory") - ConcurrentPulsarListenerContainerFactory pulsarListenerContainerFactory( + ConcurrentPulsarListenerContainerFactory pulsarListenerContainerFactory( PulsarConsumerFactory pulsarConsumerFactory, SchemaResolver schemaResolver, TopicResolver topicResolver, Environment environment) { PulsarContainerProperties containerProperties = new PulsarContainerProperties(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java index 7e56f4129ea..b4691ecbfbc 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java @@ -34,6 +34,7 @@ import org.junit.jupiter.api.condition.JRE; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.TestConfiguration; @@ -373,6 +374,14 @@ class PulsarAutoConfigurationTests { }); } + @Test + void injectsExpectedBeanWithExplicitGenericType() { + this.contextRunner.withBean(ExplicitGenericTypeConfig.class) + .run((context) -> assertThat(context).getBean(ExplicitGenericTypeConfig.class) + .hasFieldOrPropertyWithValue("consumerFactory", context.getBean(PulsarConsumerFactory.class)) + .hasFieldOrPropertyWithValue("containerFactory", context.getBean(ConcurrentPulsarListenerContainerFactory.class))); + } + @TestConfiguration(proxyBeanMethods = false) static class ConsumerBuilderCustomizersConfig { @@ -390,6 +399,16 @@ class PulsarAutoConfigurationTests { } + static class ExplicitGenericTypeConfig { + @Autowired + PulsarConsumerFactory consumerFactory; + + @Autowired + ConcurrentPulsarListenerContainerFactory containerFactory; + + static class TestType {} + } + } @Nested From cee249197fbf8eaebbbe91f9f25dcba33ee8e920 Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 31 Jan 2024 09:54:18 +0100 Subject: [PATCH 2/2] Polish "Use generic wildcard for Pulsar beans" See gh-39308 --- .../pulsar/PulsarAutoConfigurationTests.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java index b4691ecbfbc..bade49b3b28 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java @@ -377,9 +377,10 @@ class PulsarAutoConfigurationTests { @Test void injectsExpectedBeanWithExplicitGenericType() { this.contextRunner.withBean(ExplicitGenericTypeConfig.class) - .run((context) -> assertThat(context).getBean(ExplicitGenericTypeConfig.class) - .hasFieldOrPropertyWithValue("consumerFactory", context.getBean(PulsarConsumerFactory.class)) - .hasFieldOrPropertyWithValue("containerFactory", context.getBean(ConcurrentPulsarListenerContainerFactory.class))); + .run((context) -> assertThat(context).getBean(ExplicitGenericTypeConfig.class) + .hasFieldOrPropertyWithValue("consumerFactory", context.getBean(PulsarConsumerFactory.class)) + .hasFieldOrPropertyWithValue("containerFactory", + context.getBean(ConcurrentPulsarListenerContainerFactory.class))); } @TestConfiguration(proxyBeanMethods = false) @@ -400,13 +401,17 @@ class PulsarAutoConfigurationTests { } static class ExplicitGenericTypeConfig { + @Autowired PulsarConsumerFactory consumerFactory; @Autowired ConcurrentPulsarListenerContainerFactory containerFactory; - static class TestType {} + static class TestType { + + } + } }