From d50ab042b9cddfce1ab1fd8a25719a5cbe6cfefa Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Thu, 27 Oct 2022 14:34:18 -0500 Subject: [PATCH] Polish "Add autoconfig for reactive sender template" - Make reactive client optional - Guard reactive auto-config also on ReactivePulsarSenderTemplate - Add test for the above additional guard --- spring-pulsar-spring-boot-autoconfigure/build.gradle | 1 + .../autoconfigure/PulsarReactiveAutoConfiguration.java | 2 +- .../autoconfigure/PulsarReactiveAutoConfigurationTests.java | 6 ++++++ spring-pulsar/build.gradle | 2 +- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/spring-pulsar-spring-boot-autoconfigure/build.gradle b/spring-pulsar-spring-boot-autoconfigure/build.gradle index 00683e1e..9aba3321 100644 --- a/spring-pulsar-spring-boot-autoconfigure/build.gradle +++ b/spring-pulsar-spring-boot-autoconfigure/build.gradle @@ -10,6 +10,7 @@ dependencies { annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor' optional project (':spring-pulsar') + optional 'org.apache.pulsar:pulsar-client-reactive-adapter' optional 'org.apache.pulsar:pulsar-client-reactive-producer-cache-caffeine' implementation 'org.springframework.boot:spring-boot-starter' implementation 'com.google.code.findbugs:jsr305' diff --git a/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java b/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java index f9728e42..5ba91b1e 100644 --- a/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java +++ b/spring-pulsar-spring-boot-autoconfigure/src/main/java/org/springframework/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java @@ -44,7 +44,7 @@ import com.github.benmanes.caffeine.cache.Caffeine; * @author Christophe Bornet */ @AutoConfiguration(after = PulsarAutoConfiguration.class) -@ConditionalOnClass(ReactivePulsarClient.class) +@ConditionalOnClass({ ReactivePulsarSenderTemplate.class, ReactivePulsarClient.class }) @EnableConfigurationProperties(PulsarReactiveProperties.class) public class PulsarReactiveAutoConfiguration { 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 5593018a..8b6e2999 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 @@ -65,6 +65,12 @@ class PulsarReactiveAutoConfigurationTests { (context) -> assertThat(context).hasNotFailed().doesNotHaveBean(PulsarReactiveAutoConfiguration.class)); } + @Test + void autoConfigurationSkippedWhenReactivePulsarSenderTemplateNotOnClasspath() { + this.contextRunner.withClassLoader(new FilteredClassLoader(ReactivePulsarSenderTemplate.class)).run( + (context) -> assertThat(context).hasNotFailed().doesNotHaveBean(PulsarReactiveAutoConfiguration.class)); + } + @Test void defaultBeansAreAutoConfigured() { this.contextRunner.run((context) -> assertThat(context).hasNotFailed() diff --git a/spring-pulsar/build.gradle b/spring-pulsar/build.gradle index dbea388a..096c7137 100644 --- a/spring-pulsar/build.gradle +++ b/spring-pulsar/build.gradle @@ -9,7 +9,6 @@ dependencies { api 'com.google.protobuf:protobuf-java' api 'io.micrometer:micrometer-observation' api 'org.apache.pulsar:pulsar-client-all' - api 'org.apache.pulsar:pulsar-client-reactive-adapter' api 'org.springframework:spring-context' api 'org.springframework:spring-messaging' api 'org.springframework:spring-tx' @@ -19,6 +18,7 @@ dependencies { implementation 'com.fasterxml.jackson.core:jackson-core' implementation 'com.fasterxml.jackson.core:jackson-databind' implementation 'com.google.code.findbugs:jsr305' + optional 'org.apache.pulsar:pulsar-client-reactive-adapter' optional 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8' optional 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310' optional 'com.fasterxml.jackson.datatype:jackson-datatype-joda'