container.preInvokeNoTx(inv);
break;
case Container.TX_MANDATORY:
if ( isNullTx || status == Status.STATUS_NO_TRANSACTION ) {
throw new TransactionRequiredLocalException();
}
useClientTx(prevTx, inv);
break;
case Container.TX_REQUIRED:
if ( isNullTx ) {
throw new TransactionRequiredLocalException();
}
if ( status == Status.STATUS_NO_TRANSACTION ) {
inv.clientTx = null;
startNewTx(prevTx, inv);
} else { // There is a client Tx
inv.clientTx = transactionManager.getTransaction();
useClientTx(prevTx, inv);
}
break;
case Container.TX_REQUIRES_NEW:
if ( status != Status.STATUS_NO_TRANSACTION ) {
inv.clientTx = transactionManager.suspend();
}
startNewTx(prevTx, inv);
break;
case Container.TX_SUPPORTS:
if ( isNullTx ) {
throw new TransactionRequiredLocalException();
}
if ( status != Status.STATUS_NO_TRANSACTION ) {
useClientTx(prevTx, inv);
} else { // we need to invoke the EJB with no Tx.