org.objectweb.jotm
Class TransactionImpl

java.lang.Object
  |
  +--org.objectweb.jotm.TransactionImpl
All Implemented Interfaces:
org.objectweb.jonas_timer.TimerEventListener, Transaction

public class TransactionImpl
extends Object
implements Transaction, org.objectweb.jonas_timer.TimerEventListener

TransactionImpl is the implementation of the Transaction interface, defined in JTA specifications. This object is intended to be used by the EJBServer for transaction management. It is used indirectly by the UserTransaction implementation too, i.e. the Current object. The goal is to use the JTA interface to hide the JTM interface to the caller (EJBServer, Bean or Client).


Constructor Summary
TransactionImpl(TransactionContext pctx)
          New Transaction for this thread (setPropagationContext)
TransactionImpl(Xid xid, int timeout)
          New transaction (begin).
 
Method Summary
 void commit()
          Complete the transaction represented by this Transaction object The calling thread is not required to have the same transaction associated with the thread.
 boolean delistResource(XAResource xares, int flag)
          Delist the resource specified from the current transaction associated with the calling thread.
 void doAttach(int flag)
           
 void doDetach(int flag)
           
 boolean enlistResource(XAResource xares)
          Enlist the resource specified with the current transaction context of the calling thread
 boolean equals(Object obj2)
          return true if objects are identical
 List getEnlistedXAResource()
           
 TransactionContext getPropagationContext(boolean hold)
          Return associated PropagationContext Used for implicit Context propagation.
 int getStatus()
          Obtain the status of the transaction associated with the current thread.
 Xid getXid()
          Get the Xid of the transaction
 int hashCode()
          return a hashcode value for this object
 boolean isRemovable()
          return true if object is no more used (= removable)
 void registerSynchronization(Synchronization sync)
          Register a synchronization object for the transaction currently associated with the calling thread.
 void rollback()
          Rollback the transaction represented by this Transaction object.
 void setRollbackOnly()
          Modify the transaction associated with the current thread such that the only possible outcome of the transaction is to roll back the transaction.
 void setTimer(org.objectweb.jonas_timer.TimerEvent timer)
          set a timer for the transaction
 void timeoutExpired(Object arg)
          timeout for that transaction has expired
 String toString()
          string form
 void unsetTimer()
          unset the timer
 void updatePropagationContext(TransactionContext pctx)
          update the propagation context We should be inside the reply of a request involved in a tx here!
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TransactionImpl

public TransactionImpl(Xid xid,
                       int timeout)
                throws SystemException
New transaction (begin).

Parameters:
timeout - The value of the timeout in seconds.

TransactionImpl

public TransactionImpl(TransactionContext pctx)
New Transaction for this thread (setPropagationContext)

Parameters:
pctx - propagation context
Method Detail

commit

public void commit()
            throws RollbackException,
                   HeuristicMixedException,
                   HeuristicRollbackException,
                   SecurityException,
                   SystemException
Complete the transaction represented by this Transaction object The calling thread is not required to have the same transaction associated with the thread. (JTA 3.3.3)

Specified by:
commit in interface Transaction
Throws:
RollbackException - Thrown to indicate that the transaction has been rolled back rather than committed.
HeuristicMixedException - Thrown to indicate that a heuristic decision was made and that some relevant updates have been committed while others have been rolled back.
HeuristicRollbackException - Thrown to indicate that a heuristic decision was made and that some relevant updates have been rolled back.
SecurityException - Thrown to indicate that the thread is not allowed to commit the transaction.
IllegalStateException - Thrown if the current thread is not associated with a transaction.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

delistResource

public boolean delistResource(XAResource xares,
                              int flag)
                       throws IllegalStateException,
                              SystemException
Delist the resource specified from the current transaction associated with the calling thread.

Specified by:
delistResource in interface Transaction
Parameters:
flag - One of the values of TMSUCCESS, TMSUSPEND, or TMFAIL.
Returns:
true if the dissociation of the Resource is successful.
Throws:
IllegalStateException - Thrown if the transaction in the target object is inactive.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

enlistResource

public boolean enlistResource(XAResource xares)
                       throws RollbackException,
                              IllegalStateException,
                              SystemException
Enlist the resource specified with the current transaction context of the calling thread

Specified by:
enlistResource in interface Transaction
Returns:
true if the resource was enlisted successfully; otherwise false.
Throws:
RollbackException - Thrown to indicate that the transaction has been marked for rollback only.
IllegalStateException - Thrown if the transaction in the target object is in prepared state or the transaction is inactive.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

doDetach

public void doDetach(int flag)
              throws SystemException
SystemException

doAttach

public void doAttach(int flag)
              throws SystemException,
                     RollbackException
SystemException
RollbackException

getEnlistedXAResource

public List getEnlistedXAResource()

getStatus

public int getStatus()
              throws SystemException
Obtain the status of the transaction associated with the current thread.

Specified by:
getStatus in interface Transaction
Returns:
The transaction status. If no transaction is associated with the current thread, this method returns the Status.NoTransaction value.
Throws:
SystemException - Thrown if the transaction manager encounters an unexpected error condition

registerSynchronization

public void registerSynchronization(Synchronization sync)
                             throws RollbackException,
                                    IllegalStateException,
                                    SystemException
Register a synchronization object for the transaction currently associated with the calling thread. The transction manager invokes the beforeCompletion method prior to starting the transaction commit process. After the transaction is completed, the transaction manager invokes the afterCompletion method.

Specified by:
registerSynchronization in interface Transaction
Parameters:
sync - The javax.transaction.Synchronization object for the transaction associated with the target object
Throws:
RollbackException - Thrown to indicate that the transaction has been marked for rollback only.
IllegalStateException - Thrown if the transaction in the target object is in prepared state or the transaction is inactive.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

rollback

public void rollback()
              throws IllegalStateException,
                     SystemException
Rollback the transaction represented by this Transaction object.

Specified by:
rollback in interface Transaction
Throws:
IllegalStateException - Thrown if the transaction in the target object is in prepared state or the transaction is inactive.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

setRollbackOnly

public void setRollbackOnly()
                     throws IllegalStateException,
                            SystemException
Modify the transaction associated with the current thread such that the only possible outcome of the transaction is to roll back the transaction.

Specified by:
setRollbackOnly in interface Transaction
Throws:
IllegalStateException - Thrown if the current thread is not associated with any transaction.
SystemException - Thrown if the transaction manager encounters an unexpected error condition

timeoutExpired

public void timeoutExpired(Object arg)
timeout for that transaction has expired

Specified by:
timeoutExpired in interface org.objectweb.jonas_timer.TimerEventListener

equals

public boolean equals(Object obj2)
return true if objects are identical

Overrides:
equals in class Object

hashCode

public int hashCode()
return a hashcode value for this object

Overrides:
hashCode in class Object

toString

public String toString()
string form

Overrides:
toString in class Object

getPropagationContext

public TransactionContext getPropagationContext(boolean hold)
Return associated PropagationContext Used for implicit Context propagation.

Returns:
PropagationContext associated with the transaction.

setTimer

public void setTimer(org.objectweb.jonas_timer.TimerEvent timer)
set a timer for the transaction


unsetTimer

public void unsetTimer()
unset the timer


updatePropagationContext

public void updatePropagationContext(TransactionContext pctx)
update the propagation context We should be inside the reply of a request involved in a tx here!


getXid

public Xid getXid()
Get the Xid of the transaction


isRemovable

public boolean isRemovable()
return true if object is no more used (= removable)