diff --git a/spring-pulsar-reactive/src/test/java/org/springframework/pulsar/reactive/listener/ReactivePulsarListenerTests.java b/spring-pulsar-reactive/src/test/java/org/springframework/pulsar/reactive/listener/ReactivePulsarListenerTests.java index ef9e2230..8b11ea08 100644 --- a/spring-pulsar-reactive/src/test/java/org/springframework/pulsar/reactive/listener/ReactivePulsarListenerTests.java +++ b/spring-pulsar-reactive/src/test/java/org/springframework/pulsar/reactive/listener/ReactivePulsarListenerTests.java @@ -57,7 +57,6 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.messaging.handler.annotation.Header; import org.springframework.pulsar.annotation.EnablePulsar; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.core.DefaultPulsarProducerFactory; import org.springframework.pulsar.core.DefaultSchemaResolver; @@ -112,13 +111,8 @@ public class ReactivePulsarListenerTests implements PulsarTestContainerSupport { } @Bean - public PulsarClientFactoryBean pulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - return new PulsarClientFactoryBean(pulsarClientConfiguration); - } - - @Bean - public PulsarClientConfiguration pulsarClientConfiguration() { - return new PulsarClientConfiguration(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); + public PulsarClientFactoryBean pulsarClientFactoryBean() { + return new PulsarClientFactoryBean(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); } @Bean diff --git a/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfiguration.java b/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfiguration.java index b2db6e0f..64cdd32f 100644 --- a/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfiguration.java +++ b/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfiguration.java @@ -30,7 +30,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.core.CachingPulsarProducerFactory; import org.springframework.pulsar.core.DefaultPulsarConsumerFactory; @@ -75,14 +74,8 @@ public class PulsarAutoConfiguration { @Bean @ConditionalOnMissingBean - public PulsarClientConfiguration pulsarClientConfiguration() { - return new PulsarClientConfiguration(this.properties.buildClientProperties()); - } - - @Bean - @ConditionalOnMissingBean - public PulsarClientFactoryBean pulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - return new PulsarClientFactoryBean(pulsarClientConfiguration); + public PulsarClientFactoryBean pulsarClientFactoryBean() { + return new PulsarClientFactoryBean(this.properties.buildClientProperties()); } @Bean diff --git a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfigurationTests.java b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfigurationTests.java index f8633043..6a7d9534 100644 --- a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfigurationTests.java +++ b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarAutoConfigurationTests.java @@ -44,7 +44,6 @@ import org.springframework.pulsar.annotation.EnablePulsar; import org.springframework.pulsar.annotation.PulsarBootstrapConfiguration; import org.springframework.pulsar.annotation.PulsarListenerAnnotationBeanPostProcessor; import org.springframework.pulsar.config.ConcurrentPulsarListenerContainerFactory; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.config.PulsarListenerContainerFactory; import org.springframework.pulsar.config.PulsarListenerEndpointRegistry; @@ -106,31 +105,19 @@ class PulsarAutoConfigurationTests { @Test void defaultBeansAreAutoConfigured() { - this.contextRunner - .run((context) -> assertThat(context).hasNotFailed().hasSingleBean(PulsarClientConfiguration.class) - .hasSingleBean(PulsarClientFactoryBean.class).hasSingleBean(PulsarProducerFactory.class) - .hasSingleBean(PulsarTemplate.class).hasSingleBean(PulsarConsumerFactory.class) - .hasSingleBean(ConcurrentPulsarListenerContainerFactory.class) - .hasSingleBean(PulsarListenerAnnotationBeanPostProcessor.class) - .hasSingleBean(PulsarListenerEndpointRegistry.class).hasSingleBean(PulsarAdministration.class) - .hasSingleBean(DefaultSchemaResolver.class).hasSingleBean(DefaultTopicResolver.class)); - } - - @Test - void customPulsarClientConfigurationIsRespected() { - PulsarClientConfiguration clientConfig = new PulsarClientConfiguration( - new PulsarProperties().buildClientProperties()); - this.contextRunner - .withBean("customPulsarClientConfiguration", PulsarClientConfiguration.class, () -> clientConfig) - .run((context) -> assertThat(context).hasNotFailed().getBean(PulsarClientConfiguration.class) - .isSameAs(clientConfig)); + this.contextRunner.run((context) -> assertThat(context).hasNotFailed() + .hasSingleBean(PulsarClientFactoryBean.class).hasSingleBean(PulsarProducerFactory.class) + .hasSingleBean(PulsarTemplate.class).hasSingleBean(PulsarConsumerFactory.class) + .hasSingleBean(ConcurrentPulsarListenerContainerFactory.class) + .hasSingleBean(PulsarListenerAnnotationBeanPostProcessor.class) + .hasSingleBean(PulsarListenerEndpointRegistry.class).hasSingleBean(PulsarAdministration.class) + .hasSingleBean(DefaultSchemaResolver.class).hasSingleBean(DefaultTopicResolver.class)); } @Test void customPulsarClientFactoryBeanIsRespected() { - PulsarClientConfiguration clientConfig = new PulsarClientConfiguration( + PulsarClientFactoryBean clientFactoryBean = new PulsarClientFactoryBean( new PulsarProperties().buildClientProperties()); - PulsarClientFactoryBean clientFactoryBean = new PulsarClientFactoryBean(clientConfig); this.contextRunner .withBean("customPulsarClientFactoryBean", PulsarClientFactoryBean.class, () -> clientFactoryBean) .run((context) -> assertThat(context) @@ -323,8 +310,8 @@ class PulsarAutoConfigurationTests { "spring.pulsar.client.auth-plugin-class-name=org.apache.pulsar.client.impl.auth.AuthenticationBasic", "spring.pulsar.client.authentication.userId=username", "spring.pulsar.client.authentication.password=topsecret") - .run((context -> assertThat(context).hasNotFailed().getBean(PulsarClientConfiguration.class) - .extracting("configs", InstanceOfAssertFactories.map(String.class, Object.class)) + .run((context -> assertThat(context).hasNotFailed().getBean(PulsarClientFactoryBean.class) + .extracting("config", InstanceOfAssertFactories.map(String.class, Object.class)) .doesNotContainKey("authParamMap").doesNotContainKey("userId").doesNotContainKey("password") .containsEntry("authParams", "{\"password\":\"topsecret\",\"userId\":\"username\"}"))); } diff --git a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java index 8382ef1a..d1416a6c 100644 --- a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java +++ b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java @@ -21,6 +21,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import java.time.Duration; +import java.util.Collections; import java.util.concurrent.TimeUnit; import java.util.function.Supplier; @@ -262,7 +263,7 @@ class PulsarReactiveAutoConfigurationTests { @SuppressWarnings("rawtypes") void beansAreInjectedInReactivePulsarClient() throws Exception { try (PulsarClient client = mock(PulsarClient.class)) { - PulsarClientFactoryBean factoryBean = new PulsarClientFactoryBean(null) { + PulsarClientFactoryBean factoryBean = new PulsarClientFactoryBean(Collections.emptyMap()) { @Override protected PulsarClient createInstance() { return client; @@ -318,7 +319,7 @@ class PulsarReactiveAutoConfigurationTests { ReactiveMessageSenderCache cache = AdaptedReactivePulsarClientFactory.createCache(); try (MockedStatic mockedClientFactory = Mockito .mockStatic(AdaptedReactivePulsarClientFactory.class)) { - mockedClientFactory.when(() -> AdaptedReactivePulsarClientFactory.createCache()).thenReturn(cache); + mockedClientFactory.when(AdaptedReactivePulsarClientFactory::createCache).thenReturn(cache); mockedClientFactory.when(() -> AdaptedReactivePulsarClientFactory.create(any(PulsarClient.class))) .thenReturn(mock(ReactivePulsarClient.class)); contextRunner.withClassLoader(new FilteredClassLoader(CaffeineProducerCacheProvider.class)) @@ -332,10 +333,9 @@ class PulsarReactiveAutoConfigurationTests { @Test void cacheCanBeDisabled() { - contextRunner.withPropertyValues("spring.pulsar.reactive.sender.cache.enabled=false").run((context -> { - assertThat(context).hasNotFailed().doesNotHaveBean(ProducerCacheProvider.class) - .doesNotHaveBean(ReactiveMessageSenderCache.class); - })); + contextRunner.withPropertyValues("spring.pulsar.reactive.sender.cache.enabled=false") + .run((context -> assertThat(context).hasNotFailed().doesNotHaveBean(ProducerCacheProvider.class) + .doesNotHaveBean(ReactiveMessageSenderCache.class))); } private AbstractObjectAssert assertCaffeineProducerCacheProvider( diff --git a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientConfiguration.java b/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientConfiguration.java deleted file mode 100644 index 22f70795..00000000 --- a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientConfiguration.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2022-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.pulsar.config; - -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -/** - * Configuration for the Pulsar client. - * - * @author Soby Chacko - * @author Chris Bono - */ -public class PulsarClientConfiguration { - - private final Map configs = new HashMap<>(); - - public PulsarClientConfiguration(Map configs) { - Objects.requireNonNull(configs, "Configuration map cannot be null"); - this.configs.putAll(configs); - } - - public Map getConfigs() { - return this.configs; - } - -} diff --git a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientFactoryBean.java b/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientFactoryBean.java index 6f3eb666..823b1cff 100644 --- a/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientFactoryBean.java +++ b/spring-pulsar/src/main/java/org/springframework/pulsar/config/PulsarClientFactoryBean.java @@ -16,6 +16,10 @@ package org.springframework.pulsar.config; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + import org.apache.pulsar.client.api.PulsarClient; import org.springframework.beans.factory.FactoryBean; @@ -33,10 +37,11 @@ public class PulsarClientFactoryBean extends AbstractFactoryBean { private final LogAccessor logger = new LogAccessor(this.getClass()); - private final PulsarClientConfiguration pulsarClientConfiguration; + private final Map config = new HashMap<>(); - public PulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - this.pulsarClientConfiguration = pulsarClientConfiguration; + public PulsarClientFactoryBean(Map config) { + Objects.requireNonNull(config, "Config map cannot be null"); + this.config.putAll(config); } @Override @@ -46,7 +51,7 @@ public class PulsarClientFactoryBean extends AbstractFactoryBean { @Override protected PulsarClient createInstance() throws Exception { - return PulsarClient.builder().loadConf(this.pulsarClientConfiguration.getConfigs()).build(); + return PulsarClient.builder().loadConf(this.config).build(); } @Override diff --git a/spring-pulsar/src/test/java/org/springframework/pulsar/listener/PulsarListenerTests.java b/spring-pulsar/src/test/java/org/springframework/pulsar/listener/PulsarListenerTests.java index 22c67204..a4491d88 100644 --- a/spring-pulsar/src/test/java/org/springframework/pulsar/listener/PulsarListenerTests.java +++ b/spring-pulsar/src/test/java/org/springframework/pulsar/listener/PulsarListenerTests.java @@ -60,7 +60,6 @@ import org.springframework.messaging.handler.annotation.Header; import org.springframework.pulsar.annotation.EnablePulsar; import org.springframework.pulsar.annotation.PulsarListener; import org.springframework.pulsar.config.ConcurrentPulsarListenerContainerFactory; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.config.PulsarListenerContainerFactory; import org.springframework.pulsar.config.PulsarListenerEndpointRegistry; @@ -108,13 +107,8 @@ public class PulsarListenerTests implements PulsarTestContainerSupport { } @Bean - public PulsarClientFactoryBean pulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - return new PulsarClientFactoryBean(pulsarClientConfiguration); - } - - @Bean - public PulsarClientConfiguration pulsarClientConfiguration() { - return new PulsarClientConfiguration(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); + public PulsarClientFactoryBean pulsarClientFactoryBean() { + return new PulsarClientFactoryBean(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); } @Bean diff --git a/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationIntegrationTests.java b/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationIntegrationTests.java index 6e52dd0a..ab5f7238 100644 --- a/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationIntegrationTests.java +++ b/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationIntegrationTests.java @@ -35,7 +35,6 @@ import org.springframework.context.annotation.Configuration; import org.springframework.pulsar.annotation.EnablePulsar; import org.springframework.pulsar.annotation.PulsarListener; import org.springframework.pulsar.config.ConcurrentPulsarListenerContainerFactory; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.config.PulsarListenerContainerFactory; import org.springframework.pulsar.core.DefaultPulsarConsumerFactory; @@ -136,13 +135,8 @@ public class ObservationIntegrationTests extends SampleTestRunner implements Pul } @Bean - public PulsarClientFactoryBean pulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - return new PulsarClientFactoryBean(pulsarClientConfiguration); - } - - @Bean - public PulsarClientConfiguration pulsarClientConfiguration() { - return new PulsarClientConfiguration(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); + public PulsarClientFactoryBean pulsarClientFactoryBean() { + return new PulsarClientFactoryBean(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); } @Bean diff --git a/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationTests.java b/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationTests.java index 614d283b..33dbfc28 100644 --- a/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationTests.java +++ b/spring-pulsar/src/test/java/org/springframework/pulsar/observation/ObservationTests.java @@ -40,7 +40,6 @@ import org.springframework.lang.Nullable; import org.springframework.pulsar.annotation.EnablePulsar; import org.springframework.pulsar.annotation.PulsarListener; import org.springframework.pulsar.config.ConcurrentPulsarListenerContainerFactory; -import org.springframework.pulsar.config.PulsarClientConfiguration; import org.springframework.pulsar.config.PulsarClientFactoryBean; import org.springframework.pulsar.config.PulsarListenerContainerFactory; import org.springframework.pulsar.core.DefaultPulsarConsumerFactory; @@ -176,13 +175,8 @@ public class ObservationTests implements PulsarTestContainerSupport { } @Bean - PulsarClientFactoryBean pulsarClientFactoryBean(PulsarClientConfiguration pulsarClientConfiguration) { - return new PulsarClientFactoryBean(pulsarClientConfiguration); - } - - @Bean - PulsarClientConfiguration pulsarClientConfiguration() { - return new PulsarClientConfiguration(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); + PulsarClientFactoryBean pulsarClientFactoryBean() { + return new PulsarClientFactoryBean(Map.of("serviceUrl", PulsarTestContainerSupport.getPulsarBrokerUrl())); } @Bean(name = "observationTestsTemplate")