From dc29db93ad32e38f94e920316e6139bb578928b1 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Thu, 20 Mar 2025 17:38:21 +0000 Subject: [PATCH] Create spring-boot-pulsar module --- settings.gradle | 1 + .../build.gradle | 4 --- ...itional-spring-configuration-metadata.json | 18 ----------- ...ot.autoconfigure.AutoConfiguration.imports | 2 -- .../spring-boot-dependencies/build.gradle | 1 + .../spring-boot-docker-compose/build.gradle | 2 ++ ...nectionDetailsFactoryIntegrationTests.java | 4 +-- ...DockerComposeConnectionDetailsFactory.java | 4 +-- .../spring-boot-docs/build.gradle | 2 ++ .../spring-boot-pulsar/build.gradle | 31 +++++++++++++++++++ ...lsarAutoConfigurationIntegrationTests.java | 31 +++++++------------ .../DeadLetterPolicyMapper.java | 2 +- .../PropertiesPulsarConnectionDetails.java | 2 +- .../PulsarAutoConfiguration.java | 4 +-- .../autoconfigure}/PulsarConfiguration.java | 6 ++-- .../PulsarConnectionDetails.java | 4 +-- .../PulsarContainerFactoryCustomizer.java | 4 +-- .../PulsarContainerFactoryCustomizers.java | 2 +- .../autoconfigure}/PulsarProperties.java | 4 +-- .../PulsarPropertiesMapper.java | 2 +- .../PulsarReactiveAutoConfiguration.java | 4 +-- .../PulsarReactivePropertiesMapper.java | 2 +- .../pulsar/autoconfigure}/package-info.java | 2 +- ...itional-spring-configuration-metadata.json | 22 +++++++++++++ ...ot.autoconfigure.AutoConfiguration.imports | 2 ++ .../pulsar/autoconfigure}/Customizers.java | 2 +- .../DeadLetterPolicyMapperTests.java | 2 +- .../autoconfigure}/MockAuthentication.java | 2 +- ...ropertiesPulsarConnectionDetailsTests.java | 2 +- .../PulsarAutoConfigurationTests.java | 2 +- .../PulsarConfigurationTests.java | 5 +-- ...ulsarContainerFactoryCustomizersTests.java | 2 +- .../PulsarPropertiesMapperTests.java | 9 +++--- .../autoconfigure}/PulsarPropertiesTests.java | 10 +++--- .../PulsarReactiveAutoConfigurationTests.java | 2 +- .../PulsarReactivePropertiesMapperTests.java | 6 ++-- .../build.gradle | 1 + .../spring-boot-starter-pulsar/build.gradle | 2 +- .../spring-boot-testcontainers/build.gradle | 3 +- ...nectionDetailsFactoryIntegrationTests.java | 4 +-- ...lsarContainerConnectionDetailsFactory.java | 4 +-- 41 files changed, 125 insertions(+), 95 deletions(-) create mode 100644 spring-boot-project/spring-boot-pulsar/build.gradle rename spring-boot-project/{spring-boot-autoconfigure-all => spring-boot-pulsar}/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java (67%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/DeadLetterPolicyMapper.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PropertiesPulsarConnectionDetails.java (95%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarAutoConfiguration.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarConfiguration.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarConnectionDetails.java (93%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarContainerFactoryCustomizer.java (94%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarContainerFactoryCustomizers.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarProperties.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarPropertiesMapper.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarReactiveAutoConfiguration.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/PulsarReactivePropertiesMapper.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure}/package-info.java (92%) create mode 100644 spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/additional-spring-configuration-metadata.json create mode 100644 spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/Customizers.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/DeadLetterPolicyMapperTests.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/MockAuthentication.java (96%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PropertiesPulsarConnectionDetailsTests.java (96%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarAutoConfigurationTests.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarConfigurationTests.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarContainerFactoryCustomizersTests.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarPropertiesMapperTests.java (97%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarPropertiesTests.java (98%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarReactiveAutoConfigurationTests.java (99%) rename spring-boot-project/{spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar => spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure}/PulsarReactivePropertiesMapperTests.java (97%) diff --git a/settings.gradle b/settings.gradle index 15a5de9d34f..ef7df430c77 100644 --- a/settings.gradle +++ b/settings.gradle @@ -64,6 +64,7 @@ include "spring-boot-project:spring-boot-kafka" include "spring-boot-project:spring-boot-liquibase" include "spring-boot-project:spring-boot-mail" include "spring-boot-project:spring-boot-parent" +include "spring-boot-project:spring-boot-pulsar" include "spring-boot-project:spring-boot-reactor-netty" include "spring-boot-project:spring-boot-test" include "spring-boot-project:spring-boot-test-autoconfigure" diff --git a/spring-boot-project/spring-boot-autoconfigure-all/build.gradle b/spring-boot-project/spring-boot-autoconfigure-all/build.gradle index 4739563350a..19bfef0e4c1 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure-all/build.gradle @@ -39,7 +39,6 @@ dependencies { dockerTestImplementation("org.testcontainers:junit-jupiter") dockerTestImplementation("org.testcontainers:mongodb") dockerTestImplementation("org.testcontainers:neo4j") - dockerTestImplementation("org.testcontainers:pulsar") dockerTestImplementation("org.testcontainers:testcontainers") optional(project(":spring-boot-project:spring-boot-activemq")) @@ -191,8 +190,6 @@ dependencies { optional("org.springframework.data:spring-data-redis") optional("org.springframework.graphql:spring-graphql") optional("org.springframework.hateoas:spring-hateoas") - optional("org.springframework.pulsar:spring-pulsar") - optional("org.springframework.pulsar:spring-pulsar-reactive") optional("org.springframework.security:spring-security-acl") optional("org.springframework.security:spring-security-config") optional("org.springframework.security:spring-security-data") @@ -255,7 +252,6 @@ dependencies { testImplementation("org.postgresql:postgresql") testImplementation("org.postgresql:r2dbc-postgresql") testImplementation("org.springframework.graphql:spring-graphql-test") - testImplementation("org.springframework.pulsar:spring-pulsar-cache-provider-caffeine") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 77169a12a06..c7be2eebbcd 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -1021,24 +1021,6 @@ "name": "spring.neo4j.uri", "defaultValue": "bolt://localhost:7687" }, - { - "name": "spring.pulsar.defaults.topic.enabled", - "type": "java.lang.Boolean", - "description": "Whether to enable default tenant and namespace support for topics.", - "defaultValue": true - }, - { - "name": "spring.pulsar.function.enabled", - "type": "java.lang.Boolean", - "description": "Whether to enable function support.", - "defaultValue": true - }, - { - "name": "spring.pulsar.producer.cache.enabled", - "type": "java.lang.Boolean", - "description": "Whether to enable caching in the PulsarProducerFactory.", - "defaultValue": true - }, { "name": "spring.quartz.jdbc.comment-prefix", "defaultValue": [ diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index e7a353a6467..f572f496dd3 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-boot-project/spring-boot-autoconfigure-all/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -64,8 +64,6 @@ org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration org.springframework.boot.autoconfigure.neo4j.Neo4jAutoConfiguration org.springframework.boot.autoconfigure.netty.NettyAutoConfiguration org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration -org.springframework.boot.autoconfigure.pulsar.PulsarAutoConfiguration -org.springframework.boot.autoconfigure.pulsar.PulsarReactiveAutoConfiguration org.springframework.boot.autoconfigure.quartz.QuartzAutoConfiguration org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration org.springframework.boot.autoconfigure.r2dbc.R2dbcInitializationAutoConfiguration diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 1ab7a4a92f1..201b738eb3f 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -2041,6 +2041,7 @@ bom { "spring-boot-loader-tools", "spring-boot-mail", "spring-boot-properties-migrator", + "spring-boot-pulsar", "spring-boot-reactor-netty", "spring-boot-starter", "spring-boot-starter-activemq", diff --git a/spring-boot-project/spring-boot-docker-compose/build.gradle b/spring-boot-project/spring-boot-docker-compose/build.gradle index cb5e651b3fd..cd9637f6b1a 100644 --- a/spring-boot-project/spring-boot-docker-compose/build.gradle +++ b/spring-boot-project/spring-boot-docker-compose/build.gradle @@ -14,6 +14,7 @@ dependencies { dockerTestImplementation(project(":spring-boot-project:spring-boot-jdbc")) dockerTestImplementation(project(":spring-boot-project:spring-boot-flyway")) dockerTestImplementation(project(":spring-boot-project:spring-boot-liquibase")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-pulsar")) dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) dockerTestImplementation("com.hazelcast:hazelcast") dockerTestImplementation("com.redis:testcontainers-redis") @@ -42,6 +43,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-liquibase")) + optional(project(":spring-boot-project:spring-boot-pulsar")) optional("com.hazelcast:hazelcast") optional("io.r2dbc:r2dbc-spi") optional("org.mongodb:mongodb-driver-core") diff --git a/spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java index bbecc6c772e..cbb95e2cb75 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-docker-compose/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -16,8 +16,8 @@ package org.springframework.boot.docker.compose.service.connection.pulsar; -import org.springframework.boot.autoconfigure.pulsar.PulsarConnectionDetails; import org.springframework.boot.docker.compose.service.connection.test.DockerComposeTest; +import org.springframework.boot.pulsar.autoconfigure.PulsarConnectionDetails; import org.springframework.boot.testsupport.container.TestImage; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactory.java b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactory.java index 0568a981193..c23ec5d6274 100644 --- a/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-docker-compose/src/main/java/org/springframework/boot/docker/compose/service/connection/pulsar/PulsarDockerComposeConnectionDetailsFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -16,11 +16,11 @@ package org.springframework.boot.docker.compose.service.connection.pulsar; -import org.springframework.boot.autoconfigure.pulsar.PulsarConnectionDetails; import org.springframework.boot.docker.compose.core.ConnectionPorts; import org.springframework.boot.docker.compose.core.RunningService; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionDetailsFactory; import org.springframework.boot.docker.compose.service.connection.DockerComposeConnectionSource; +import org.springframework.boot.pulsar.autoconfigure.PulsarConnectionDetails; /** * {@link DockerComposeConnectionDetailsFactory} to create {@link PulsarConnectionDetails} diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index e9d70f8761d..ee218a75f40 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -71,6 +71,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-mail", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-pulsar", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-testcontainers", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-tomcat", configuration: "autoConfigurationMetadata")) @@ -98,6 +99,7 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-kafka", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-liquibase", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-mail", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-pulsar", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-test-autoconfigure", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-testcontainers", configuration: "configurationPropertiesMetadata")) diff --git a/spring-boot-project/spring-boot-pulsar/build.gradle b/spring-boot-project/spring-boot-pulsar/build.gradle new file mode 100644 index 00000000000..9cd070540c0 --- /dev/null +++ b/spring-boot-project/spring-boot-pulsar/build.gradle @@ -0,0 +1,31 @@ +plugins { + id "java-library" + id "org.springframework.boot.auto-configuration" + id "org.springframework.boot.configuration-properties" + id "org.springframework.boot.deployed" + id "org.springframework.boot.docker-test" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot Pulsar" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + api("org.springframework.pulsar:spring-pulsar") + + dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) + dockerTestImplementation("org.testcontainers:junit-jupiter") + dockerTestImplementation("org.testcontainers:pulsar") + + optional("org.springframework.pulsar:spring-pulsar-reactive") + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation("com.github.ben-manes.caffeine:caffeine") + testImplementation("org.springframework.pulsar:spring-pulsar-cache-provider-caffeine") + + testRuntimeOnly("ch.qos.logback:logback-classic") +} diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java b/spring-boot-project/spring-boot-pulsar/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java similarity index 67% rename from spring-boot-project/spring-boot-autoconfigure-all/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java rename to spring-boot-project/spring-boot-pulsar/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java index f44c9e7bed5..76018769c55 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/dockerTest/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationIntegrationTests.java @@ -26,23 +26,17 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.http.HttpMessageConvertersAutoConfiguration; -import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration; -import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; -import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.pulsar.autoconfigure.PulsarAutoConfiguration; +import org.springframework.boot.pulsar.autoconfigure.PulsarReactiveAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.test.web.client.TestRestTemplate; import org.springframework.boot.testsupport.container.TestImage; -import org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import org.springframework.pulsar.annotation.PulsarListener; import org.springframework.pulsar.core.PulsarTemplate; +import org.springframework.stereotype.Service; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; import static org.assertj.core.api.Assertions.assertThat; @@ -52,7 +46,7 @@ import static org.assertj.core.api.Assertions.assertThat; * @author Chris Bono * @author Phillip Webb */ -@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT) +@SpringBootTest @Testcontainers(disabledWithoutDocker = true) class PulsarAutoConfigurationIntegrationTests { @@ -76,16 +70,14 @@ class PulsarAutoConfigurationIntegrationTests { } @Test - void templateCanBeAccessedDuringWebRequest(@Autowired TestRestTemplate restTemplate) throws InterruptedException { - assertThat(restTemplate.getForObject("/hello", String.class)).startsWith("Hello World -> "); + void sendAndReceive(@Autowired TestService testService) throws InterruptedException { + assertThat(testService.sayHello()).startsWith("Hello World -> "); assertThat(listenLatch.await(5, TimeUnit.SECONDS)).isTrue(); } @Configuration(proxyBeanMethods = false) - @ImportAutoConfiguration({ DispatcherServletAutoConfiguration.class, TomcatServletWebServerAutoConfiguration.class, - WebMvcAutoConfiguration.class, HttpMessageConvertersAutoConfiguration.class, JacksonAutoConfiguration.class, - PulsarAutoConfiguration.class, PulsarReactiveAutoConfiguration.class }) - @Import(TestWebController.class) + @ImportAutoConfiguration({ PulsarAutoConfiguration.class, PulsarReactiveAutoConfiguration.class }) + @Import(TestService.class) static class TestConfiguration { @PulsarListener(subscriptionName = TOPIC + "-sub", topics = TOPIC) @@ -95,16 +87,15 @@ class PulsarAutoConfigurationIntegrationTests { } - @RestController - static class TestWebController { + @Service + static class TestService { private final PulsarTemplate pulsarTemplate; - TestWebController(PulsarTemplate pulsarTemplate) { + TestService(PulsarTemplate pulsarTemplate) { this.pulsarTemplate = pulsarTemplate; } - @GetMapping("/hello") String sayHello() { return "Hello World -> " + this.pulsarTemplate.send(TOPIC, "hello"); } diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapper.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapper.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapper.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapper.java index fc4a4f64b6b..f38c165555e 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapper.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import org.apache.pulsar.client.api.DeadLetterPolicy; import org.apache.pulsar.client.api.DeadLetterPolicy.DeadLetterPolicyBuilder; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetails.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetails.java similarity index 95% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetails.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetails.java index 51ed0fadc32..c0e14e051f4 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetails.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetails.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; /** * Adapts {@link PulsarProperties} to {@link PulsarConnectionDetails}. diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfiguration.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfiguration.java index f9a2144ae64..dcdab2241be 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfiguration.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; import java.util.List; @@ -69,7 +69,7 @@ import org.springframework.pulsar.transaction.PulsarTransactionManager; * @author Alexander Preuß * @author Phillip Webb * @author Jonas Geiregat - * @since 3.2.0 + * @since 4.0.0 */ @AutoConfiguration @ConditionalOnClass({ PulsarClient.class, PulsarTemplate.class }) diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfiguration.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfiguration.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfiguration.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfiguration.java index f7791c9241b..b19018dd56d 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfiguration.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; import java.util.List; @@ -30,9 +30,9 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Defaults.SchemaInfo; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Defaults.TypeMapping; import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Defaults.SchemaInfo; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Defaults.TypeMapping; import org.springframework.boot.util.LambdaSafe; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConnectionDetails.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConnectionDetails.java similarity index 93% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConnectionDetails.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConnectionDetails.java index 1d21f5802e4..f9050c95a11 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarConnectionDetails.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarConnectionDetails.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import org.springframework.boot.autoconfigure.service.connection.ConnectionDetails; @@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.service.connection.ConnectionDetai * Details required to establish a connection to a Pulsar service. * * @author Chris Bono - * @since 3.2.0 + * @since 4.0.0 */ public interface PulsarConnectionDetails extends ConnectionDetails { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizer.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizer.java similarity index 94% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizer.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizer.java index 17e3de79b45..89de6f709fa 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizer.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import org.springframework.pulsar.config.PulsarContainerFactory; @@ -25,7 +25,7 @@ import org.springframework.pulsar.config.PulsarContainerFactory; * * @param the type of the {@link PulsarContainerFactory} * @author Chris Bono - * @since 3.4.0 + * @since 4.0.0 */ @FunctionalInterface public interface PulsarContainerFactoryCustomizer> { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizers.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizers.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizers.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizers.java index 4109086a976..3e6f82e8e8b 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizers.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizers.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; import java.util.Collections; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarProperties.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarProperties.java index 5ab34e4acfa..57f40ebf09e 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarProperties.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.ArrayList; @@ -45,7 +45,7 @@ import org.springframework.util.Assert; * @author Phillip Webb * @author Swamy Mavuri * @author Vedran Pavic - * @since 3.2.0 + * @since 4.0.0 */ @ConfigurationProperties("spring.pulsar") public class PulsarProperties { diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapper.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapper.java index cfe34eb6f8b..665c8c3052e 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapper.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.ArrayList; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfiguration.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfiguration.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java index 07dfbc93ea3..501e60f4bfc 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfiguration.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.ArrayList; @@ -65,7 +65,7 @@ import org.springframework.pulsar.reactive.listener.ReactivePulsarContainerPrope * * @author Chris Bono * @author Christophe Bornet - * @since 3.2.0 + * @since 4.0.0 */ @AutoConfiguration(after = PulsarAutoConfiguration.class) @ConditionalOnClass({ PulsarClient.class, ReactivePulsarClient.class, ReactivePulsarTemplate.class }) diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapper.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapper.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapper.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapper.java index f936a6c8afc..0fe685f4f1c 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapper.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapper.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/package-info.java b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/package-info.java similarity index 92% rename from spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/package-info.java rename to spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/package-info.java index d6ce8ee1d21..5976ec14e89 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/main/java/org/springframework/boot/autoconfigure/pulsar/package-info.java +++ b/spring-boot-project/spring-boot-pulsar/src/main/java/org/springframework/boot/pulsar/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-configuration for Spring for Apache Pulsar. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; diff --git a/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/additional-spring-configuration-metadata.json new file mode 100644 index 00000000000..1f37b2f6abc --- /dev/null +++ b/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -0,0 +1,22 @@ +{ + "properties": [ + { + "name": "spring.pulsar.defaults.topic.enabled", + "type": "java.lang.Boolean", + "description": "Whether to enable default tenant and namespace support for topics.", + "defaultValue": true + }, + { + "name": "spring.pulsar.function.enabled", + "type": "java.lang.Boolean", + "description": "Whether to enable function support.", + "defaultValue": true + }, + { + "name": "spring.pulsar.producer.cache.enabled", + "type": "java.lang.Boolean", + "description": "Whether to enable caching in the PulsarProducerFactory.", + "defaultValue": true + } + ] +} diff --git a/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..97d91ee0c43 --- /dev/null +++ b/spring-boot-project/spring-boot-pulsar/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +org.springframework.boot.pulsar.autoconfigure.PulsarAutoConfiguration +org.springframework.boot.pulsar.autoconfigure.PulsarReactiveAutoConfiguration diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/Customizers.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/Customizers.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/Customizers.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/Customizers.java index 7f8de355617..13feea72519 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/Customizers.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/Customizers.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.List; import java.util.function.BiConsumer; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapperTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapperTests.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapperTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapperTests.java index afc18050f64..03e84ffa5b0 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/DeadLetterPolicyMapperTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/DeadLetterPolicyMapperTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import org.apache.pulsar.client.api.DeadLetterPolicy; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/MockAuthentication.java similarity index 96% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/MockAuthentication.java index 33216b086bb..4f5b5445c6b 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/MockAuthentication.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/MockAuthentication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.io.IOException; import java.util.HashMap; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetailsTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetailsTests.java similarity index 96% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetailsTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetailsTests.java index 3abff9be734..d8f24aeefbd 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PropertiesPulsarConnectionDetailsTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PropertiesPulsarConnectionDetailsTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfigurationTests.java index fdc10771c1f..ad10c773e20 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; import java.util.List; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfigurationTests.java index ab0eaeb4543..cc460c6d1e1 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarConfigurationTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.ArrayList; @@ -139,7 +139,8 @@ class PulsarConfigurationTests { "spring.pulsar.client.failover.switch-back-delay=30s", "spring.pulsar.client.failover.check-interval=5s", "spring.pulsar.client.failover.backup-clusters[1].service-url=backup-cluster-2", - "spring.pulsar.client.failover.backup-clusters[1].authentication.plugin-class-name=org.springframework.boot.autoconfigure.pulsar.MockAuthentication", + "spring.pulsar.client.failover.backup-clusters[1].authentication.plugin-class-name=" + + MockAuthentication.class.getName(), "spring.pulsar.client.failover.backup-clusters[1].authentication.param.token=1234") .run((context) -> { DefaultPulsarClientFactory clientFactory = context.getBean(DefaultPulsarClientFactory.class); diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizersTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizersTests.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizersTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizersTests.java index 1b1d9ff5d34..464b78740a3 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarContainerFactoryCustomizersTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarContainerFactoryCustomizersTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.util.ArrayList; import java.util.Collections; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapperTests.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapperTests.java index d285dda4c9d..ad0e7e22960 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesMapperTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesMapperTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.List; @@ -39,8 +39,8 @@ import org.apache.pulsar.client.impl.AutoClusterFailover; import org.apache.pulsar.common.schema.SchemaType; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Consumer; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Failover.BackupCluster; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Consumer; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Failover.BackupCluster; import org.springframework.pulsar.core.PulsarProducerFactory; import org.springframework.pulsar.core.PulsarTemplate; import org.springframework.pulsar.listener.PulsarContainerProperties; @@ -134,8 +134,7 @@ class PulsarPropertiesMapperTests { BackupCluster backupCluster1 = new BackupCluster(); backupCluster1.setServiceUrl("backup-cluster-1"); Map params = Map.of("param", "name"); - backupCluster1.getAuthentication() - .setPluginClassName("org.springframework.boot.autoconfigure.pulsar.MockAuthentication"); + backupCluster1.getAuthentication().setPluginClassName(MockAuthentication.class.getName()); backupCluster1.getAuthentication().setParam(params); BackupCluster backupCluster2 = new BackupCluster(); backupCluster2.setServiceUrl("backup-cluster-2"); diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesTests.java similarity index 98% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesTests.java index cfaff0ccd02..92b6287547a 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarPropertiesTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarPropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.HashMap; @@ -34,13 +34,13 @@ import org.assertj.core.extractor.Extractors; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Defaults.SchemaInfo; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Defaults.TypeMapping; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Failover; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Failover.BackupCluster; import org.springframework.boot.context.properties.bind.BindException; import org.springframework.boot.context.properties.bind.Binder; import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Defaults.SchemaInfo; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Defaults.TypeMapping; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Failover; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Failover.BackupCluster; import org.springframework.pulsar.core.PulsarTopicBuilder; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfigurationTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfigurationTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java index 933b9a27174..a76e3faa40d 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactiveAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactiveAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.ArrayList; diff --git a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapperTests.java b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapperTests.java similarity index 97% rename from spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapperTests.java rename to spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapperTests.java index 2524b985980..65200e32368 100644 --- a/spring-boot-project/spring-boot-autoconfigure-all/src/test/java/org/springframework/boot/autoconfigure/pulsar/PulsarReactivePropertiesMapperTests.java +++ b/spring-boot-project/spring-boot-pulsar/src/test/java/org/springframework/boot/pulsar/autoconfigure/PulsarReactivePropertiesMapperTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.autoconfigure.pulsar; +package org.springframework.boot.pulsar.autoconfigure; import java.time.Duration; import java.util.List; @@ -35,8 +35,8 @@ import org.apache.pulsar.reactive.client.api.ReactiveMessageReaderBuilder; import org.apache.pulsar.reactive.client.api.ReactiveMessageSenderBuilder; import org.junit.jupiter.api.Test; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Consumer; -import org.springframework.boot.autoconfigure.pulsar.PulsarProperties.Consumer.Subscription; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Consumer; +import org.springframework.boot.pulsar.autoconfigure.PulsarProperties.Consumer.Subscription; import org.springframework.pulsar.reactive.listener.ReactivePulsarContainerProperties; import static org.assertj.core.api.Assertions.assertThat; diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar-reactive/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar-reactive/build.gradle index c8c72ebe6c9..22dfe522d60 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar-reactive/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar-reactive/build.gradle @@ -6,6 +6,7 @@ description = "Starter for using Spring for Apache Pulsar Reactive" dependencies { api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter")) + api(project(":spring-boot-project:spring-boot-pulsar")) api(project(":spring-boot-project:spring-boot-tx")) api("org.springframework.pulsar:spring-pulsar-reactive") } diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar/build.gradle index 104f8cc34fb..668028a852f 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-pulsar/build.gradle @@ -6,8 +6,8 @@ description = "Starter for using Spring for Apache Pulsar" dependencies { api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter")) + api(project(":spring-boot-project:spring-boot-pulsar")) api(project(":spring-boot-project:spring-boot-tx")) - api("org.springframework.pulsar:spring-pulsar") } checkRuntimeClasspathForConflicts { diff --git a/spring-boot-project/spring-boot-testcontainers/build.gradle b/spring-boot-project/spring-boot-testcontainers/build.gradle index 425636d2bd1..8afc84214ab 100644 --- a/spring-boot-project/spring-boot-testcontainers/build.gradle +++ b/spring-boot-project/spring-boot-testcontainers/build.gradle @@ -17,6 +17,7 @@ dependencies { dockerTestImplementation(project(":spring-boot-project:spring-boot-jdbc")) dockerTestImplementation(project(":spring-boot-project:spring-boot-kafka")) dockerTestImplementation(project(":spring-boot-project:spring-boot-liquibase")) + dockerTestImplementation(project(":spring-boot-project:spring-boot-pulsar")) dockerTestImplementation(project(":spring-boot-project:spring-boot-test")) dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) dockerTestImplementation(project(":spring-boot-project:spring-boot-tx")) @@ -67,6 +68,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-jdbc")) optional(project(":spring-boot-project:spring-boot-kafka")) optional(project(":spring-boot-project:spring-boot-liquibase")) + optional(project(":spring-boot-project:spring-boot-pulsar")) optional(project(":spring-boot-project:spring-boot-tx")) optional("org.springframework:spring-test") optional("org.springframework.data:spring-data-mongodb") @@ -103,7 +105,6 @@ dependencies { testImplementation("org.springframework.amqp:spring-rabbit") testImplementation("org.springframework.data:spring-data-redis") testImplementation("org.springframework.kafka:spring-kafka") - testImplementation("org.springframework.pulsar:spring-pulsar") testImplementation("org.testcontainers:junit-jupiter") } diff --git a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java index 32525783010..f879f3b1f6e 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-testcontainers/src/dockerTest/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactoryIntegrationTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 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. @@ -28,7 +28,7 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.autoconfigure.pulsar.PulsarAutoConfiguration; +import org.springframework.boot.pulsar.autoconfigure.PulsarAutoConfiguration; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; import org.springframework.boot.testsupport.container.TestImage; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactory.java b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactory.java index 836c1a127d2..ae7fac2954e 100644 --- a/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-testcontainers/src/main/java/org/springframework/boot/testcontainers/service/connection/pulsar/PulsarContainerConnectionDetailsFactory.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2023 the original author or authors. + * Copyright 2012-2025 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. @@ -18,7 +18,7 @@ package org.springframework.boot.testcontainers.service.connection.pulsar; import org.testcontainers.containers.PulsarContainer; -import org.springframework.boot.autoconfigure.pulsar.PulsarConnectionDetails; +import org.springframework.boot.pulsar.autoconfigure.PulsarConnectionDetails; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionDetailsFactory; import org.springframework.boot.testcontainers.service.connection.ContainerConnectionSource; import org.springframework.boot.testcontainers.service.connection.ServiceConnection;