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
This commit is contained in:
Chris Bono
2022-10-27 14:34:18 -05:00
parent e27ebac994
commit d50ab042b9
4 changed files with 9 additions and 2 deletions

View File

@@ -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'

View File

@@ -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 {

View File

@@ -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()

View File

@@ -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'