Skip to content

Commit

Permalink
When XA support is requested, return a ActiveMQXAConnectionFactory
Browse files Browse the repository at this point in the history
  • Loading branch information
turing85 committed Jan 31, 2024
1 parent 6117bca commit 32b94d5
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import jakarta.jms.XAConnectionFactory;

import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQXAConnectionFactory;

import io.quarkus.arc.deployment.SyntheticBeanBuildItem;
import io.quarkus.artemis.core.deployment.ArtemisBootstrappedBuildItem;
Expand Down Expand Up @@ -108,7 +109,8 @@ private static SyntheticBeanBuildItem toSyntheticBeanBuildItem(
private static SyntheticBeanBuildItem.ExtendedBeanConfigurator initializeConfigurator(boolean isXaEnable) {
SyntheticBeanBuildItem.ExtendedBeanConfigurator configurator;
if (isXaEnable) {
configurator = SyntheticBeanBuildItem.configure(ActiveMQConnectionFactory.class);
configurator = SyntheticBeanBuildItem.configure(ActiveMQXAConnectionFactory.class);
configurator.addType(ActiveMQConnectionFactory.class);
/*
* Since {@link ActiveMQConnectionFactory} implements both {@link ConnectionFactory} and
* {@link XAConnectionFactory},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import jakarta.jms.ConnectionFactory;

import org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory;
import org.apache.activemq.artemis.jms.client.ActiveMQXAConnectionFactory;

import io.quarkus.artemis.core.runtime.ArtemisBuildTimeConfig;
import io.quarkus.artemis.core.runtime.ArtemisBuildTimeConfigs;
Expand All @@ -30,18 +31,26 @@ public Supplier<ConnectionFactory> getConnectionFactoryProducer(
ArtemisRuntimeConfig runtimeConfig = runtimeConfigs.configs().get(name);
ArtemisBuildTimeConfig buildTimeConfig = buildTimeConfigs.configs().get(name);
ArtemisUtil.validateIntegrity(name, runtimeConfig, buildTimeConfig);
final ConnectionFactory connectionFactory = Objects.requireNonNull(extractConnectionFactory(runtimeConfig, wrapper));
final ConnectionFactory connectionFactory = Objects
.requireNonNull(extractConnectionFactory(buildTimeConfig.isXaEnabled(), runtimeConfig, wrapper));
return () -> connectionFactory;
}

private ConnectionFactory extractConnectionFactory(ArtemisRuntimeConfig runtimeConfig,
private ConnectionFactory extractConnectionFactory(boolean isXAenabled, ArtemisRuntimeConfig runtimeConfig,
Function<ConnectionFactory, Object> wrapper) {
String url = runtimeConfig.getUrl();
if (url != null) {
return (ConnectionFactory) wrapper.apply(new ActiveMQConnectionFactory(
url,
runtimeConfig.getUsername(),
runtimeConfig.getPassword()));
if (isXAenabled) {
return (ConnectionFactory) wrapper.apply(new ActiveMQXAConnectionFactory(
url,
runtimeConfig.getUsername(),
runtimeConfig.getPassword()));
} else {
return (ConnectionFactory) wrapper.apply(new ActiveMQConnectionFactory(
url,
runtimeConfig.getUsername(),
runtimeConfig.getPassword()));
}
} else {
return null;
}
Expand Down

0 comments on commit 32b94d5

Please sign in to comment.