Class AbstractThreadLocalTransaction
- java.lang.Object
-
- org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction
-
- org.apache.tinkerpop.gremlin.structure.util.AbstractThreadLocalTransaction
-
- All Implemented Interfaces:
AutoCloseable
,Transaction
public abstract class AbstractThreadLocalTransaction extends AbstractTransaction
A base implementation ofTransaction
that provides core functionality for transaction listeners usingThreadLocal
. In this implementation, the listeners are bound to the current thread of execution (usually the same as the transaction for most graph database implementations). Therefore, whenAbstractTransaction.commit()
is called on a particular thread, the only listeners that get notified are those bound to that thread.- Author:
- Stephen Mallette (http://stephen.genoprime.com)
- See Also:
AbstractThreadedTransaction
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.apache.tinkerpop.gremlin.structure.Transaction
Transaction.CLOSE_BEHAVIOR, Transaction.Exceptions, Transaction.READ_WRITE_BEHAVIOR, Transaction.Status, Transaction.Symbols
-
-
Field Summary
Fields Modifier and Type Field Description protected ThreadLocal<Consumer<Transaction>>
closeConsumerInternal
protected ThreadLocal<Consumer<Transaction>>
readWriteConsumerInternal
protected ThreadLocal<List<Consumer<Transaction.Status>>>
transactionListeners
-
Fields inherited from interface org.apache.tinkerpop.gremlin.structure.Transaction
NO_OP
-
-
Constructor Summary
Constructors Constructor Description AbstractThreadLocalTransaction(Graph g)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addTransactionListener(Consumer<Transaction.Status> listener)
Adds a listener that is called back with a status when a commit or rollback is successful.void
clearTransactionListeners()
Removes all transaction listeners.protected void
doClose()
CalledAbstractTransaction.close()
.protected void
doReadWrite()
CalledAbstractTransaction.readWrite()
.protected void
fireOnCommit()
Called withinAbstractTransaction.commit()
just after the internal call toAbstractTransaction.doCommit()
.protected void
fireOnRollback()
Called withinAbstractTransaction.rollback()
just after the internal call toAbstractTransaction.doRollback()
()}.Transaction
onClose(Consumer<Transaction> consumer)
Describes what happens to a transaction on a call toGraph.close()
.Transaction
onReadWrite(Consumer<Transaction> consumer)
Describes how a transaction is started when a read or a write occurs.void
removeTransactionListener(Consumer<Transaction.Status> listener)
Removes a transaction listener.-
Methods inherited from class org.apache.tinkerpop.gremlin.structure.util.AbstractTransaction
begin, close, commit, createThreadedTx, doCommit, doOpen, doRollback, open, readWrite, rollback
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.tinkerpop.gremlin.structure.Transaction
begin, isOpen
-
-
-
-
Field Detail
-
readWriteConsumerInternal
protected final ThreadLocal<Consumer<Transaction>> readWriteConsumerInternal
-
closeConsumerInternal
protected final ThreadLocal<Consumer<Transaction>> closeConsumerInternal
-
transactionListeners
protected final ThreadLocal<List<Consumer<Transaction.Status>>> transactionListeners
-
-
Constructor Detail
-
AbstractThreadLocalTransaction
public AbstractThreadLocalTransaction(Graph g)
-
-
Method Detail
-
fireOnCommit
protected void fireOnCommit()
Description copied from class:AbstractTransaction
Called withinAbstractTransaction.commit()
just after the internal call toAbstractTransaction.doCommit()
. Implementations of this method should raiseTransaction.Status.COMMIT
events to any listeners added viaTransaction.addTransactionListener(Consumer)
.- Specified by:
fireOnCommit
in classAbstractTransaction
-
fireOnRollback
protected void fireOnRollback()
Description copied from class:AbstractTransaction
Called withinAbstractTransaction.rollback()
just after the internal call toAbstractTransaction.doRollback()
()}. Implementations of this method should raiseTransaction.Status.ROLLBACK
events to any listeners added viaTransaction.addTransactionListener(Consumer)
.- Specified by:
fireOnRollback
in classAbstractTransaction
-
addTransactionListener
public void addTransactionListener(Consumer<Transaction.Status> listener)
Description copied from interface:Transaction
Adds a listener that is called back with a status when a commit or rollback is successful. It is expected that listeners be bound to the current thread as is standard for transactions. Therefore a listener registered in the current thread will not get callback events from a commit or rollback call in a different thread.
-
removeTransactionListener
public void removeTransactionListener(Consumer<Transaction.Status> listener)
Description copied from interface:Transaction
Removes a transaction listener.
-
clearTransactionListeners
public void clearTransactionListeners()
Description copied from interface:Transaction
Removes all transaction listeners.
-
doReadWrite
protected void doReadWrite()
Description copied from class:AbstractTransaction
CalledAbstractTransaction.readWrite()
. Implementers should run their readWrite consumer here.- Specified by:
doReadWrite
in classAbstractTransaction
-
doClose
protected void doClose()
Description copied from class:AbstractTransaction
CalledAbstractTransaction.close()
. Implementers should run their readWrite consumer here.- Specified by:
doClose
in classAbstractTransaction
-
onReadWrite
public Transaction onReadWrite(Consumer<Transaction> consumer)
Description copied from interface:Transaction
Describes how a transaction is started when a read or a write occurs. This value can be set using standard behaviors defined inTransaction.READ_WRITE_BEHAVIOR
or a mapperConsumer
function.
-
onClose
public Transaction onClose(Consumer<Transaction> consumer)
Description copied from interface:Transaction
Describes what happens to a transaction on a call toGraph.close()
. This value can be set using standard behavior defined inTransaction.CLOSE_BEHAVIOR
or a mapperConsumer
function.
-
-