/* * 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 * Type of data (payload), which represents data payload */ public interface AsyncDataChangeEvent

, 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(); }