BUG-865: deprecate recursive node instantiation
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / tree / DataTreeModification.java
index 8b0dc2e27cce5f09d0dea6eebe6c18a17e966a80..1ee737805710a1954d03bc89b6fe2395f743599a 100644 (file)
@@ -7,7 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.data.api.schema.tree;
 
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
+import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 /**
@@ -21,7 +22,7 @@ public interface DataTreeModification extends DataTreeSnapshot {
      *
      * @param path Node path
      */
-    void delete(InstanceIdentifier path);
+    void delete(YangInstanceIdentifier path);
 
     /**
      * Merge the specified data with the currently-present data
@@ -30,7 +31,7 @@ public interface DataTreeModification extends DataTreeSnapshot {
      * @param path Node path
      * @param data Data to be merged
      */
-    void merge(InstanceIdentifier path, NormalizedNode<?, ?> data);
+    void merge(YangInstanceIdentifier path, NormalizedNode<?, ?> data);
 
     /**
      * Replace the data at specified path with supplied data.
@@ -38,13 +39,24 @@ public interface DataTreeModification extends DataTreeSnapshot {
      * @param path Node path
      * @param data New node data
      */
-    void write(InstanceIdentifier path, NormalizedNode<?, ?> data);
+    void write(YangInstanceIdentifier path, NormalizedNode<?, ?> data);
 
     /**
      * Finish creation of a modification, making it ready for application
-     * to the data tree. Any calls to this object's methods will result
+     * to the data tree. Any calls to this object's methods except
+     * {@link #applyToCursor(DataTreeModificationCursor)} will result
      * in undefined behavior, possibly with an
      * {@link IllegalStateException} being thrown.
      */
     void ready();
+
+    /**
+     * Apply the contents of this modification to a cursor. This can be used
+     * to replicate this modification onto another one. The cursor's position
+     * must match the root of this modification, otherwise performing this
+     * operation will result in undefined behavior.
+     *
+     * @param cursor cursor to which this modification
+     */
+    void applyToCursor(@Nonnull DataTreeModificationCursor cursor);
 }