*/
if ((e1.errorCode >= XAException.XA_RBBASE)
&& (e1.errorCode <= XAException.XA_RBEND))
{
throw new TRANSACTION_ROLLEDBACK();
}
switch (e1.errorCode)
{
case XAException.XA_HEURHAZ:
case XAException.XA_HEURMIX:
updateState(TwoPhaseOutcome.HEURISTIC_HAZARD);
throw new org.omg.CosTransactions.HeuristicHazard();
case XAException.XA_HEURCOM:
handleForget() ;
break;
case XAException.XA_HEURRB:
case XAException.XA_RBROLLBACK:
case XAException.XA_RBCOMMFAIL:
case XAException.XA_RBDEADLOCK:
case XAException.XA_RBINTEGRITY:
case XAException.XA_RBOTHER:
case XAException.XA_RBPROTO:
case XAException.XA_RBTIMEOUT:
case XAException.XA_RBTRANSIENT:
case XAException.XAER_RMERR:
handleForget() ;
throw new TRANSACTION_ROLLEDBACK();
case XAException.XAER_NOTA:
// RM unexpectedly lost track of the tx, outcome is uncertain
updateState(TwoPhaseOutcome.HEURISTIC_HAZARD);
throw new org.omg.CosTransactions.HeuristicHazard();
case XAException.XAER_PROTO:
// presumed abort (or we could be really paranoid and throw a heuristic)
throw new TRANSACTION_ROLLEDBACK();
case XAException.XAER_INVAL:
case XAException.XAER_RMFAIL: // resource manager failed,
// did it rollback?
throw new UNKNOWN();