Proposed changes are as follows:
1) Moved the duplicated transactionUpdateTime member from AMQChannel/ServerSession to ServerTransaction.
a) LocalTransaction now maintains advances transactionUpdateTime on each enqueue/dequeue operation
b) Other non-transactional ServerTransaction impls return transactionUpdateTime of 0 (as they already do for transactionStartTime).
c) Changed LocalTransaction so that transaction start time is recorded on first enqueue or dequeue operation (rather than only
2) Moved duplicated logic from AMQChannel/ServerSession#checkTransactionStatus to TransactionTimeoutHelper
3) Make TransactionTimeoutTests use a durable queue so it is actually testing with store transactions.
I plan to slim down TransactionTimeoutTests so we have fewer system tests, but this is not done yet.
Phil, could I ask you to review the attached patch and comment please?