X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fdata%2FAsyncDataBroker.java;h=8b62fd25e805421462ec1dc41dfc09c0601d8d28;hb=ea4f0324d3384918491ed9cc844f53a918a541e8;hp=fb429e5fd1342c0ca675040a315c1b8ad76456c7;hpb=2a35e5ab8c3300757a425841d017097c1fa31e68;p=controller.git diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataBroker.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataBroker.java index fb429e5fd1..8b62fd25e8 100644 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataBroker.java +++ b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncDataBroker.java @@ -12,14 +12,11 @@ import org.opendaylight.yangtools.concepts.Path; /** * - * Provides access to a conceptual data tree store. + * Base interface that provides access to a conceptual data tree store and also provides the ability to + * subscribe for changes to data under a given branch of the tree. * *
- * Also provides the ability to subscribe for changes to data under a given - * branch of the tree. - * - *
- * All operations on data tree are performed via one of the transactions: + * All operations on the data tree are performed via one of the transactions: *
, D, L extends AsyncDataChange public enum DataChangeScope { /** - * Represents only a direct change of the node, such as replacement of a - * node, addition or deletion. + * Represents only a direct change of the node, such as replacement of a node, addition or + * deletion. Note that, as described in {@link #ONE}, this may have counterintuitive + * interactions when viewed from a binding aware application, in particular when it + * pertains to lists. * */ BASE, /** - * Represent a change (addition,replacement,deletion) of the node or one - * of its direct children. + * Represent a change (addition,replacement,deletion) of the node or one of its direct + * children. + *
+ * Note that this is done in the binding independent data tree and so the behavior + * might be counterintuitive when used with binding aware interfaces particularly + * when it comes to lists. The list itself is a node in the binding independent tree, + * which means that if you want to listen on new elements you must listen on the list itself + * with the scope of {@link #ONE}. + *
+ * As an example, in the below YANG snippet, listening on node with scope + * {@link #ONE} would tell you if the node-connector list was created or deleted, + * but not when elements were added or removed from the list assuming the list itself + * already existed. + * + *
+ * container nodes { + * list node { + * key "id"; + * leaf id { + * type string; + * } + * list node-connector { + * leaf id { + * type string; + * } + * } + * } + * } + ** * This scope is superset of {@link #BASE}. * @@ -133,7 +159,7 @@ public interface AsyncDataBroker
, D, L extends AsyncDataChange * {@inheritDoc} */ @Override - public AsyncReadTransaction
newReadOnlyTransaction(); + public AsyncReadOnlyTransaction
newReadOnlyTransaction(); /** * {@inheritDoc}