diff --git a/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java b/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java index 31fd1d03ec8c..90ad35e10271 100644 --- a/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java +++ b/weld/transactions/src/main/java/org/jboss/as/weld/deployment/processor/TransactionsBootstrapDependencyInstaller.java @@ -29,21 +29,22 @@ import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.ServiceTarget; +import java.util.function.Consumer; + /** - * * @author Martin Kouba + * @author Richard Opalka */ public class TransactionsBootstrapDependencyInstaller implements BootstrapDependencyInstaller { @Override public ServiceName install(ServiceTarget serviceTarget, DeploymentUnit deploymentUnit, boolean jtsEnabled) { - final WeldTransactionServices weldTransactionServices = new WeldTransactionServices(jtsEnabled); - final ServiceName weldTransactionServiceName = deploymentUnit.getServiceName().append(WeldTransactionServices.SERVICE_NAME); - - final ServiceBuilder sb = serviceTarget.addService(weldTransactionServiceName, weldTransactionServices); + final ServiceBuilder sb = serviceTarget.addService(weldTransactionServiceName); + final Consumer weldTransactionServicesConsumer = sb.provides(weldTransactionServiceName); // Ensure the local transaction provider is started before we start sb.requires(ServiceNames.capabilityServiceName(deploymentUnit, "org.wildfly.transactions.global-default-local-provider")); + sb.setInstance(new WeldTransactionServices(jtsEnabled, weldTransactionServicesConsumer)); sb.install(); return weldTransactionServiceName; diff --git a/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java b/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java index 29078da9393f..87ca71ab02ec 100644 --- a/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java +++ b/weld/transactions/src/main/java/org/jboss/as/weld/services/bootstrap/WeldTransactionServices.java @@ -21,6 +21,8 @@ */ package org.jboss.as.weld.services.bootstrap; +import java.util.function.Consumer; + import javax.transaction.RollbackException; import javax.transaction.Status; import javax.transaction.Synchronization; @@ -28,10 +30,9 @@ import javax.transaction.UserTransaction; import org.jboss.as.weld.ServiceNames; -import org.jboss.msc.service.Service; +import org.jboss.msc.Service; import org.jboss.msc.service.ServiceName; import org.jboss.msc.service.StartContext; -import org.jboss.msc.service.StartException; import org.jboss.msc.service.StopContext; import org.jboss.weld.transaction.spi.TransactionServices; import org.wildfly.transaction.client.ContextTransactionManager; @@ -44,16 +45,17 @@ * * @author Stuart Douglas * @author Tomasz Adamski - * + * @author Richard Opalka */ -public class WeldTransactionServices implements TransactionServices, Service { +public class WeldTransactionServices implements TransactionServices, Service { public static final ServiceName SERVICE_NAME = ServiceNames.WELD_TRANSACTION_SERVICES_SERVICE_NAME; - + private final Consumer weldTransactionServicesConsumer; private final boolean jtsEnabled; - public WeldTransactionServices(final boolean jtsEnabled) { + public WeldTransactionServices(final boolean jtsEnabled, final Consumer weldTransactionServicesConsumer) { this.jtsEnabled = jtsEnabled; + this.weldTransactionServicesConsumer = weldTransactionServicesConsumer; } @Override @@ -101,18 +103,13 @@ public void registerSynchronization(Synchronization synchronizedObserver) { } @Override - public void start(StartContext context) throws StartException { - - } - - @Override - public void stop(StopContext context) { - + public void start(final StartContext context) { + weldTransactionServicesConsumer.accept(this); } @Override - public WeldTransactionServices getValue() throws IllegalStateException, IllegalArgumentException { - return this; + public void stop(final StopContext context) { + weldTransactionServicesConsumer.accept(null); } }