/* * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.controller.md.sal.common.api.data; import java.util.Map; import java.util.Set; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.concepts.Path; /** * * An event which contains a capture of changes in a data subtree * *
* Represents a notification indicating that some data at or under a particular * path has changed. The notification contains a capture of the changes in the data * subtree. This event is triggered by successful application of modifications * from a transaction on the global data tree. Use the * {@link AsyncDataBroker#registerDataChangeListener(LogicalDatastoreType, Path, AsyncDataChangeListener, AsyncDataBroker.DataChangeScope)} * method to register a listener for data change events. * *
* A listener will only receive notifications for changes to data under the path * they register for. See * {@link AsyncDataBroker#registerDataChangeListener(LogicalDatastoreType, Path, AsyncDataChangeListener, AsyncDataBroker.DataChangeScope)} * to learn more about registration scopes. * *
* The entire subtree under the path will be provided via instance methods of Data * Change Event even if just a leaf node changes. * *
* Implementation Note: This interface is not intended to be implemented * by users of MD-SAL, but only to be consumed by them. * * @param
* Type of path (subtree identifier), which represents location in
* tree
* @param , D> extends Immutable {
/**
* Returns a map of paths and newly created objects, which were introduced by
* this change into conceptual data tree, if no new objects were introduced
* this map will be empty.
*
* This map contains all data tree nodes (and paths to them) which were created
* and are in the scope of listener registration. The data tree nodes
* contain their whole subtree with their current state.
*
* @return map of paths and newly created objects
*/
Map getCreatedData();
/**
* Returns a map of paths and objects which were updated by this change in the
* conceptual data tree if no existing objects were updated
* this map will be empty.
*
* This map contains all data tree nodes (and paths to them) which were updated
* and are in the scope of listener registration. The data tree nodes
* contain their whole subtree with their current state.
*
* A Node is considered updated if it contents were replaced or one of its
* children was created, removed or updated.
*
* Original state of the updated data tree nodes is in
* {@link #getOriginalData()} stored with same path.
*
* @return map of paths and newly created objects
*/
Map getUpdatedData();
/**
* Returns an immutable set of removed paths.
*
* This set contains the paths to the data tree nodes which are in the scope
* of the listener registration that have been removed.
*
* Original state of the removed data tree nodes is in
* {@link #getOriginalData()} stored with same path.
*
* @return set of removed paths
*/
Set getRemovedPaths();
/**
* Returns an immutable map of updated or removed paths and their original
* states prior to this change.
*
*
* This map contains the original version of the data tree nodes (and paths
* to them), which are in the scope of the listener registration.
*
* @return map of paths and original state of updated and removed objects.
*/
Map getOriginalData();
/**
* Returns an immutable stable view of data state, which captures the state of
* data store before the reported change.
*
*
* The view is rooted at the point where the listener, to which the event is
* being delivered, was registered.
*
* If listener used a wildcarded path (if supported by path type) during
* registration for change listeners this method returns null, and original
* state can be accessed only via {@link #getOriginalData()}
*
* @return Stable view of data before the change happened, rooted at the
* listener registration path.
*
*/
D getOriginalSubtree();
/**
* Returns an immutable stable view of data, which captures the state of data
* store after the reported change.
*
* The view is rooted at the point where the listener, to which the event is
* being delivered, was registered.
*
* If listener used a wildcarded path (if supported by path type) during
* registration for change listeners this method returns null, and state
* can be accessed only via {@link #getCreatedData()},
* {@link #getUpdatedData()}, {@link #getRemovedPaths()}
*
* @return Stable view of data after the change happened, rooted at the
* listener registration path.
*/
D getUpdatedSubtree();
}