Class ActionHierarchy
- java.lang.Object
-
- com.arjuna.ats.arjuna.coordinator.ActionHierarchy
-
public class ActionHierarchy extends java.lang.ObjectClass that represents the transaction hierarchy. This class can cope with transaction hierarchies of arbitrary depth.- Since:
- 1.0.
- Version:
- $Id: ActionHierarchy.java 2342 2006-03-30 13:06:17Z $
- Author:
- Mark Little (mark@arjuna.com)
-
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_HIERARCHY_DEPTH
-
Constructor Summary
Constructors Constructor Description ActionHierarchy(int depth)Create a new (blank) hierarchy with sufficient space for the specified number of transactions.ActionHierarchy(ActionHierarchy theCopy)Create a new copy of the specified transaction hierarchy.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(Uid actionId)Insert new entry growing table as needed.booleanadd(Uid actionId, int at)Add the transaction id at the specified level.voidcopy(ActionHierarchy c)Create a copy of the specified transaction hierarchy.intdepth()Returns the current depth of the hierarchy.booleanequals(ActionHierarchy other)Overloads Object.equals.intfindCommonPrefix(ActionHierarchy oldHierarchy)Find common prefix in two hierarchies.voidforgetDeepest()Remove the deepest nested transaction from the hierarchy.com.arjuna.ats.arjuna.coordinator.ActionInfogetActionInfo(int typeIndex)UidgetActionUid(int typeIndex)UidgetDeepestActionUid()Returns the transaction id of the most deeply nested transaction.booleanisAncestor(Uid target)Scan hierarchy looking for a particular Uid starting at deepest and going up.voidpack(OutputBuffer state)Pack the hierarchy into the buffer.voidprint(java.io.PrintWriter strm)Print out the transaction hierarchy.voidunpack(InputBuffer state)CAREFULLY unpack the 'new' hierarchy.
-
-
-
Field Detail
-
DEFAULT_HIERARCHY_DEPTH
public static final int DEFAULT_HIERARCHY_DEPTH
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ActionHierarchy
public ActionHierarchy(int depth)
Create a new (blank) hierarchy with sufficient space for the specified number of transactions. Once this space is exhausted, additional space will be obtained dynamically.
-
ActionHierarchy
public ActionHierarchy(ActionHierarchy theCopy)
Create a new copy of the specified transaction hierarchy.
-
-
Method Detail
-
print
public void print(java.io.PrintWriter strm)
Print out the transaction hierarchy.
-
copy
public void copy(ActionHierarchy c)
Create a copy of the specified transaction hierarchy. Any hierarchy currently maintained by this object will be lost in favour of the new hierarchy. We check for self-assignment.
-
equals
public final boolean equals(ActionHierarchy other)
Overloads Object.equals.
-
add
public final boolean add(Uid actionId)
Insert new entry growing table as needed. Transaction id will be added as a top-level transaction.- Returns:
trueif successful,falseotherwise.
-
add
public final boolean add(Uid actionId, int at)
Add the transaction id at the specified level.- Returns:
trueif successful,falseotherwise.
-
isAncestor
public final boolean isAncestor(Uid target)
Scan hierarchy looking for a particular Uid starting at deepest and going up. Do NOT go past any top level action.- Returns:
trueif is ancestor,falseotherwise.
-
pack
public void pack(OutputBuffer state) throws java.io.IOException
Pack the hierarchy into the buffer.- Throws:
java.io.IOException
-
unpack
public void unpack(InputBuffer state) throws java.io.IOException
CAREFULLY unpack the 'new' hierarchy. We unpack into a temporary to ensure that the current hierarchy is not corrupted.- Throws:
java.io.IOException
-
forgetDeepest
public final void forgetDeepest()
Remove the deepest nested transaction from the hierarchy.
-
findCommonPrefix
public final int findCommonPrefix(ActionHierarchy oldHierarchy)
Find common prefix in two hierarchies.- Returns:
- the index of the first common ancestor.
-
depth
public final int depth()
Returns the current depth of the hierarchy.- Returns:
- the hierarchy depth.
-
getDeepestActionUid
public final Uid getDeepestActionUid()
Returns the transaction id of the most deeply nested transaction.- Returns:
- the
Uidof the deepest transaction.
-
getActionUid
public final Uid getActionUid(int typeIndex)
- Returns:
- the identity of the transaction at the specified level in the hierarchy.
-
getActionInfo
public final com.arjuna.ats.arjuna.coordinator.ActionInfo getActionInfo(int typeIndex)
- Returns:
- the ActionInfo for the transaction at the specified level. ActionInfo is not a public class so this is of limited use outside of the transaction system.
-
-