package org.jboss.narayana.compensations.internal;
import com.arjuna.mw.wscf.protocols.ProtocolRegistry;
import org.jboss.narayana.compensations.internal.local.LocalBAController;
import org.jboss.narayana.compensations.internal.remote.RemoteBAController;
/**
* @author paul.robinson@redhat.com 19/04/2014
*/
public class BAControllerFactory {
public static BAController getInstance() {
BAController remoteBAController = getRemoteInstance();
if (remoteBAController.isBARunning()) {
return remoteBAController;
}
BAController localBAController = getLocalInstance();
if (localBAController.isBARunning()) {
return localBAController;
}
return localBAController;
}
public static BAController getRemoteInstance() {
return new RemoteBAController();
}
public static BAController getLocalInstance() {
ProtocolRegistry.sharedManager().initialise();
return new LocalBAController();
}
public static boolean isLocalTransactionRunning() {
if (getRemoteInstance().isBARunning()) {
return false;
}
BAController localBAController = getLocalInstance();
return localBAController.isBARunning();
}
public static boolean isRemoteTransactionRunning() {
return getRemoteInstance().isBARunning();
}
}