Update CursorAwareDataTree{Modification,Snapshot} API
[yangtools.git] / yang / yang-data-api / src / main / java / org / opendaylight / yangtools / yang / data / api / schema / tree / CursorAwareDataTreeModification.java
index 9154d0a273a011613d4a77d6e3d526157b4a65f1..e03056ea989413938ba06276f4b03461e0da450e 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.yangtools.yang.data.api.schema.tree;
 
 import com.google.common.annotations.Beta;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -21,12 +22,38 @@ public interface CursorAwareDataTreeModification extends DataTreeModification, C
      * Create a new {@link DataTreeModificationCursor} at specified path. May fail
      * if specified path does not exist. It is a programming error to use normal
      *
-     *
      * @param path Path at which the cursor is to be anchored
      * @return A new cursor, or null if the path does not exist.
      * @throws IllegalStateException if there is another cursor currently open,
      *                               or the modification is already {@link #ready()}.
+     * @deprecated Use {@link #openCursor(YangInstanceIdentifier)} instead.
      */
+    @Deprecated
     @Override
     @Nullable DataTreeModificationCursor createCursor(@Nonnull YangInstanceIdentifier path);
+
+    /**
+     * Create a new {@link DataTreeModificationCursor} at specified path. May fail
+     * if specified path does not exist.
+     *
+     * @param path Path at which the cursor is to be anchored
+     * @return A new cursor, or empty if the path does not exist.
+     * @throws IllegalStateException if there is another cursor currently open,
+     *                               or the modification is already {@link #ready()}.
+     */
+    @Override
+    default Optional<? extends DataTreeModificationCursor> openCursor(@Nonnull final YangInstanceIdentifier path) {
+        return Optional.ofNullable(createCursor(path));
+    }
+
+    /**
+     * Create a new {@link DataTreeModificationCursor} at the root of the modification.
+     *
+     * @return A new cursor
+     * @throws IllegalStateException if there is another cursor currently open.
+     */
+    @Override
+    default DataTreeModificationCursor openCursor() {
+        return openCursor(YangInstanceIdentifier.EMPTY).get();
+    }
 }