Package org.fcrepo.kernel.api
Interface Transaction
- All Known Implementing Classes:
ReadOnlyTransaction
public interface Transaction
The Fedora Transaction abstraction
- Author:
- mohideen
-
Method Summary
Modifier and TypeMethodDescriptionvoidcommit()Commit the transactionvoidCommit the transaction only if the transaction is shortLivedvoidExecutes the runnable within the tx.voidThrows an exception if the tx is not in a COMMITTING statevoidexpire()Expire a transactionvoidfail()Marks the transaction as failed.Get the date this session expiresgetId()Get the transaction idbooleanHas the transaction expired?booleanbooleanisOpen()booleanbooleanbooleanbooleanCheck if the transaction is short-lived.voidlockResource(FedoraId resourceId) Acquires an exclusive lock on the specified resource for this transaction.voidlockResourceAndGhostNodes(FedoraId resourceId) Acquire an exclusive lock on the specified resource and any ghost nodes above it for this transaction.voidlockResourceNonExclusive(FedoraId resourceId) Acquires a non-exclusive lock on the specified resource for this transaction.voidrefresh()Refresh the transaction to extend its expiration window.voidReleases any resource locks held by the transaction if the session is short-lived.voidrollback()Rollback the transactionvoidsetBaseUri(String baseUri) Sets the baseUri on the transactionvoidsetShortLived(boolean shortLived) Set transaction short-lived state.voidsetUserAgent(String userAgent) Sets the user-agent on the transactionvoidAfter invoking, any accumulated events will be suppressed.updateExpiry(Duration amountToAdd) Update the expiry by the provided amount
-
Method Details
-
commit
void commit()Commit the transaction -
commitIfShortLived
void commitIfShortLived()Commit the transaction only if the transaction is shortLived -
isCommitted
boolean isCommitted()- Returns:
- returns true if this transaction has already been committed
-
rollback
void rollback()Rollback the transaction -
fail
void fail()Marks the transaction as failed. Failed transactions cannot be committed but may be rolledback. -
isRolledBack
boolean isRolledBack()- Returns:
- true if this transaction has been rolled back
-
isOpenLongRunning
boolean isOpenLongRunning()- Returns:
- true if the tx is a long-running tx that has not expired and is not in a COMMITTED, ROLLEDBACK, or FAILED state
-
isOpen
boolean isOpen()- Returns:
- true if the tx is in an OPEN state and has not expired
-
ensureCommitting
void ensureCommitting()Throws an exception if the tx is not in a COMMITTING state- Throws:
TransactionRuntimeException- when not in committing
-
isReadOnly
boolean isReadOnly()- Returns:
- true the tx is read-only
-
getId
Get the transaction id- Returns:
- the transaction id.
-
isShortLived
boolean isShortLived()Check if the transaction is short-lived.- Returns:
- is the transaction short-lived.
-
setShortLived
Set transaction short-lived state.- Parameters:
shortLived- boolean true (short-lived) or false (not short-lived)
-
expire
void expire()Expire a transaction -
hasExpired
boolean hasExpired()Has the transaction expired?- Returns:
- true if expired
-
updateExpiry
Update the expiry by the provided amount- Parameters:
amountToAdd- the amount of time to add- Returns:
- the new expiration date
-
getExpires
Get the date this session expires- Returns:
- expiration date, if one exists
-
refresh
void refresh()Refresh the transaction to extend its expiration window. -
lockResource
Acquires an exclusive lock on the specified resource for this transaction.- Parameters:
resourceId- the resource to lock- Throws:
ConcurrentUpdateException- if the lock cannot be acquired
-
lockResourceNonExclusive
Acquires a non-exclusive lock on the specified resource for this transaction.- Parameters:
resourceId- the resource to lock- Throws:
ConcurrentUpdateException- if the lock cannot be acquired
-
lockResourceAndGhostNodes
Acquire an exclusive lock on the specified resource and any ghost nodes above it for this transaction.- Parameters:
resourceId- the resource to lock- Throws:
ConcurrentUpdateException- if the lock cannot be acquired
-
releaseResourceLocksIfShortLived
Releases any resource locks held by the transaction if the session is short-lived. This method should always be called after handling a request, regardless of the outcome, so that any held locks are released immediately without having to wait for the short-lived transaction to expire. -
doInTx
Executes the runnable within the tx. While there are active runnables being executed, the tx may not be committed or rolledback. Runnables may only be executed when the tx is in an OPEN state and has not expired.- Parameters:
runnable- the code to execute within the tx
-
setBaseUri
Sets the baseUri on the transaction- Parameters:
baseUri- the baseUri of the requests
-
setUserAgent
Sets the user-agent on the transaction- Parameters:
userAgent- the request's user-agent
-
suppressEvents
void suppressEvents()After invoking, any accumulated events will be suppressed.
-