bitronix.tm.internal
Class XAResourceManager

java.lang.Object
  extended by bitronix.tm.internal.XAResourceManager

public class XAResourceManager
extends java.lang.Object

Every BitronixTransaction contains an instance of this class that is used to register and keep track of resources enlisted in a transaction.

© Bitronix Software

Author:
lorban

Constructor Summary
XAResourceManager(Uid gtrid)
          Create a resource manager for the specified GTRID.
 
Method Summary
 void clearXAResourceHolderStates()
          Remove this transaction's XAResourceHolderState from all enlisted XAResourceHolders.
 java.util.Set collectUniqueNames()
          Get a Set of unique names of all the enlisted XAResourceHolderStates.
 boolean delist(XAResourceHolderState xaResourceHolderState, int flag)
          Delist the specified XAResourceHolderState.
 void enlist(XAResourceHolderState xaResourceHolderState)
          Enlist the specified XAResourceHolderState.
 XAResourceHolderState findXAResourceHolderState(javax.transaction.xa.XAResource xaResource)
          Look if an XAResource has already been enlisted.
 java.util.List getAllResources()
           
 Uid getGtrid()
          Get the GTRID of the transaction the XAResourceManager instance is attached to.
 java.util.SortedSet getNaturalOrderPositions()
           
 java.util.List getNaturalOrderResourcesForPosition(java.lang.Object positionKey)
           
 java.util.SortedSet getReverseOrderPositions()
           
 java.util.List getReverseOrderResourcesForPosition(java.lang.Object positionKey)
           
 void resume()
          Resume all enlisted resources in the current transaction context.
 int size()
          Get the enlisted resources count.
 void suspend()
          Suspend all enlisted resources from the current transaction context.
 java.lang.String toString()
          Return a human-readable representation of this object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

XAResourceManager

public XAResourceManager(Uid gtrid)
Create a resource manager for the specified GTRID.

Parameters:
gtrid - the transaction's GTRID this XAResourceManager will be assigned to.
Method Detail

enlist

public void enlist(XAResourceHolderState xaResourceHolderState)
            throws javax.transaction.xa.XAException,
                   BitronixSystemException
Enlist the specified XAResourceHolderState. A XID is generated and the resource is started with XAResource.TMNOFLAGS or XAResource.TMJOIN if it could be joined with another previously enlisted one.
There are 3 different cases that can happen when a XAResourceHolderState is enlisted:

Parameters:
xaResourceHolderState - the XAResourceHolderState to be enlisted.
Throws:
javax.transaction.xa.XAException - if a resource error occured.
BitronixSystemException - if an internal error occured.

delist

public boolean delist(XAResourceHolderState xaResourceHolderState,
                      int flag)
               throws javax.transaction.xa.XAException,
                      BitronixSystemException
Delist the specified XAResourceHolderState. A reference to the resource is kept anyway.

Parameters:
xaResourceHolderState - the XAResourceHolderState to be delisted.
flag - the delistment flag.
Returns:
true if the resource could be delisted, false otherwise.
Throws:
javax.transaction.xa.XAException - if the resource threw an exception during delistment.
BitronixSystemException - if an internal error occured.

suspend

public void suspend()
             throws javax.transaction.xa.XAException
Suspend all enlisted resources from the current transaction context.

Throws:
javax.transaction.xa.XAException - if the resource threw an exception during suspend.

resume

public void resume()
            throws javax.transaction.xa.XAException
Resume all enlisted resources in the current transaction context.

Throws:
javax.transaction.xa.XAException - if the resource threw an exception during resume.

findXAResourceHolderState

public XAResourceHolderState findXAResourceHolderState(javax.transaction.xa.XAResource xaResource)
                                                throws BitronixSystemException
Look if an XAResource has already been enlisted.

Parameters:
xaResource - the XAResource to look for.
Returns:
the XAResourceHolderState of the enlisted resource or null if the XAResource has not been enlisted in this XAResourceManager.
Throws:
BitronixSystemException - if an internal error happens.

clearXAResourceHolderStates

public void clearXAResourceHolderStates()
Remove this transaction's XAResourceHolderState from all enlisted XAResourceHolders.


collectUniqueNames

public java.util.Set collectUniqueNames()
Get a Set of unique names of all the enlisted XAResourceHolderStates.

Returns:
a Set of unique names of all the enlisted XAResourceHolderStates.

getNaturalOrderPositions

public java.util.SortedSet getNaturalOrderPositions()

getReverseOrderPositions

public java.util.SortedSet getReverseOrderPositions()

getNaturalOrderResourcesForPosition

public java.util.List getNaturalOrderResourcesForPosition(java.lang.Object positionKey)

getReverseOrderResourcesForPosition

public java.util.List getReverseOrderResourcesForPosition(java.lang.Object positionKey)

getAllResources

public java.util.List getAllResources()

size

public int size()
Get the enlisted resources count.

Returns:
the enlisted resources count.

getGtrid

public Uid getGtrid()
Get the GTRID of the transaction the XAResourceManager instance is attached to.

Returns:
the GTRID of the transaction the XAResourceManager instance is attached to.

toString

public java.lang.String toString()
Return a human-readable representation of this object.

Overrides:
toString in class java.lang.Object
Returns:
a human-readable representation of this object.