package org.jboss.as.security;
import org.jboss.msc.service.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.msc.value.InjectedValue;
import org.jboss.security.plugins.TransactionManagerLocator;
import javax.transaction.TransactionManager;
/**
* Service that initializes the TransactionManagerLocator.
*
* Note that even if the transaction manager is not present this service will still be installed,
* so services can depend on it without needing to do a check for the capability.
*
* @author Stuart Douglas
*/
public class TransactionManagerLocatorService implements Service<Void> {
public static ServiceName SERVICE_NAME = SecurityExtension.JBOSS_SECURITY.append("transaction-manager-locator");
private final InjectedValue<TransactionManager> transactionManagerInjectedValue = new InjectedValue<>();
@Override
public void start(StartContext startContext) throws StartException {
TransactionManagerLocator.setTransactionManager(transactionManagerInjectedValue.getValue());
}
@Override
public void stop(StopContext stopContext) {
TransactionManagerLocator.setTransactionManager(null);
}
@Override
public Void getValue() throws IllegalStateException, IllegalArgumentException {
return null;
}
public InjectedValue<TransactionManager> getTransactionManagerInjectedValue() {
return transactionManagerInjectedValue;
}
}