Class AbstractTransactionStatus<T>
- Type Parameters:
T- The connection type
- All Implemented Interfaces:
SavepointManager,TransactionExecution,TransactionStatus<T>,Flushable
- Direct Known Subclasses:
DefaultTransactionStatus
TransactionStatus interface.
Pre-implements the handling of local rollback-only and completed flags, and
delegation to an underlying SavepointManager.
Also offers the option of a holding a savepoint within the transaction.
Does not assume any specific internal transaction handling, such as an underlying transaction object, and no transaction synchronization mechanism.
- Since:
- 1.2.3
- Author:
- Juergen Hoeller
- See Also:
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidCreate a savepoint and hold it for the transaction.This implementation delegates to a SavepointManager for the underlying transaction, if possible.voidflush()This implementations is empty, considering flush as a no-op.protected Objectprotected SavepointManagerReturn a SavepointManager for the underlying transaction, if possible.booleanReturn whether this transaction internally carries a savepoint, that is, has been created as nested transaction based on a savepoint.booleanReturn whether this transaction is completed, that is, whether it has already been committed or rolled back.booleanTemplate method for determining the global rollback-only flag of the underlying transaction, if any.booleanDetermine the rollback-only flag via checking this TransactionStatus.booleanDetermine the rollback-only flag via checking both the local rollback-only flag of this TransactionStatus and the global rollback-only flag of the underlying transaction, if any.voidRelease the savepoint that is held for the transaction.voidreleaseSavepoint(Object savepoint) This implementation delegates to a SavepointManager for the underlying transaction, if possible.voidRoll back to the savepoint that is held for the transaction and release the savepoint right afterwards.voidrollbackToSavepoint(Object savepoint) This implementation delegates to a SavepointManager for the underlying transaction, if possible.voidMark this transaction as completed, that is, committed or rolled back.voidSet the transaction rollback-only.protected voidsetSavepoint(Object savepoint) Set a savepoint for this transaction.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface io.micronaut.transaction.TransactionExecution
isNewTransactionMethods inherited from interface io.micronaut.transaction.TransactionStatus
getConnection, getTransaction
-
Constructor Details
-
AbstractTransactionStatus
public AbstractTransactionStatus()
-
-
Method Details
-
setRollbackOnly
public void setRollbackOnly()Description copied from interface:TransactionExecutionSet the transaction rollback-only. This instructs the transaction manager that the only possible outcome of the transaction may be a rollback, as alternative to throwing an exception which would in turn trigger a rollback.- Specified by:
setRollbackOnlyin interfaceTransactionExecution
-
isRollbackOnly
public boolean isRollbackOnly()Determine the rollback-only flag via checking both the local rollback-only flag of this TransactionStatus and the global rollback-only flag of the underlying transaction, if any.- Specified by:
isRollbackOnlyin interfaceTransactionExecution- Returns:
- Whether the execution has been marked to rollback
- See Also:
-
isLocalRollbackOnly
public boolean isLocalRollbackOnly()Determine the rollback-only flag via checking this TransactionStatus.Will only return "true" if the application called
setRollbackOnlyon this TransactionStatus object.- Returns:
- Whether is local rollback
-
isGlobalRollbackOnly
public boolean isGlobalRollbackOnly()Template method for determining the global rollback-only flag of the underlying transaction, if any.This implementation always returns
false.- Returns:
- Whether is global rollback
-
setCompleted
public void setCompleted()Mark this transaction as completed, that is, committed or rolled back. -
isCompleted
public boolean isCompleted()Description copied from interface:TransactionExecutionReturn whether this transaction is completed, that is, whether it has already been committed or rolled back.- Specified by:
isCompletedin interfaceTransactionExecution- Returns:
- Whether the execution has completed
-
hasSavepoint
public boolean hasSavepoint()Description copied from interface:TransactionStatusReturn whether this transaction internally carries a savepoint, that is, has been created as nested transaction based on a savepoint.This method is mainly here for diagnostic purposes, alongside
TransactionExecution.isNewTransaction(). For programmatic handling of custom savepoints, use the operations provided bySavepointManager.- Specified by:
hasSavepointin interfaceTransactionStatus<T>- Returns:
- Whether a save point is present
- See Also:
-
setSavepoint
Set a savepoint for this transaction. Useful for paropagation NESTED.- Parameters:
savepoint- The save point- See Also:
-
getSavepoint
- Returns:
- Get the savepoint for this transaction, if any.
-
createAndHoldSavepoint
Create a savepoint and hold it for the transaction.- Throws:
NestedTransactionNotSupportedException- if the underlying transaction does not support savepointsTransactionException- if an error occurs creating the save point
-
rollbackToHeldSavepoint
Roll back to the savepoint that is held for the transaction and release the savepoint right afterwards.- Throws:
TransactionException- if an error occurs rolling back to savepoint
-
releaseHeldSavepoint
Release the savepoint that is held for the transaction.- Throws:
TransactionException- if an error occurs releasing the save point
-
createSavepoint
This implementation delegates to a SavepointManager for the underlying transaction, if possible.- Specified by:
createSavepointin interfaceSavepointManager- Returns:
- a savepoint object, to be passed into
SavepointManager.rollbackToSavepoint(java.lang.Object)orSavepointManager.releaseSavepoint(java.lang.Object) - Throws:
NestedTransactionNotSupportedException- if the underlying transaction does not support savepointsTransactionException- if the savepoint could not be created, for example because the transaction is not in an appropriate state- See Also:
-
rollbackToSavepoint
This implementation delegates to a SavepointManager for the underlying transaction, if possible.- Specified by:
rollbackToSavepointin interfaceSavepointManager- Parameters:
savepoint- the savepoint to roll back to- Throws:
NestedTransactionNotSupportedException- if the underlying transaction does not support savepointsTransactionException- if the rollback failed- See Also:
-
releaseSavepoint
This implementation delegates to a SavepointManager for the underlying transaction, if possible.- Specified by:
releaseSavepointin interfaceSavepointManager- Parameters:
savepoint- the savepoint to release- Throws:
NestedTransactionNotSupportedException- if the underlying transaction does not support savepointsTransactionException- if the release failed- See Also:
-
getSavepointManager
Return a SavepointManager for the underlying transaction, if possible.Default implementation always throws a NestedTransactionNotSupportedException.
- Returns:
- The save point manager
- Throws:
NestedTransactionNotSupportedException- if the underlying transaction does not support savepoints
-
flush
public void flush()This implementations is empty, considering flush as a no-op.- Specified by:
flushin interfaceFlushable- Specified by:
flushin interfaceTransactionStatus<T>
-