public Transaction beforeSpaceAction(Transaction transaction) { Transaction res_transaction = transaction; boolean consideredActionListener = false; ActionListener currentActionListener = null; CurrentXtnProxyHolder ph = _supportsContextTransaction ? _contextTransactions.get() : null; boolean ignore = res_transaction == null && ph != null && ph.isdelegatedXa(); if (!ignore) { if (res_transaction == null || ((ph != null && ph.getCurrentActionListener() != null && ph.getXtn().transaction.equals(transaction)))) { if (ph != null) { consideredActionListener = true; res_transaction = ph.getXtn().transaction; currentActionListener = ph.getCurrentActionListener(); if (currentActionListener == null) currentActionListener = _actionListener; if (currentActionListener != null) currentActionListener.action(res_transaction); } } } if (!ignore && _actionListener != null && !consideredActionListener) _actionListener.action(transaction); return res_transaction; }