2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
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
9 package org.opendaylight.mdsal.dom.api;
11 import com.google.common.util.concurrent.CheckedFuture;
12 import javax.annotation.Nonnull;
13 import javax.annotation.Nullable;
14 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
15 import org.opendaylight.yangtools.concepts.Identifiable;
18 * Write transaction that provides cursor's with write access to the data tree.
20 public interface DOMDataTreeCursorAwareTransaction extends DOMDataTreeCursorProvider, Identifiable<Object> {
23 * Create a {@link DOMDataTreeWriteCursor} anchored at the specified path.
24 * There can only be one cursor open at a time.
26 * @param path Path at which the cursor is to be anchored
27 * @return write cursor at the desired location.
28 * @throws IllegalStateException when there's an open cursor, or this transaction is closed already.
32 DOMDataTreeWriteCursor createCursor(@Nonnull DOMDataTreeIdentifier path);
35 * Cancels the transaction.
37 * Transactions can only be cancelled if it was not yet submited.
39 * Invoking cancel() on failed or already canceled will have no effect, and transaction is
40 * considered cancelled.
42 * Invoking cancel() on finished transaction (future returned by {@link #submit()} already
43 * successfully completed) will always fail (return false).
45 * @return <tt>false</tt> if the task could not be cancelled, typically because it has already
46 * completed normally; <tt>true</tt> otherwise
52 * Submits this transaction to be asynchronously applied to update the logical data tree. The
53 * returned CheckedFuture conveys the result of applying the data changes.
55 * <b>Note:</b> It is strongly recommended to process the CheckedFuture result in an
56 * asynchronous manner rather than using the blocking get() method.
58 * This call logically seals the transaction, which prevents the client from further changing
59 * data tree using this transaction's cursor. Any subsequent calls to
60 * <code>createCursorCursor(DOMDataTreeIdentifier</code>
61 * or any of the cursor's methods will fail with {@link IllegalStateException}.
63 * The transaction is marked as submitted and enqueued into the shard back-end for
66 * @return Checked future informing of success/failure
68 CheckedFuture<Void,TransactionCommitFailedException> submit();