Class DefaultSynchronousTransactionState
- java.lang.Object
-
- io.micronaut.transaction.support.DefaultSynchronousTransactionState
-
- All Implemented Interfaces:
SynchronousTransactionState
,TransactionState
@Internal public final class DefaultSynchronousTransactionState extends java.lang.Object implements SynchronousTransactionState
Default implementation ofSynchronousTransactionState
.- Since:
- 3.4.0
- Author:
- Denis Stepanov
-
-
Constructor Summary
Constructors Constructor Description DefaultSynchronousTransactionState()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clear the entire transaction synchronization state: registered synchronizations as well as the various transaction characteristics.void
clearSynchronization()
Deactivate transaction synchronization for the current state.java.util.List<TransactionSynchronization>
getSynchronizations()
Return an unmodifiable snapshot list of all registered synchronizations for the current state.TransactionDefinition.Isolation
getTransactionIsolationLevel()
Return the isolation level for the current transaction, if any.java.lang.String
getTransactionName()
Return the name of the current transaction, ornull
if none set.void
initSynchronization()
Activate transaction synchronization for the current state.boolean
isActualTransactionActive()
Return whether there currently is an actual transaction active.boolean
isSynchronizationActive()
Return if transaction synchronization is active for the current state.boolean
isTransactionReadOnly()
Return whether the current transaction is marked as read-only.void
registerSynchronization(TransactionSynchronization synchronization)
Register a new transaction synchronization for the current state.void
setActualTransactionActive(boolean active)
Expose whether there currently is an actual transaction active.void
setTransactionIsolationLevel(TransactionDefinition.Isolation isolationLevel)
Expose an isolation level for the current transaction.void
setTransactionName(java.lang.String name)
Expose the name of the current transaction, if any.void
setTransactionReadOnly(boolean readOnly)
Expose a read-only flag for the current transaction.
-
-
-
Method Detail
-
isSynchronizationActive
public boolean isSynchronizationActive()
Description copied from interface:SynchronousTransactionState
Return if transaction synchronization is active for the current state. Can be called before register to avoid unnecessary instance creation.- Specified by:
isSynchronizationActive
in interfaceSynchronousTransactionState
- Returns:
- True if a synchronization is active
- See Also:
SynchronousTransactionState.registerSynchronization(io.micronaut.transaction.support.TransactionSynchronization)
-
initSynchronization
public void initSynchronization() throws java.lang.IllegalStateException
Description copied from interface:SynchronousTransactionState
Activate transaction synchronization for the current state. Called by a transaction manager on transaction begin.- Specified by:
initSynchronization
in interfaceSynchronousTransactionState
- Throws:
java.lang.IllegalStateException
- if synchronization is already active
-
registerSynchronization
public void registerSynchronization(TransactionSynchronization synchronization)
Description copied from interface:SynchronousTransactionState
Register a new transaction synchronization for the current state. Typically called by resource management code.Note that synchronizations can implement the
Ordered
interface. They will be executed in an order according to their order value (if any).- Specified by:
registerSynchronization
in interfaceSynchronousTransactionState
- Parameters:
synchronization
- the synchronization object to register- See Also:
Ordered
-
getSynchronizations
public java.util.List<TransactionSynchronization> getSynchronizations() throws java.lang.IllegalStateException
Description copied from interface:SynchronousTransactionState
Return an unmodifiable snapshot list of all registered synchronizations for the current state.- Specified by:
getSynchronizations
in interfaceSynchronousTransactionState
- Returns:
- unmodifiable List of TransactionSynchronization instances
- Throws:
java.lang.IllegalStateException
- if synchronization is not active- See Also:
TransactionSynchronization
-
clearSynchronization
public void clearSynchronization() throws java.lang.IllegalStateException
Description copied from interface:SynchronousTransactionState
Deactivate transaction synchronization for the current state. Called by the transaction manager on transaction cleanup.- Specified by:
clearSynchronization
in interfaceSynchronousTransactionState
- Throws:
java.lang.IllegalStateException
- if synchronization is not active
-
setTransactionName
public void setTransactionName(java.lang.String name)
Description copied from interface:SynchronousTransactionState
Expose the name of the current transaction, if any. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionName
in interfaceSynchronousTransactionState
- Parameters:
name
- the name of the transaction, ornull
to reset it- See Also:
TransactionDefinition.getName()
-
getTransactionName
public java.lang.String getTransactionName()
Description copied from interface:SynchronousTransactionState
Return the name of the current transaction, ornull
if none set. To be called by resource management code for optimizations per use case, for example to optimize fetch strategies for specific named transactions.- Specified by:
getTransactionName
in interfaceSynchronousTransactionState
- Returns:
- The current transaction name
- See Also:
TransactionDefinition.getName()
-
setTransactionReadOnly
public void setTransactionReadOnly(boolean readOnly)
Description copied from interface:SynchronousTransactionState
Expose a read-only flag for the current transaction. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionReadOnly
in interfaceSynchronousTransactionState
- Parameters:
readOnly
-true
to mark the current transaction as read-only;false
to reset such a read-only marker- See Also:
TransactionDefinition.isReadOnly()
-
isTransactionReadOnly
public boolean isTransactionReadOnly()
Description copied from interface:SynchronousTransactionState
Return whether the current transaction is marked as read-only. To be called by resource management code when preparing a newly created resource (for example, a Hibernate Session).Note that transaction synchronizations receive the read-only flag as argument for the
beforeCommit
callback, to be able to suppress change detection on commit. The present method is meant to be used for earlier read-only checks, for example to set the flush mode of a Hibernate Session to "FlushMode.NEVER" upfront.- Specified by:
isTransactionReadOnly
in interfaceSynchronousTransactionState
- Returns:
- Whether the transaction is read only
- See Also:
TransactionDefinition.isReadOnly()
,TransactionSynchronization.beforeCommit(boolean)
-
setTransactionIsolationLevel
public void setTransactionIsolationLevel(TransactionDefinition.Isolation isolationLevel)
Description copied from interface:SynchronousTransactionState
Expose an isolation level for the current transaction. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setTransactionIsolationLevel
in interfaceSynchronousTransactionState
- Parameters:
isolationLevel
- the isolation level to expose, according to the JDBC Connection constants (equivalent to the corresponding TransactionDefinition constants), ornull
to reset it- See Also:
Connection.TRANSACTION_READ_UNCOMMITTED
,Connection.TRANSACTION_READ_COMMITTED
,Connection.TRANSACTION_REPEATABLE_READ
,Connection.TRANSACTION_SERIALIZABLE
,TransactionDefinition.Isolation.READ_UNCOMMITTED
,TransactionDefinition.Isolation.READ_COMMITTED
,TransactionDefinition.Isolation.REPEATABLE_READ
,TransactionDefinition.Isolation.SERIALIZABLE
,TransactionDefinition.getIsolationLevel()
-
getTransactionIsolationLevel
public TransactionDefinition.Isolation getTransactionIsolationLevel()
Description copied from interface:SynchronousTransactionState
Return the isolation level for the current transaction, if any. To be called by resource management code when preparing a newly created resource (for example, a JDBC Connection).- Specified by:
getTransactionIsolationLevel
in interfaceSynchronousTransactionState
- Returns:
- the currently exposed isolation level, according to the
JDBC Connection constants (equivalent to the corresponding
TransactionDefinition constants), or
null
if none - See Also:
Connection.TRANSACTION_READ_UNCOMMITTED
,Connection.TRANSACTION_READ_COMMITTED
,Connection.TRANSACTION_REPEATABLE_READ
,Connection.TRANSACTION_SERIALIZABLE
,TransactionDefinition.Isolation.READ_UNCOMMITTED
,TransactionDefinition.Isolation.READ_COMMITTED
,TransactionDefinition.Isolation.REPEATABLE_READ
,TransactionDefinition.Isolation.SERIALIZABLE
,TransactionDefinition.getIsolationLevel()
-
setActualTransactionActive
public void setActualTransactionActive(boolean active)
Description copied from interface:SynchronousTransactionState
Expose whether there currently is an actual transaction active. Called by the transaction manager on transaction begin and on cleanup.- Specified by:
setActualTransactionActive
in interfaceSynchronousTransactionState
- Parameters:
active
-true
to mark the current state as being associated with an actual transaction;false
to reset that marker
-
isActualTransactionActive
public boolean isActualTransactionActive()
Description copied from interface:SynchronousTransactionState
Return whether there currently is an actual transaction active. This indicates whether the current state is associated with an actual transaction rather than just with active transaction synchronization.To be called by resource management code that wants to discriminate between active transaction synchronization (with or without backing resource transaction; also on PROPAGATION_SUPPORTS) and an actual transaction being active (with backing resource transaction; on PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW, etc).
- Specified by:
isActualTransactionActive
in interfaceSynchronousTransactionState
- Returns:
- Whether a transaction is active
- See Also:
SynchronousTransactionState.isSynchronizationActive()
-
clear
public void clear()
Description copied from interface:SynchronousTransactionState
Clear the entire transaction synchronization state: registered synchronizations as well as the various transaction characteristics.- Specified by:
clear
in interfaceSynchronousTransactionState
- See Also:
SynchronousTransactionState.clearSynchronization()
,SynchronousTransactionState.setTransactionName(java.lang.String)
,SynchronousTransactionState.setTransactionReadOnly(boolean)
,SynchronousTransactionState.setTransactionIsolationLevel(io.micronaut.transaction.TransactionDefinition.Isolation)
,SynchronousTransactionState.setActualTransactionActive(boolean)
-
-