e4370c46a04fbc2539796672abc2baf9abeeae1f
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / md / sal / dom / store / impl / tree / DataTreeModification.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.controller.md.sal.dom.store.impl.tree;
9
10 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
11 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
12
13 /**
14  * Class encapsulation of set of modifications to a base tree. This tree is backed
15  * by a read-only snapshot and tracks modifications on top of that. The modification
16  * has the ability to rebase itself to a new snapshot.
17  */
18 public interface DataTreeModification extends DataTreeSnapshot {
19     /**
20      * Delete the node at specified path.
21      *
22      * @param path Node path
23      */
24     void delete(InstanceIdentifier path);
25
26     /**
27      * Merge the specified data with the currently-present data
28      * at specified path.
29      *
30      * @param path Node path
31      * @param data Data to be merged
32      */
33     void merge(InstanceIdentifier path, NormalizedNode<?, ?> data);
34
35     /**
36      * Replace the data at specified path with supplied data.
37      *
38      * @param path Node path
39      * @param data New node data
40      */
41     void write(InstanceIdentifier path, NormalizedNode<?, ?> data);
42
43     /**
44      * Finish creation of a modification, making it ready for application
45      * to the data tree. Any calls to this object's methods will result
46      * in undefined behavior, possibly with an
47      * {@link IllegalStateException} being thrown.
48      */
49     void ready();
50 }