Interface TransactionManager
-
public interface TransactionManagerTransaction provides framework to keep consistent model after model modification. All model modifications during transaction is recorded and later these modifications are verified to check if they do not break model integrity.Model verification and fixing must be implemented outside, and hooks must be passed to transaction.
Transaction can be read only - during such transaction no model modifications are allowed and any of model modification throws
ReadOnlyModelExceptionTransaction managers offers three ways to attach the listeners.
1. Synchronize model changes - seeaddTransactionCommitListenerForExecute(TransactionCommitListener)
2. "Pseudo" synchronize model changes - seeaddTransactionCommitListener(TransactionCommitListener)
3. Regular transaction commit - seeaddTransactionCommitListenerIncludingUndoAndRedo(TransactionCommitListener).
-
-
Nested Class Summary
Nested Classes Modifier and Type Interface Description static classTransactionManager.TransactionOptionsTransaction options.
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidaddNotDeliveredEventsListener(TransactionCommitListener listener)Adds transaction commit listener which will be invoked if event delivery is turned off.voidaddTransactionCommitListener(TransactionCommitListener listener)Adds transaction commit listener which will be invoked on first command execution or on direct transaction execution (not called on command/session undo/redo).voidaddTransactionCommitListenerForExecute(TransactionCommitListener listener)Adds transaction commit listener which will be invoked only on the first command/session execution (not called on command/session undo/redo nor direct transaction execution).voidaddTransactionCommitListenerIncludingUndoAndRedo(TransactionCommitListener listener)Adds transaction commit listener which will be invoked on command/session execution/undo/redo or direct transaction execution.voidcommit()Commits transaction.voidcommitExecute()Commits transaction during execute operation.voidcommitUndoOrRedo()Commits transaction during undo or redo operation.voidexecuteInTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options)Runs given code in new transaction by callingcommitExecute()If transaction is not yet started, then starts a new, runs the code, and commits the transaction.java.util.Collection<TransactionCommitListener>getListeners()java.util.Collection<TransactionCommitListener>getListenersForFiring()ModelValidatorgetModelValidator()Get validation hook which validates model integrity.booleanisStarted()voidremoveTransactionCommitListener(TransactionCommitListener listener)Removes listener from transaction commit listeners.voidrunInTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options)Runs given code in a transaction.voidrunTransaction(java.lang.Runnable r)Runs given code in new transaction by callingcommit()voidrunTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options)Runs given code in new transaction by callingcommit()voidsetInvalidModelHandler(InvalidModelHandler handler)Sets handler which fixes model with verification errors.voidsetModelValidator(ModelValidator validator)Sets validation hook which validates model integrity.voidstart()Starts transaction.voidstart(TransactionManager.TransactionOptions options)Starts with given options.
-
-
-
Method Detail
-
runTransaction
void runTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options) throws RollbackException, TransactionAlreadyStartedExceptionRuns given code in new transaction by callingcommit()- Parameters:
r- code to run.options- transaction options to run- Throws:
RollbackException- when model verification fails, andInvalidModelHandlerTransactionAlreadyStartedException- when transaction already running
-
runTransaction
void runTransaction(java.lang.Runnable r) throws RollbackException, TransactionAlreadyStartedExceptionRuns given code in new transaction by callingcommit()- Parameters:
r- code to run- Throws:
RollbackException- when model verification fails, andInvalidModelHandlerTransactionAlreadyStartedException- If currently transaction is running
-
executeInTransaction
void executeInTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options) throws RollbackExceptionRuns given code in new transaction by callingcommitExecute()If transaction is not yet started, then starts a new, runs the code, and commits the transaction. If transaction is already started then simply runs the code.- Parameters:
r- code to run.options- transaction options to run- Throws:
RollbackException- when model verification fails, andInvalidModelHandler
-
runInTransaction
void runInTransaction(java.lang.Runnable r, TransactionManager.TransactionOptions options) throws RollbackExceptionRuns given code in a transaction. If transaction is not yet started, then starts a new, runs the code, and commits the transaction. If transaction is already started then simply runs the code.- Parameters:
r- code to run.options- transaction options to run- Throws:
RollbackException- when model verification fails, andInvalidModelHandler
-
start
void start() throws TransactionAlreadyStartedExceptionStarts transaction. Any model modification after transaction is started is recorded.- Throws:
TransactionAlreadyStartedException- when there is running transaction
-
isStarted
boolean isStarted()
- Returns:
- true if transaction is started
-
commit
void commit() throws RollbackException, TransactionAlreadyCommitedExceptionCommits transaction. During commit, model is verified and in case verification failed model is fixed. If the only one fix is to rollback model to previous state which was before transactionRollbackExceptionis thrown- Throws:
RollbackException- when transaction validation fails, and there is no way to fix model except undoing last actionTransactionAlreadyCommitedException- when transaction is not started
-
commitUndoOrRedo
void commitUndoOrRedo() throws RollbackException, TransactionAlreadyCommitedExceptionCommits transaction during undo or redo operation.- Throws:
RollbackExceptionTransactionAlreadyCommitedException- See Also:
commit()
-
commitExecute
void commitExecute() throws RollbackException, TransactionAlreadyCommitedExceptionCommits transaction during execute operation.- Throws:
RollbackExceptionTransactionAlreadyCommitedException- See Also:
commit()
-
start
void start(TransactionManager.TransactionOptions options) throws TransactionAlreadyStartedException
Starts with given options. If transaction is read only any model modification after transaction is started throwsReadOnlyModelExceptionIf transaction
Read only transactions are deprecated - normally queries on model can be done without transaction, and all modifications must be done through transaction.
- Parameters:
options- transaction options- Throws:
TransactionAlreadyStartedException- if transaction is already started
-
setInvalidModelHandler
void setInvalidModelHandler(InvalidModelHandler handler)
Sets handler which fixes model with verification errors.- Parameters:
handler- handler which fixes model
-
setModelValidator
void setModelValidator(ModelValidator validator)
Sets validation hook which validates model integrity.- Parameters:
validator- which validates model integrity
-
getModelValidator
ModelValidator getModelValidator()
Get validation hook which validates model integrity.- Returns:
- validator which validates model integrity
-
addTransactionCommitListener
void addTransactionCommitListener(TransactionCommitListener listener)
Adds transaction commit listener which will be invoked on first command execution or on direct transaction execution (not called on command/session undo/redo).- Parameters:
listener- listener to add
-
addTransactionCommitListenerIncludingUndoAndRedo
void addTransactionCommitListenerIncludingUndoAndRedo(TransactionCommitListener listener)
Adds transaction commit listener which will be invoked on command/session execution/undo/redo or direct transaction execution.- Parameters:
listener- listener
-
addTransactionCommitListenerForExecute
void addTransactionCommitListenerForExecute(TransactionCommitListener listener)
Adds transaction commit listener which will be invoked only on the first command/session execution (not called on command/session undo/redo nor direct transaction execution).- Parameters:
listener- listener
-
addNotDeliveredEventsListener
void addNotDeliveredEventsListener(TransactionCommitListener listener)
Adds transaction commit listener which will be invoked if event delivery is turned off. Usual transaction listeners will be not notified about such events.- Parameters:
listener- which is notified for events happened only when event delivery was turned off. Notification is done on event delivery restore.
-
removeTransactionCommitListener
void removeTransactionCommitListener(TransactionCommitListener listener)
Removes listener from transaction commit listeners.- Parameters:
listener- listener to remove
-
getListeners
java.util.Collection<TransactionCommitListener> getListeners()
- Returns:
- all registered transaction commit listeners.
-
getListenersForFiring
java.util.Collection<TransactionCommitListener> getListenersForFiring()
- Returns:
- registered transaction commit listeners available for event firing in current manager state
-
-