Skip to content

Commit

Permalink
Fix comments
Browse files Browse the repository at this point in the history
  • Loading branch information
eddumelendez committed Apr 19, 2023
1 parent c09c84e commit 9068f0b
Show file tree
Hide file tree
Showing 9 changed files with 77 additions and 86 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import org.springframework.boot.autoconfigure.jms.JmsProperties;
import org.springframework.boot.autoconfigure.jms.JndiConnectionFactoryAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;

/**
Expand All @@ -42,8 +43,41 @@
@ConditionalOnClass({ ConnectionFactory.class, ActiveMQConnectionFactory.class })
@ConditionalOnMissingBean(ConnectionFactory.class)
@EnableConfigurationProperties({ ActiveMQProperties.class, JmsProperties.class })
@Import({ ConnectionDetailsConfiguration.class, ActiveMQXAConnectionFactoryConfiguration.class,
ActiveMQConnectionFactoryConfiguration.class })
@Import({ ActiveMQXAConnectionFactoryConfiguration.class, ActiveMQConnectionFactoryConfiguration.class })
public class ActiveMQAutoConfiguration {

@Bean
@ConditionalOnMissingBean(ActiveMQConnectionDetails.class)
ActiveMQConnectionDetails activemqConnectionDetails(ActiveMQProperties properties) {
return new PropertiesActiveMQConnectionDetails(properties);
}

/**
* Adapts {@link ActiveMQProperties} to {@link ActiveMQConnectionDetails}.
*/
static class PropertiesActiveMQConnectionDetails implements ActiveMQConnectionDetails {

private final ActiveMQProperties properties;

public PropertiesActiveMQConnectionDetails(ActiveMQProperties properties) {
this.properties = properties;
}

@Override
public String getBrokerUrl() {
return this.properties.determineBrokerUrl();
}

@Override
public String getUser() {
return this.properties.getUser();
}

@Override
public String getPassword() {
return this.properties.getPassword();
}

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,12 @@ public interface ActiveMQConnectionDetails extends ConnectionDetails {

String getBrokerUrl();

default String getUser() {
return null;
}

default String getPassword() {
return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ private <T extends ActiveMQConnectionFactory> T doCreateConnectionFactory(Class<
private <T extends ActiveMQConnectionFactory> T createConnectionFactoryInstance(Class<T> factoryClass)
throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
String brokerUrl = this.connectionDetails.getBrokerUrl();
String user = this.properties.getUser();
String password = this.properties.getPassword();
String user = this.connectionDetails.getUser();
String password = this.connectionDetails.getPassword();
if (StringUtils.hasLength(user) && StringUtils.hasLength(password)) {
return factoryClass.getConstructor(String.class, String.class, String.class)
.newInstance(user, password, brokerUrl);
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,8 @@ void cachingConnectionFactoryNotOnTheClasspathAndCacheEnabledThenSimpleConnectio

@Test
void definesPropertiesBasedConnectionDetailsByDefault() {
this.contextRunner
.run((context) -> assertThat(context).hasSingleBean(PropertiesActiveMQConnectionDetails.class));
this.contextRunner.run((context) -> assertThat(context)
.hasSingleBean(ActiveMQAutoConfiguration.PropertiesActiveMQConnectionDetails.class));
}

@Test
Expand All @@ -247,9 +247,11 @@ void testConnectionFactoryWithOverridesWhenUsingCustomConnectionDetails() {
.withUserConfiguration(TestConnectionDetailsConfiguration.class)
.run((context) -> {
assertThat(context).hasSingleBean(ActiveMQConnectionDetails.class)
.doesNotHaveBean(PropertiesActiveMQConnectionDetails.class);
.doesNotHaveBean(ActiveMQAutoConfiguration.PropertiesActiveMQConnectionDetails.class);
ActiveMQConnectionFactory connectionFactory = context.getBean(ActiveMQConnectionFactory.class);
assertThat(connectionFactory.getBrokerURL()).isEqualTo("tcp://localhost:12345");
assertThat(connectionFactory.getUserName()).isEqualTo("springuser");
assertThat(connectionFactory.getPassword()).isEqualTo("spring");
});
}

Expand Down Expand Up @@ -286,7 +288,22 @@ static class TestConnectionDetailsConfiguration {

@Bean
ActiveMQConnectionDetails activemqConnectionDetails() {
return () -> "tcp://localhost:12345";
return new ActiveMQConnectionDetails() {
@Override
public String getBrokerUrl() {
return "tcp://localhost:12345";
}

@Override
public String getUser() {
return "springuser";
}

@Override
public String getPassword() {
return "spring";
}
};
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ void setTrustedPackages() {

private ActiveMQConnectionFactoryFactory createFactory(ActiveMQProperties properties) {
return new ActiveMQConnectionFactoryFactory(properties, Collections.emptyList(),
new PropertiesActiveMQConnectionDetails(properties));
new ActiveMQAutoConfiguration.PropertiesActiveMQConnectionDetails(properties));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ description = "Spring Boot Actuator ActiveMQ smoke test"
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-activemq"))

testImplementation("org.awaitility:awaitility")
testImplementation("org.testcontainers:testcontainers")
testImplementation("org.testcontainers:junit-jupiter")
testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,21 @@

package smoketest.activemq;

import org.awaitility.Awaitility;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.testcontainers.junit.jupiter.Container;
import org.testcontainers.junit.jupiter.Testcontainers;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.system.CapturedOutput;
import org.springframework.boot.test.system.OutputCaptureExtension;
import org.springframework.boot.testcontainers.service.connection.ServiceConnection;
import org.springframework.boot.testsupport.testcontainers.ActiveMQContainer;

import java.time.Duration;

import static org.assertj.core.api.Assertions.assertThat;

/**
Expand All @@ -42,17 +45,17 @@
class SampleActiveMqTests {

@Container
@ServiceConnection
@ServiceConnection("activemq")
private static final ActiveMQContainer container = new ActiveMQContainer();

@Autowired
private Producer producer;

@Test
void sendSimpleMessage(CapturedOutput output) throws InterruptedException {
void sendSimpleMessage(CapturedOutput output) {
this.producer.send("Test message");
Thread.sleep(1000L);
assertThat(output).contains("Test message");
Awaitility.waitAtMost(Duration.ofMinutes(1))
.untilAsserted(() -> assertThat(output).contains("Test message"));
}

}

0 comments on commit 9068f0b

Please sign in to comment.