X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fapi%2FDOMDataWriteTransaction.java;h=b8fe26387bf59bcd8d7c06d797b53a8f01c72cb5;hp=9415973de5af3e0ec49d144ab3d5e541948580ac;hb=2585706cfb4d3fff8538535212032511388bee07;hpb=721b580748cb93b3dac952ff1f111d0ab0da0c79 diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataWriteTransaction.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataWriteTransaction.java index 9415973de5..b8fe26387b 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataWriteTransaction.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMDataWriteTransaction.java @@ -8,9 +8,54 @@ package org.opendaylight.controller.md.sal.dom.api; import org.opendaylight.controller.md.sal.common.api.data.AsyncWriteTransaction; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -public interface DOMDataWriteTransaction extends AsyncWriteTransaction> { +/** + * A transaction that provides mutation capabilities on a data tree. + *

+ * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}. + */ +public interface DOMDataWriteTransaction extends AsyncWriteTransaction> { + + /** + * Stores a piece of data at the specified path. This acts as an add / replace + * operation, which is to say that whole subtree will be replaced by the specified data. + *

+ * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}. + *

+ * If you need to make sure that a parent object exists but you do not want modify + * its pre-existing state by using put, consider using {@link #merge} instead. + * + * @param store + * the logical data store which should be modified + * @param path + * the data object path + * @param data + * the data object to be written to the specified path + * @throws IllegalStateException + * if the transaction has already been submitted + */ + void put(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode data); + /** + * Merges a piece of data with the existing data at a specified path. Any pre-existing data + * which is not explicitly overwritten will be preserved. This means that if you store a container, + * its child lists will be merged. + *

+ * For more information on usage and examples, please see the documentation in {@link AsyncWriteTransaction}. + *

+ * If you require an explicit replace operation, use {@link #put} instead. + * + * @param store + * the logical data store which should be modified + * @param path + * the data object path + * @param data + * the data object to be merged to the specified path + * @throws IllegalStateException + * if the transaction has already been submitted + */ + void merge(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode data); }