public abstract class ForwardingDataBroker extends com.google.common.collect.ForwardingObject implements DataBroker
DataBroker
implementation which forwards all interface method
invocation to a delegate instance.AsyncDataBroker.DataChangeScope
Constructor and Description |
---|
ForwardingDataBroker() |
Modifier and Type | Method and Description |
---|---|
BindingTransactionChain |
createTransactionChain(TransactionChainListener listener)
Create a new transaction chain.
|
protected abstract DataBroker |
delegate() |
ReadOnlyTransaction |
newReadOnlyTransaction()
Allocates a new read-only transaction which provides an immutable snapshot of
the data tree.
|
ReadWriteTransaction |
newReadWriteTransaction()
Allocates new read-write transaction which provides a mutable view of the data
tree.
|
WriteTransaction |
newWriteOnlyTransaction()
Allocates new write-only transaction based on latest state of data
tree.
|
org.opendaylight.yangtools.concepts.ListenerRegistration<DataChangeListener> |
registerDataChangeListener(LogicalDatastoreType store,
org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path,
DataChangeListener listener,
AsyncDataBroker.DataChangeScope triggeringScope)
Registers a
AsyncDataChangeListener to receive
notifications when data changes under a given path in the conceptual data
tree. |
<T extends org.opendaylight.yangtools.yang.binding.DataObject,L extends DataTreeChangeListener<T>> |
registerDataTreeChangeListener(DataTreeIdentifier<T> treeId,
L listener)
Registers a
DataTreeChangeListener to receive
notifications when data changes under a given path in the conceptual data
tree. |
@Nonnull protected abstract DataBroker delegate()
delegate
in class com.google.common.collect.ForwardingObject
public ReadOnlyTransaction newReadOnlyTransaction()
DataBroker
The view of data tree is an immutable snapshot of current data tree state when transaction was allocated.
newReadOnlyTransaction
in interface DataBroker
newReadOnlyTransaction
in interface TransactionFactory
newReadOnlyTransaction
in interface AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject,DataChangeListener>
newReadOnlyTransaction
in interface AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
public ReadWriteTransaction newReadWriteTransaction()
DataBroker
Preconditions for mutation of data tree are captured from the snapshot of
data tree state, when the transaction is allocated. If data was
changed during transaction in an incompatible way then the commit of this transaction
will fail. See AsyncWriteTransaction.commit()
for more
details about conflicting and not-conflicting changes and
failure scenarios.
newReadWriteTransaction
in interface DataBroker
newReadWriteTransaction
in interface TransactionFactory
newReadWriteTransaction
in interface AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject,DataChangeListener>
newReadWriteTransaction
in interface AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
public WriteTransaction newWriteOnlyTransaction()
DataBroker
Preconditions for mutation of data tree are captured from the snapshot of
data tree state, when the transaction is allocated. If data was
changed during transaction in an incompatible way then the commit of this transaction
will fail. See AsyncWriteTransaction.commit()
for more
details about conflicting and not-conflicting changes and
failure scenarios.
Since this transaction does not provide a view of the data it SHOULD BE
used only by callers which are exclusive writers (exporters of data)
to the subtree they modify. This prevents optimistic
lock failures as described in AsyncWriteTransaction.commit()
.
Exclusivity of writers to particular subtree SHOULD BE enforced by external locking mechanism.
newWriteOnlyTransaction
in interface DataBroker
newWriteOnlyTransaction
in interface TransactionFactory
newWriteOnlyTransaction
in interface AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject,DataChangeListener>
newWriteOnlyTransaction
in interface AsyncDataTransactionFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
public <T extends org.opendaylight.yangtools.yang.binding.DataObject,L extends DataTreeChangeListener<T>> org.opendaylight.yangtools.concepts.ListenerRegistration<L> registerDataTreeChangeListener(DataTreeIdentifier<T> treeId, L listener)
DataTreeChangeService
DataTreeChangeListener
to receive
notifications when data changes under a given path in the conceptual data
tree.
You are able to register for notifications for any node or subtree
which can be represented using DataTreeIdentifier
.
You are able to register for data change notifications for a subtree or leaf even if it does not exist. You will receive notification once that node is created.
If there is any pre-existing data in the data tree for the path for which you are registering, you will receive an initial data change event, which will contain all pre-existing data, marked as created.
This method returns a ListenerRegistration
object. To
"unregister" your listener for changes call the ListenerRegistration.close()
method on the returned object.
You MUST explicitly unregister your listener when you no longer want to receive notifications. This is especially true in OSGi environments, where failure to do so during bundle shutdown can lead to stale listeners being still registered.
registerDataTreeChangeListener
in interface DataTreeChangeService
treeId
- Data tree identifier of the subtree which should be watched for
changes.listener
- Listener instance which is being registeredListenerRegistration.close()
to stop
delivery of change events.public org.opendaylight.yangtools.concepts.ListenerRegistration<DataChangeListener> registerDataChangeListener(LogicalDatastoreType store, org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?> path, DataChangeListener listener, AsyncDataBroker.DataChangeScope triggeringScope)
DataBroker
AsyncDataChangeListener
to receive
notifications when data changes under a given path in the conceptual data
tree.
You are able to register for notifications for any node or subtree which can be reached via the supplied path.
If path type P
allows it, you may specify paths up to the leaf nodes
then it is possible to listen on leaf nodes.
You are able to register for data change notifications for a subtree even if it does not exist. You will receive notification once that node is created.
If there is any preexisting data in data tree on path for which you are registering, you will receive initial data change event, which will contain all preexisting data, marked as created.
You are also able to specify the scope of the changes you want to be notified.
Supported scopes are:
AsyncDataBroker.DataChangeScope.BASE
- notification events will only be
triggered when a node referenced by path is created, removed or replaced.
AsyncDataBroker.DataChangeScope.ONE
- notifications events will only be
triggered when a node referenced by path is created, removed or replaced,
or any or any of its immediate children are created, updated or removed.
AsyncDataBroker.DataChangeScope.SUBTREE
- notification events will be
triggered when a node referenced by the path is created, removed
or replaced or any of the children in its subtree are created, removed
or replaced.
AsyncDataBroker.DataChangeScope
for examples.
This method returns a ListenerRegistration
object. To
"unregister" your listener for changes call the "close" method on this
returned object.
You MUST call close when you no longer need to receive notifications (such as during shutdown or for example if your bundle is shutting down).
registerDataChangeListener
in interface DataBroker
registerDataChangeListener
in interface AsyncDataBroker<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject,DataChangeListener>
store
- Logical Data Store - Logical Datastore you want to listen for
changes in. For example
LogicalDatastoreType.OPERATIONAL
or
LogicalDatastoreType.CONFIGURATION
path
- Path (subtree identifier) on which client listener will be
invoked.listener
- Instance of listener which should be invoked ontriggeringScope
- Scope of change which triggers callback.ListenerRegistration.close()
to stop
delivery of change events.public BindingTransactionChain createTransactionChain(TransactionChainListener listener)
DataBroker
createTransactionChain
in interface DataBroker
createTransactionChain
in interface TransactionChainFactory<org.opendaylight.yangtools.yang.binding.InstanceIdentifier<?>,org.opendaylight.yangtools.yang.binding.DataObject>
listener
- Transaction chain event listenerCopyright © 2019 OpenDaylight. All rights reserved.