Mark DataTreeChangeListener for evolution
[mdsal.git] / dom / mdsal-dom-api / src / main / java / org / opendaylight / mdsal / dom / api / DOMDataTreeCursorAwareTransaction.java
index b4abfb2001895afd8a214ca0bcbea6e2c608068a..691b736c606c24af668c1870596cbe510ddbdf7b 100644 (file)
@@ -5,12 +5,11 @@
  * 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.mdsal.dom.api;
 
-import com.google.common.util.concurrent.CheckedFuture;
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
+import com.google.common.util.concurrent.FluentFuture;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
 import org.opendaylight.yangtools.concepts.Identifiable;
 
@@ -27,44 +26,39 @@ public interface DOMDataTreeCursorAwareTransaction extends DOMDataTreeCursorProv
      * @return write cursor at the desired location.
      * @throws IllegalStateException when there's an open cursor, or this transaction is closed already.
      */
-    @Nullable
     @Override
-    DOMDataTreeWriteCursor createCursor(@Nonnull DOMDataTreeIdentifier path);
+    DOMDataTreeWriteCursor createCursor(DOMDataTreeIdentifier path);
 
     /**
      * Cancels the transaction.
-     *
-     * Transactions can only be cancelled if it was not yet submited.
-     *
-     * Invoking cancel() on failed or already canceled will have no effect, and transaction is
+     * A transaction can only be cancelled if it was not yet committed.
+     * Invoking cancel() on a failed or already canceled will have no effect, and transaction is
      * considered cancelled.
+     * Invoking cancel() on a finished transaction (future returned by {@link #commit()} already
+     * successfully completed will always fail (return false).
      *
-     * Invoking cancel() on finished transaction (future returned by {@link #submit()} already
-     * successfully completed) will always fail (return false).
-     *
-     * @return <tt>false</tt> if the task could not be cancelled, typically because it has already
-     *         completed normally; <tt>true</tt> otherwise
-     *
+     * @return {@code false} if the task could not be cancelled, typically because it has already
+     *         completed normally; {@code true} otherwise
      */
     boolean cancel();
 
     /**
      * Submits this transaction to be asynchronously applied to update the logical data tree. The
      * returned CheckedFuture conveys the result of applying the data changes.
+     *
      * <p>
      * <b>Note:</b> It is strongly recommended to process the CheckedFuture result in an
      * asynchronous manner rather than using the blocking get() method.
-     *
      * This call logically seals the transaction, which prevents the client from further changing
      * data tree using this transaction's cursor. Any subsequent calls to
      * <code>createCursorCursor(DOMDataTreeIdentifier</code>
      * or any of the cursor's methods will fail with {@link IllegalStateException}.
-     *
      * The transaction is marked as submitted and enqueued into the shard back-end for
      * processing.
      *
-     * @return Checked future informing of success/failure
+     * @return a FluentFuture containing the result of the commit information. The Future blocks until the commit
+     *         operation is complete. A successful commit returns nothing. On failure, the Future will fail with a
+     *         {@link TransactionCommitFailedException} or an exception derived from TransactionCommitFailedException.
      */
-    CheckedFuture<Void,TransactionCommitFailedException> submit();
-
+    FluentFuture<? extends @NonNull CommitInfo> commit();
 }