com.arjuna.mwlabs.wst11.at.remote.UserSubordinateTransactionImple Maven / Gradle / Ivy
package com.arjuna.mwlabs.wst11.at.remote;
import com.arjuna.wst.WrongStateException;
import com.arjuna.wst.SystemException;
import com.arjuna.wst.TransactionRolledBackException;
import com.arjuna.wst.UnknownTransactionException;
import com.arjuna.mw.wst.TxContext;
import com.arjuna.mw.wsc11.context.Context;
import com.arjuna.mw.wst11.UserTransaction;
import com.arjuna.mwlabs.wst11.at.context.TxContextImple;
/**
* Implementation of class used to create a subordinate AT transaction
*
* This class normally redirects all calls to call the corresponding method of the singleton instance
* which implements UserTransaction. In the case of a begin call it redirects to a beginSubordinate call
* on the UserTransaction singleton. In the case of a commit or rollback it throws a WrongStateException,
* irrespective of whether the current transaction is top-level or subordinate since these operations
* should only be attempted via the UserTransactionImple singleton obtained by calling
* TransactionFactory.userTransaction()
*/
public class UserSubordinateTransactionImple extends UserTransaction
{
public UserTransaction getUserSubordinateTransaction() {
return this;
}
public void begin() throws WrongStateException, SystemException {
((UserTransactionImple)UserTransactionImple.getUserTransaction()).beginSubordinate(0);
}
/**
* Start a new subordinate transaction with the specified timeout as its lifetime.
* If an AT transaction is not currently associated with this thread then the
* WrongStateException will be thrown.
*/
public void begin (int timeout) throws WrongStateException, SystemException
{
((UserTransactionImple)UserTransactionImple.getUserTransaction()).beginSubordinate(timeout);
}
/**
* it is inappropriate to call this even if the current transaction is a top level AT
* transaction so we always throw a WrongStateException.
*/
public void commit() throws TransactionRolledBackException, UnknownTransactionException, SecurityException, SystemException, WrongStateException {
throw new WrongStateException();
}
/**
* it is inappropriate to call this even if the current transaction is a top level AT
* transaction so we always throw a WrongStateException.
*/
public void rollback() throws UnknownTransactionException, SecurityException, SystemException, WrongStateException {
throw new WrongStateException();
}
public String transactionIdentifier() {
return UserTransactionImple.getUserTransaction().transactionIdentifier();
}
}