Use generic wildcard for Pulsar beans

See gh-39308
This commit is contained in:
JonasG
2024-01-25 15:56:08 +01:00
committed by Moritz Halbritter
parent 231aa014fa
commit c02dd14c66
2 changed files with 22 additions and 2 deletions

View File

@@ -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<Object> pulsarConsumerFactory(PulsarClient pulsarClient,
DefaultPulsarConsumerFactory<?> pulsarConsumerFactory(PulsarClient pulsarClient,
ObjectProvider<ConsumerBuilderCustomizer<?>> customizersProvider) {
List<ConsumerBuilderCustomizer<?>> customizers = new ArrayList<>();
customizers.add(this.propertiesMapper::customizeConsumerBuilder);
@@ -150,7 +151,7 @@ public class PulsarAutoConfiguration {
@Bean
@ConditionalOnMissingBean(name = "pulsarListenerContainerFactory")
ConcurrentPulsarListenerContainerFactory<Object> pulsarListenerContainerFactory(
ConcurrentPulsarListenerContainerFactory<?> pulsarListenerContainerFactory(
PulsarConsumerFactory<Object> pulsarConsumerFactory, SchemaResolver schemaResolver,
TopicResolver topicResolver, Environment environment) {
PulsarContainerProperties containerProperties = new PulsarContainerProperties();

View File

@@ -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<TestType> consumerFactory;
@Autowired
ConcurrentPulsarListenerContainerFactory<TestType> containerFactory;
static class TestType {}
}
}
@Nested