BUG-2882: introduce cursor-based modification API
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / tree / DataTreeModification.java
index 2d11f106b079391d86f283c34faadfa463b44abf..1ee737805710a1954d03bc89b6fe2395f743599a 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.data.api.schema.tree;
 
+import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -42,9 +43,20 @@ public interface DataTreeModification extends DataTreeSnapshot {
 
     /**
      * 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);
 }