From d78eca26ee271b42bdde3fd993341578aca8d7b0 Mon Sep 17 00:00:00 2001 From: Phillip Webb Date: Mon, 19 May 2025 19:20:33 -0700 Subject: [PATCH] Move Artemis Docker Compose support into spring-boot-artemis --- .../spring-boot-artemis/build.gradle | 2 + ...nectionDetailsFactoryIntegrationTests.java | 2 +- .../docker/compose}/artemis-compose.yaml | 0 ...DockerComposeConnectionDetailsFactory.java | 2 +- .../docker/compose}/ArtemisEnvironment.java | 2 +- .../artemis/docker/compose}/package-info.java | 4 +- .../main/resources/META-INF/spring.factories | 2 + .../compose}/ArtemisEnvironmentTests.java | 2 +- ...DockerComposeConnectionDetailsFactory.java | 79 ------------------- .../activemq/ActiveMQClassicEnvironment.java | 46 ----------- ...DockerComposeConnectionDetailsFactory.java | 78 ------------------ .../activemq/ActiveMQEnvironment.java | 45 ----------- .../main/resources/META-INF/spring.factories | 1 - 13 files changed, 10 insertions(+), 255 deletions(-) rename spring-boot-project/{spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/dockerTest/java/org/springframework/boot/artemis/docker/compose}/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java (95%) rename spring-boot-project/{spring-boot-docker-compose-all/src/dockerTest/resources/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/dockerTest/resources/org/springframework/boot/artemis/docker/compose}/artemis-compose.yaml (100%) rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose}/ArtemisDockerComposeConnectionDetailsFactory.java (97%) rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose}/ArtemisEnvironment.java (93%) rename spring-boot-project/{spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose}/package-info.java (81%) rename spring-boot-project/{spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq => spring-boot-artemis/src/test/java/org/springframework/boot/artemis/docker/compose}/ArtemisEnvironmentTests.java (95%) delete mode 100644 spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java delete mode 100644 spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicEnvironment.java delete mode 100644 spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java delete mode 100644 spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQEnvironment.java diff --git a/spring-boot-project/spring-boot-artemis/build.gradle b/spring-boot-project/spring-boot-artemis/build.gradle index e80b85a02d..48f9c65e74 100644 --- a/spring-boot-project/spring-boot-artemis/build.gradle +++ b/spring-boot-project/spring-boot-artemis/build.gradle @@ -14,6 +14,7 @@ dependencies { api("org.apache.activemq:artemis-jakarta-client") optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-docker-compose")) optional(project(":spring-boot-project:spring-boot-testcontainers")) optional(project(":spring-boot-project:spring-boot-tx")) optional("org.apache.activemq:artemis-jakarta-server") @@ -23,6 +24,7 @@ dependencies { optional("org.testcontainers:activemq") dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) + dockerTestImplementation(testFixtures(project(":spring-boot-project:spring-boot-docker-compose"))) dockerTestImplementation("ch.qos.logback:logback-classic") dockerTestImplementation("org.testcontainers:junit-jupiter") diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java b/spring-boot-project/spring-boot-artemis/src/dockerTest/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java similarity index 95% rename from spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java rename to spring-boot-project/spring-boot-artemis/src/dockerTest/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java index b9207f7d67..6046c8696b 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java +++ b/spring-boot-project/spring-boot-artemis/src/dockerTest/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactoryIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.activemq; +package org.springframework.boot.artemis.docker.compose; import org.springframework.boot.artemis.autoconfigure.ArtemisConnectionDetails; import org.springframework.boot.artemis.autoconfigure.ArtemisMode; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/resources/org/springframework/boot/docker/compose/service/connection/activemq/artemis-compose.yaml b/spring-boot-project/spring-boot-artemis/src/dockerTest/resources/org/springframework/boot/artemis/docker/compose/artemis-compose.yaml similarity index 100% rename from spring-boot-project/spring-boot-docker-compose-all/src/dockerTest/resources/org/springframework/boot/docker/compose/service/connection/activemq/artemis-compose.yaml rename to spring-boot-project/spring-boot-artemis/src/dockerTest/resources/org/springframework/boot/artemis/docker/compose/artemis-compose.yaml diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactory.java b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactory.java similarity index 97% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactory.java rename to spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactory.java index 4801e8b659..1f5cb9365e 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisDockerComposeConnectionDetailsFactory.java +++ b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisDockerComposeConnectionDetailsFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.activemq; +package org.springframework.boot.artemis.docker.compose; import org.springframework.boot.artemis.autoconfigure.ArtemisConnectionDetails; import org.springframework.boot.artemis.autoconfigure.ArtemisMode; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironment.java b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironment.java similarity index 93% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironment.java rename to spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironment.java index a44dc69aa6..3ac7cc9677 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironment.java +++ b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironment.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.activemq; +package org.springframework.boot.artemis.docker.compose; import java.util.Map; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/package-info.java b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/package-info.java similarity index 81% rename from spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/package-info.java rename to spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/package-info.java index 0abe3f456b..6b68b4a64c 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/package-info.java +++ b/spring-boot-project/spring-boot-artemis/src/main/java/org/springframework/boot/artemis/docker/compose/package-info.java @@ -15,6 +15,6 @@ */ /** - * Auto-configuration for Docker Compose ActiveMQ service connections. + * Support for Docker Compose Artemis service connections. */ -package org.springframework.boot.docker.compose.service.connection.activemq; +package org.springframework.boot.artemis.docker.compose; diff --git a/spring-boot-project/spring-boot-artemis/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-artemis/src/main/resources/META-INF/spring.factories index f2cfe0ac09..b664209f84 100644 --- a/spring-boot-project/spring-boot-artemis/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-artemis/src/main/resources/META-INF/spring.factories @@ -1,2 +1,4 @@ +# Connection Details Factories org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ +org.springframework.boot.artemis.docker.compose.ArtemisDockerComposeConnectionDetailsFactory,\ org.springframework.boot.artemis.testcontainers.ArtemisContainerConnectionDetailsFactory diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironmentTests.java b/spring-boot-project/spring-boot-artemis/src/test/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironmentTests.java similarity index 95% rename from spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironmentTests.java rename to spring-boot-project/spring-boot-artemis/src/test/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironmentTests.java index 76a980a249..711ddaff93 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/test/java/org/springframework/boot/docker/compose/service/connection/activemq/ArtemisEnvironmentTests.java +++ b/spring-boot-project/spring-boot-artemis/src/test/java/org/springframework/boot/artemis/docker/compose/ArtemisEnvironmentTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.docker.compose.service.connection.activemq; +package org.springframework.boot.artemis.docker.compose; import java.util.Collections; import java.util.Map; diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java b/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java deleted file mode 100644 index 9195ba0e30..0000000000 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicDockerComposeConnectionDetailsFactory.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * 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. - * 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.boot.activemq.docker.compose; - -import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails; -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; - -/** - * {@link DockerComposeConnectionDetailsFactory} to create - * {@link ActiveMQConnectionDetails} for an {@code activemq} service. - * - * @author Stephane Nicoll - * @author Eddú Meléndez - */ -class ActiveMQClassicDockerComposeConnectionDetailsFactory - extends DockerComposeConnectionDetailsFactory { - - private static final int ACTIVEMQ_PORT = 61616; - - protected ActiveMQClassicDockerComposeConnectionDetailsFactory() { - super("apache/activemq-classic"); - } - - @Override - protected ActiveMQConnectionDetails getDockerComposeConnectionDetails(DockerComposeConnectionSource source) { - return new ActiveMQDockerComposeConnectionDetails(source.getRunningService()); - } - - /** - * {@link ActiveMQConnectionDetails} backed by an {@code activemq} - * {@link RunningService}. - */ - static class ActiveMQDockerComposeConnectionDetails extends DockerComposeConnectionDetails - implements ActiveMQConnectionDetails { - - private final ActiveMQClassicEnvironment environment; - - private final String brokerUrl; - - protected ActiveMQDockerComposeConnectionDetails(RunningService service) { - super(service); - this.environment = new ActiveMQClassicEnvironment(service.env()); - this.brokerUrl = "tcp://" + service.host() + ":" + service.ports().get(ACTIVEMQ_PORT); - } - - @Override - public String getBrokerUrl() { - return this.brokerUrl; - } - - @Override - public String getUser() { - return this.environment.getUser(); - } - - @Override - public String getPassword() { - return this.environment.getPassword(); - } - - } - -} diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicEnvironment.java b/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicEnvironment.java deleted file mode 100644 index d1dd163836..0000000000 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQClassicEnvironment.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2012-2024 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.boot.activemq.docker.compose; - -import java.util.Map; - -/** - * ActiveMQ environment details. - * - * @author Stephane Nicoll - * @author Eddú Meléndez - */ -class ActiveMQClassicEnvironment { - - private final String user; - - private final String password; - - ActiveMQClassicEnvironment(Map env) { - this.user = env.get("ACTIVEMQ_CONNECTION_USER"); - this.password = env.get("ACTIVEMQ_CONNECTION_PASSWORD"); - } - - String getUser() { - return this.user; - } - - String getPassword() { - return this.password; - } - -} diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java b/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java deleted file mode 100644 index ce90e6f717..0000000000 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQDockerComposeConnectionDetailsFactory.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * 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. - * 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.boot.activemq.docker.compose; - -import org.springframework.boot.activemq.autoconfigure.ActiveMQConnectionDetails; -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; - -/** - * {@link DockerComposeConnectionDetailsFactory} to create - * {@link ActiveMQConnectionDetails} for an {@code activemq} service. - * - * @author Stephane Nicoll - */ -class ActiveMQDockerComposeConnectionDetailsFactory - extends DockerComposeConnectionDetailsFactory { - - private static final int ACTIVEMQ_PORT = 61616; - - protected ActiveMQDockerComposeConnectionDetailsFactory() { - super("symptoma/activemq"); - } - - @Override - protected ActiveMQConnectionDetails getDockerComposeConnectionDetails(DockerComposeConnectionSource source) { - return new ActiveMQDockerComposeConnectionDetails(source.getRunningService()); - } - - /** - * {@link ActiveMQConnectionDetails} backed by an {@code activemq} - * {@link RunningService}. - */ - static class ActiveMQDockerComposeConnectionDetails extends DockerComposeConnectionDetails - implements ActiveMQConnectionDetails { - - private final ActiveMQEnvironment environment; - - private final String brokerUrl; - - protected ActiveMQDockerComposeConnectionDetails(RunningService service) { - super(service); - this.environment = new ActiveMQEnvironment(service.env()); - this.brokerUrl = "tcp://" + service.host() + ":" + service.ports().get(ACTIVEMQ_PORT); - } - - @Override - public String getBrokerUrl() { - return this.brokerUrl; - } - - @Override - public String getUser() { - return this.environment.getUser(); - } - - @Override - public String getPassword() { - return this.environment.getPassword(); - } - - } - -} diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQEnvironment.java b/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQEnvironment.java deleted file mode 100644 index 03614612ed..0000000000 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/java/org/springframework/boot/docker/compose/service/connection/activemq/ActiveMQEnvironment.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2012-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.boot.activemq.docker.compose; - -import java.util.Map; - -/** - * ActiveMQ environment details. - * - * @author Stephane Nicoll - */ -class ActiveMQEnvironment { - - private final String user; - - private final String password; - - ActiveMQEnvironment(Map env) { - this.user = env.get("ACTIVEMQ_USERNAME"); - this.password = env.get("ACTIVEMQ_PASSWORD"); - } - - String getUser() { - return this.user; - } - - String getPassword() { - return this.password; - } - -} diff --git a/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories b/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories index eb7ff88bb3..26f8b51cda 100644 --- a/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories +++ b/spring-boot-project/spring-boot-docker-compose-all/src/main/resources/META-INF/spring.factories @@ -1,6 +1,5 @@ # Connection Details Factories org.springframework.boot.autoconfigure.service.connection.ConnectionDetailsFactory=\ -org.springframework.boot.docker.compose.service.connection.activemq.ArtemisDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.cassandra.CassandraDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.clickhouse.ClickHouseJdbcDockerComposeConnectionDetailsFactory,\ org.springframework.boot.docker.compose.service.connection.clickhouse.ClickHouseR2dbcDockerComposeConnectionDetailsFactory,\