11 changed files with 277 additions and 16 deletions
@ -0,0 +1,79 @@
@@ -0,0 +1,79 @@
|
||||
/* |
||||
* 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.docker.compose.service.connection.activemq; |
||||
|
||||
import org.springframework.boot.autoconfigure.amqp.RabbitConnectionDetails; |
||||
import org.springframework.boot.autoconfigure.jms.activemq.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<ActiveMQConnectionDetails> { |
||||
|
||||
private static final int ACTIVEMQ_PORT = 61616; |
||||
|
||||
protected ActiveMQDockerComposeConnectionDetailsFactory() { |
||||
super("symptoma/activemq"); |
||||
} |
||||
|
||||
@Override |
||||
protected ActiveMQConnectionDetails getDockerComposeConnectionDetails(DockerComposeConnectionSource source) { |
||||
return new ActiveMQDockerComposeConnectionDetails(source.getRunningService()); |
||||
} |
||||
|
||||
/** |
||||
* {@link RabbitConnectionDetails} backed by a {@code rabbitmq} |
||||
* {@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(); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
/* |
||||
* 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.docker.compose.service.connection.activemq; |
||||
|
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* ActiveMQ environment details. |
||||
* |
||||
* @author Stephane Nicoll |
||||
*/ |
||||
class ActiveMQEnvironment { |
||||
|
||||
private final String user; |
||||
|
||||
private final String password; |
||||
|
||||
ActiveMQEnvironment(Map<String, String> env) { |
||||
this.user = env.get("ACTIVEMQ_USERNAME"); |
||||
this.password = env.get("ACTIVEMQ_PASSWORD"); |
||||
} |
||||
|
||||
String getUser() { |
||||
return this.user; |
||||
} |
||||
|
||||
String getPassword() { |
||||
return this.password; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* 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. |
||||
*/ |
||||
|
||||
/** |
||||
* Auto-configuration for docker compose ActiveMQ service connections. |
||||
*/ |
||||
package org.springframework.boot.docker.compose.service.connection.activemq; |
||||
@ -0,0 +1,45 @@
@@ -0,0 +1,45 @@
|
||||
/* |
||||
* 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.docker.compose.service.connection.activemq; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.boot.autoconfigure.jms.activemq.ActiveMQConnectionDetails; |
||||
import org.springframework.boot.docker.compose.service.connection.test.AbstractDockerComposeIntegrationTests; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Integration tests for {@link ActiveMQDockerComposeConnectionDetailsFactory}. |
||||
* |
||||
* @author Stephane Nicoll |
||||
*/ |
||||
class ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests extends AbstractDockerComposeIntegrationTests { |
||||
|
||||
ActiveMQDockerComposeConnectionDetailsFactoryIntegrationTests() { |
||||
super("activemq-compose.yaml"); |
||||
} |
||||
|
||||
@Test |
||||
void runCreatesConnectionDetails() { |
||||
ActiveMQConnectionDetails connectionDetails = run(ActiveMQConnectionDetails.class); |
||||
assertThat(connectionDetails.getBrokerUrl()).isNotNull().startsWith("tcp://"); |
||||
assertThat(connectionDetails.getUser()).isEqualTo("root"); |
||||
assertThat(connectionDetails.getPassword()).isEqualTo("secret"); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,57 @@
@@ -0,0 +1,57 @@
|
||||
/* |
||||
* 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.docker.compose.service.connection.activemq; |
||||
|
||||
import java.util.Collections; |
||||
import java.util.Map; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Tests for {@link ActiveMQEnvironment}. |
||||
* |
||||
* @author Stephane Nicoll |
||||
*/ |
||||
class ActiveMQEnvironmentTests { |
||||
|
||||
@Test |
||||
void getUserWhenHasNoActiveMqUser() { |
||||
ActiveMQEnvironment environment = new ActiveMQEnvironment(Collections.emptyMap()); |
||||
assertThat(environment.getUser()).isNull(); |
||||
} |
||||
|
||||
@Test |
||||
void getUserWhenHasActiveMqUser() { |
||||
ActiveMQEnvironment environment = new ActiveMQEnvironment(Map.of("ACTIVEMQ_USERNAME", "me")); |
||||
assertThat(environment.getUser()).isEqualTo("me"); |
||||
} |
||||
|
||||
@Test |
||||
void getPasswordWhenHasNoActiveMqPassword() { |
||||
ActiveMQEnvironment environment = new ActiveMQEnvironment(Collections.emptyMap()); |
||||
assertThat(environment.getPassword()).isNull(); |
||||
} |
||||
|
||||
@Test |
||||
void getPasswordWhenHasActiveMqPassword() { |
||||
ActiveMQEnvironment environment = new ActiveMQEnvironment(Map.of("ACTIVEMQ_PASSWORD", "secret")); |
||||
assertThat(environment.getPassword()).isEqualTo("secret"); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,8 @@
@@ -0,0 +1,8 @@
|
||||
services: |
||||
activemq: |
||||
image: 'symptoma/activemq:5.18.0' |
||||
ports: |
||||
- '61616' |
||||
environment: |
||||
ACTIVEMQ_USERNAME: 'root' |
||||
ACTIVEMQ_PASSWORD: 'secret' |
||||
Loading…
Reference in new issue