2 * Copyright (c) 2014 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
8 package org.opendaylight.mdsal.dom.api;
10 import com.google.common.util.concurrent.FluentFuture;
11 import javax.annotation.CheckReturnValue;
12 import org.eclipse.jdt.annotation.NonNull;
13 import org.opendaylight.mdsal.common.api.AsyncWriteTransaction;
14 import org.opendaylight.mdsal.common.api.CommitInfo;
15 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
16 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
17 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
20 * A transaction that provides mutation capabilities on a data tree.
23 * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}.
25 public interface DOMDataTreeWriteTransaction extends DOMDataTreeTransaction,
26 AsyncWriteTransaction<YangInstanceIdentifier, NormalizedNode<?, ?>> {
28 * Stores a piece of data at the specified path. This acts as an add / replace
29 * operation, which is to say that whole subtree will be replaced by the specified data.
32 * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}.
35 * If you need to make sure that a parent object exists but you do not want modify
36 * its pre-existing state by using put, consider using {@link #merge} instead.
39 * the logical data store which should be modified
41 * the data object path
43 * the data object to be written to the specified path
44 * @throws IllegalStateException
45 * if the transaction has already been submitted
47 void put(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode<?, ?> data);
50 * Merges a piece of data with the existing data at a specified path. Any pre-existing data
51 * which is not explicitly overwritten will be preserved. This means that if you store a container,
52 * its child lists will be merged.
55 * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}.
58 * If you require an explicit replace operation, use {@link #put} instead.
61 * the logical data store which should be modified
63 * the data object path
65 * the data object to be merged to the specified path
66 * @throws IllegalStateException
67 * if the transaction has already been submitted
69 void merge(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode<?, ?> data);
72 void delete(LogicalDatastoreType store, YangInstanceIdentifier path);
76 @NonNull FluentFuture<? extends @NonNull CommitInfo> commit();