public class ForwardingReadWriteTransaction extends com.google.common.collect.ForwardingObject implements ReadWriteTransaction
ReadWriteTransaction
implementation which forwards all interface method
invocation to a delegate instance.CREATE_MISSING_PARENTS, FAIL_ON_MISSING_PARENTS
SUBMIT_EXCEPTION_MAPPER
Modifier | Constructor and Description |
---|---|
protected |
ForwardingReadWriteTransaction(ReadWriteTransaction delegate) |
Modifier and Type | Method and Description |
---|---|
boolean |
cancel()
Cancels the transaction.
|
com.google.common.util.concurrent.FluentFuture<? extends org.opendaylight.mdsal.common.api.CommitInfo> |
commit()
Submits this transaction to be asynchronously applied to update the logical data tree.
|
protected ReadWriteTransaction |
delegate() |
void |
delete(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path)
Removes a piece of data from specified path.
|
com.google.common.util.concurrent.CheckedFuture<Boolean,ReadFailedException> |
exists(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path)
Checks if data is available in the logical data store located at provided path.
|
Object |
getIdentifier() |
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
merge(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data)
Merges a piece of data with the existing data at a specified path.
|
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
merge(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data,
boolean createMissingParents)
Merges a piece of data with the existing data at a specified path.
|
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
put(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data)
Stores a piece of data at the specified path.
|
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
put(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path,
T data,
boolean createMissingParents)
Stores a piece of data at the specified path.
|
<T extends org.opendaylight.yangtools.yang.binding.DataObject> |
read(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path)
Reads data from the provided logical data store located at the provided path.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
submit
protected ForwardingReadWriteTransaction(ReadWriteTransaction delegate)
protected ReadWriteTransaction delegate()
delegate
in class com.google.common.collect.ForwardingObject
public <T extends org.opendaylight.yangtools.yang.binding.DataObject> void put(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data)
WriteTransaction
This method does not automatically create missing parent nodes. It is equivalent to invoking
WriteTransaction.put(LogicalDatastoreType, InstanceIdentifier, DataObject, boolean)
with createMissingParents
set to false.
For more information on usage and examples, please see the documentation in AsyncWriteTransaction
.
If you need to make sure that a parent object exists but you do not want modify
its pre-existing state by using put, consider using WriteTransaction.merge(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>, T)
instead.
put
in interface WriteTransaction
store
- the logical data store which should be modifiedpath
- the data object pathdata
- the data object to be written to the specified pathpublic <T extends org.opendaylight.yangtools.yang.binding.DataObject> void put(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data, boolean createMissingParents)
WriteTransaction
For more information on usage and examples, please see the documentation
in AsyncWriteTransaction
.
If you need to make sure that a parent object exists but you do not want
modify its pre-existing state by using put, consider using WriteTransaction.merge(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>, T)
instead.
Note: Using createMissingParents
with value true, may
introduce garbage in data store, or recreate nodes, which were deleted by
previous transaction.
put
in interface WriteTransaction
store
- the logical data store which should be modifiedpath
- the data object pathdata
- the data object to be written to the specified pathcreateMissingParents
- if WriteTransaction.CREATE_MISSING_PARENTS
(true
), any missing
parent nodes will be automatically created using a merge
operation.public <T extends org.opendaylight.yangtools.yang.binding.DataObject> com.google.common.util.concurrent.CheckedFuture<com.google.common.base.Optional<T>,ReadFailedException> read(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path)
ReadTransaction
If the target is a subtree, then the whole subtree is read (and will be accessible from the returned data object).
read
in interface ReadTransaction
store
- Logical data store from which read should occur.path
- Path which uniquely identifies subtree which client want to
readReadFailedException
or an exception derived from ReadFailedException.public com.google.common.util.concurrent.CheckedFuture<Boolean,ReadFailedException> exists(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path)
ReadTransaction
Note: a successful result from this method makes no guarantee that a subsequent call to ReadTransaction.read(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>)
will succeed. It is possible that the data resides in a data store on a remote node and, if that
node goes down or a network failure occurs, a subsequent read would fail. Another scenario is if
the data is deleted in between the calls to exists
and read
Default implementation delegates to ReadTransaction.read(LogicalDatastoreType, InstanceIdentifier)
, implementations
are advised to provide a more efficient override.
exists
in interface ReadTransaction
store
- Logical data store from which read should occur.path
- Path which uniquely identifies subtree which client want to
check existence ofReadFailedException
or an exception derived from ReadFailedException.public Object getIdentifier()
getIdentifier
in interface AsyncTransaction<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
getIdentifier
in interface org.opendaylight.yangtools.concepts.Identifiable<Object>
public boolean cancel()
AsyncWriteTransaction
Transactions can only be cancelled if it's state is new or submitted.
Invoking cancel() on a failed or cancelled transaction will have no effect, and transaction is considered cancelled.
Invoking cancel() on a finished transaction (future returned by AsyncWriteTransaction.submit()
already completed will always
fail (return false).
cancel
in interface AsyncWriteTransaction<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
public <T extends org.opendaylight.yangtools.yang.binding.DataObject> void merge(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data)
WriteTransaction
This method does not automatically create missing parent nodes. It is equivalent to invoking
WriteTransaction.merge(LogicalDatastoreType, InstanceIdentifier, DataObject, boolean)
with createMissingParents
set to false.
For more information on usage and examples, please see the documentation in AsyncWriteTransaction
.
If you require an explicit replace operation, use WriteTransaction.put(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>, T)
instead.
merge
in interface WriteTransaction
store
- the logical data store which should be modifiedpath
- the data object pathdata
- the data object to be merged to the specified pathpublic <T extends org.opendaylight.yangtools.yang.binding.DataObject> void merge(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T> path, T data, boolean createMissingParents)
WriteTransaction
For more information on usage and examples, please see the documentation
in AsyncWriteTransaction
.
If you require an explicit replace operation, use WriteTransaction.put(org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<T>, T)
instead.
merge
in interface WriteTransaction
store
- the logical data store which should be modifiedpath
- the data object pathdata
- the data object to be merged to the specified pathcreateMissingParents
- if WriteTransaction.CREATE_MISSING_PARENTS
(true
), any missing
parent nodes will be automatically created using a merge
operation.public com.google.common.util.concurrent.FluentFuture<? extends org.opendaylight.mdsal.common.api.CommitInfo> commit()
AsyncWriteTransaction
FluentFuture
conveys the result of applying the data changes.
This call logically seals the transaction, which prevents the client from further changing the data tree using
this transaction. Any subsequent calls to put(LogicalDatastoreType, Path, Object)
,
merge(LogicalDatastoreType, Path, Object)
, delete(LogicalDatastoreType, Path)
will fail
with IllegalStateException
. The transaction is marked as submitted and enqueued into the data store
back-end for processing.
Whether or not the commit is successful is determined by versioning of the data tree and validation of registered commit participants if the transaction changes the data tree.
The effects of a successful commit of data depends on listeners and commit participants that are registered with the data broker.
A successful commit produces implementation-specific CommitInfo
structure, which is used to communicate
post-condition information to the caller. Such information can contain commit-id, timing information or any
other information the implementation wishes to share.
commit
in interface AsyncWriteTransaction<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
TransactionCommitFailedException
or an exception derived from TransactionCommitFailedException.public void delete(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path)
AsyncWriteTransaction
delete
in interface WriteTransaction
delete
in interface AsyncWriteTransaction<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
store
- Logical data store which should be modifiedpath
- Data object pathCopyright © 2019 OpenDaylight. All rights reserved.