X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fapi%2FWriteTransaction.java;h=a6ba2e2799b99f884c119dae6ef67e44bd85a562;hb=a54ec60368110d22794602343c934902f6833c65;hp=044a700d84f26b968cb29f6fe3cd6a80e0dbf0ec;hpb=3223221fb635ce6b5918df4a60984a22306fc194;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/WriteTransaction.java b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/WriteTransaction.java index 044a700d84..a6ba2e2799 100644 --- a/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/WriteTransaction.java +++ b/opendaylight/md-sal/sal-binding-api/src/main/java/org/opendaylight/controller/md/sal/binding/api/WriteTransaction.java @@ -22,6 +22,10 @@ public interface WriteTransaction extends AsyncWriteTransaction + * This method does not automatically create missing parent nodes. It is equivalent to invoking + * {@link #put(LogicalDatastoreType, InstanceIdentifier, DataObject, boolean)} + * with createMissingParents set to false. *

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

@@ -39,15 +43,50 @@ public interface WriteTransaction extends AsyncWriteTransaction void put(LogicalDatastoreType store, InstanceIdentifier path, T data); + + /** + * 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. + * + * Note: Using createMissingParents with value true, may + * introduce garbage in data store, or recreate nodes, which were deleted by + * previous transaction. + * + * @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 + * @param createMissingParents + * if true, any missing parent nodes will be automatically + * created using a merge operation. + * @throws IllegalStateException + * if the transaction has already been submitted + */ + void put(LogicalDatastoreType store, InstanceIdentifier path, T data, + boolean createMissingParents); + /** * 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. *

+ * This method does not automatically create missing parent nodes. It is equivalent to invoking + * {@link #merge(LogicalDatastoreType, InstanceIdentifier, DataObject, boolean)} + * with createMissingParents set to false. + *

* 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 @@ -59,6 +98,31 @@ public interface WriteTransaction extends AsyncWriteTransaction void merge(LogicalDatastoreType store, InstanceIdentifier path, T 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 + * @param createMissingParents + * if true, any missing parent nodes will be automatically created + * using a merge operation. + * @throws IllegalStateException + * if the transaction has already been submitted + */ + void merge(LogicalDatastoreType store, InstanceIdentifier path, T data, + boolean createMissingParents); + @Override void delete(LogicalDatastoreType store, InstanceIdentifier path); }