public class DefaultTransactionStatus extends AbstractTransactionStatus
TransactionStatus
interface, used by AbstractPlatformTransactionManager
. Based on the concept
of an underlying "transaction object".
Holds all status information that AbstractPlatformTransactionManager
needs internally, including a generic transaction object determined by the
concrete transaction manager implementation.
Supports delegating savepoint-related methods to a transaction object
that implements the SavepointManager
interface.
NOTE: This is not intended for use with other PlatformTransactionManager
implementations, in particular not for mock transaction managers in testing environments.
Use the alternative SimpleTransactionStatus
class or a mock for the plain
TransactionStatus
interface instead.
AbstractPlatformTransactionManager
,
SavepointManager
,
getTransaction()
,
AbstractTransactionStatus.createSavepoint()
,
AbstractTransactionStatus.rollbackToSavepoint(java.lang.Object)
,
AbstractTransactionStatus.releaseSavepoint(java.lang.Object)
,
SimpleTransactionStatus
Constructor and Description |
---|
DefaultTransactionStatus(Object transaction,
boolean newTransaction,
boolean newSynchronization,
boolean readOnly,
boolean debug,
Object suspendedResources)
Create a new
DefaultTransactionStatus instance. |
Modifier and Type | Method and Description |
---|---|
void |
flush()
Delegate the flushing to the transaction object, provided that the latter
implements the
SmartTransactionObject interface. |
protected SavepointManager |
getSavepointManager()
This implementation exposes the
SavepointManager interface
of the underlying transaction object, if any. |
Object |
getSuspendedResources()
Return the holder for resources that have been suspended for this transaction,
if any.
|
Object |
getTransaction()
Return the underlying transaction object.
|
boolean |
hasTransaction()
Return whether there is an actual transaction active.
|
boolean |
isDebug()
Return whether the progress of this transaction is debugged.
|
boolean |
isGlobalRollbackOnly()
Determine the rollback-only flag via checking the transaction object, provided
that the latter implements the
SmartTransactionObject interface. |
boolean |
isNewSynchronization()
Return if a new transaction synchronization has been opened
for this transaction.
|
boolean |
isNewTransaction()
Return whether the present transaction is new; otherwise participating
in an existing transaction, or potentially not running in an actual
transaction in the first place.
|
boolean |
isReadOnly()
Return if this transaction is defined as read-only transaction.
|
boolean |
isTransactionSavepointManager()
Return whether the underlying transaction implements the
SavepointManager
interface and therefore supports savepoints. |
createAndHoldSavepoint, createSavepoint, getSavepoint, hasSavepoint, isCompleted, isLocalRollbackOnly, isRollbackOnly, releaseHeldSavepoint, releaseSavepoint, rollbackToHeldSavepoint, rollbackToSavepoint, setCompleted, setRollbackOnly, setSavepoint
public DefaultTransactionStatus(@Nullable Object transaction, boolean newTransaction, boolean newSynchronization, boolean readOnly, boolean debug, @Nullable Object suspendedResources)
DefaultTransactionStatus
instance.transaction
- underlying transaction object that can hold state
for the internal transaction implementationnewTransaction
- if the transaction is new, otherwise participating
in an existing transactionnewSynchronization
- if a new transaction synchronization has been
opened for the given transactionreadOnly
- whether the transaction is marked as read-onlydebug
- should debug logging be enabled for the handling of this transaction?
Caching it in here can prevent repeated calls to ask the logging system whether
debug logging should be enabled.suspendedResources
- a holder for resources that have been suspended
for this transaction, if anypublic Object getTransaction()
IllegalStateException
- if no transaction is activepublic boolean hasTransaction()
public boolean isNewTransaction()
TransactionStatus
public boolean isNewSynchronization()
public boolean isReadOnly()
public boolean isDebug()
AbstractPlatformTransactionManager
as an optimization, to prevent repeated
calls to logger.isDebugEnabled()
. Not really intended for client code.@Nullable public Object getSuspendedResources()
public boolean isGlobalRollbackOnly()
SmartTransactionObject
interface.
Will return true
if the global transaction itself has been marked
rollback-only by the transaction coordinator, for example in case of a timeout.
isGlobalRollbackOnly
in class AbstractTransactionStatus
SmartTransactionObject.isRollbackOnly()
public void flush()
SmartTransactionObject
interface.flush
in interface Flushable
flush
in interface TransactionStatus
flush
in class AbstractTransactionStatus
SmartTransactionObject.flush()
protected SavepointManager getSavepointManager()
SavepointManager
interface
of the underlying transaction object, if any.getSavepointManager
in class AbstractTransactionStatus
NestedTransactionNotSupportedException
- if savepoints are not supportedisTransactionSavepointManager()
public boolean isTransactionSavepointManager()
SavepointManager
interface and therefore supports savepoints.getTransaction()
,
getSavepointManager()