import java.util.Collection;
import java.util.EventListener;
-import javax.annotation.Nonnull;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.binding.DataObject;
/**
* Interface implemented by classes interested in receiving notifications about
- * data tree changes. This interface differs from {@link DataChangeListener}
- * in that it provides a cursor-based view of the change, which has potentially
+ * data tree changes. This interface provides a cursor-based view of the change, which has potentially
* lower overhead and allow more flexible consumption of change event.
+ *
+ * <p>
+ * Note: this interface enables notifications only at the leader of the data store, if clustered. If you want
+ * notifications on all instances in a cluster, use the {@link ClusteredDataTreeChangeListener}.
*/
-public interface DataTreeChangeListener extends EventListener {
+public interface DataTreeChangeListener<T extends DataObject> extends EventListener {
/**
* Invoked when there was data change for the supplied path, which was used
* to register this listener.
* to recover from such events. Event producers are expected to exert reasonable
* effort to suppress such events.
*
+ * <p>
* In other words, it is completely acceptable to observe
* a {@link DataObjectModification}, while the state observed before and
* after- data items compare as equal.
*
* @param changes Collection of change events, may not be null or empty.
*/
- void onDataTreeChanged(@Nonnull Collection<DataTreeModification> changes);
+ void onDataTreeChanged(@NonNull Collection<DataTreeModification<T>> changes);
}