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 breaks 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. One way is only for synchronizing of model changes. Listener will not be called during undo/redo. Will be called only on first command execution in the command history.
2. Second way is for "pseudo" synchronizing. Will not be called only during undo/redo, but will be called even if command is not started. 3. Third way is regular transaction commit - called always on commit.
-
-
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)Add listener which gets notifications for changes done when event delivery is turned off.voidaddTransactionCommitListener(TransactionCommitListener listener)Adds new listener to listen transaction commits (post commits) events.voidaddTransactionCommitListenerForExecute(TransactionCommitListener listener)Adds transaction commit listener which will not be invoked on command undo or redo.voidaddTransactionCommitListenerIncludingUndoAndRedo(TransactionCommitListener listener)Adds transaction commit listener which will be invoked during any transaction commitsvoidcommit()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 new listener to listen transaction commits (post commits) events.- Parameters:
listener- listener to add
-
addTransactionCommitListenerIncludingUndoAndRedo
void addTransactionCommitListenerIncludingUndoAndRedo(TransactionCommitListener listener)
Adds transaction commit listener which will be invoked during any transaction commits- Parameters:
listener- listener
-
addTransactionCommitListenerForExecute
void addTransactionCommitListenerForExecute(TransactionCommitListener listener)
Adds transaction commit listener which will not be invoked on command undo or redo. And will not be invoked if transaction is committed not from editing session.- Parameters:
listener- listener
-
addNotDeliveredEventsListener
void addNotDeliveredEventsListener(TransactionCommitListener listener)
Add listener which gets notifications for changes done when 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:
- regisrered transaction commit listeners available for event firing in current manager state
-
-