X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fdata%2FAsyncReadWriteTransaction.java;fp=opendaylight%2Fmd-sal%2Fsal-common-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fapi%2Fdata%2FAsyncReadWriteTransaction.java;h=0000000000000000000000000000000000000000;hp=5babd8c78f70b08100ecc49178bede267c5b657e;hb=2611e6a728e586ea34dd891f30a473bf54d6cbd8;hpb=aaea3e9a92ae9d6fac04c4a065db4b35cbca9ed0 diff --git a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncReadWriteTransaction.java b/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncReadWriteTransaction.java deleted file mode 100644 index 5babd8c78f..0000000000 --- a/opendaylight/md-sal/sal-common-api/src/main/java/org/opendaylight/controller/md/sal/common/api/data/AsyncReadWriteTransaction.java +++ /dev/null @@ -1,142 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * 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.controller.md.sal.common.api.data; - -import org.opendaylight.yangtools.concepts.Path; - -/** - * Transaction enabling a client to have a combined read/write capabilities. - * - *

- * The initial state of the write transaction is stable snapshot of current data tree - * state captured when transaction was created and it's state and underlying - * data tree are not affected by other concurrently running transactions. - * - *

- * Write transactions are isolated from other concurrent write transactions. All - * writes are local to the transaction and represents only a proposal of state - * change for data tree and it is not visible to any other concurrently running - * transactions. - * - *

- * Applications publish the changes proposed in the transaction by calling {@link #submit} - * on the transaction. This seals the transaction - * (preventing any further writes using this transaction) and submits it to be - * processed and applied to global conceptual data tree. - * - *

- * The transaction commit may fail due to a concurrent transaction modifying and committing data in - * an incompatible way. See {@link #submit()} for more concrete commit failure examples. - * - * Implementation Note: This interface is not intended to be implemented - * by users of MD-SAL, but only to be consumed by them. - * - *

Examples

- * - *

Transaction local state

- * - *

- * Let assume initial state of data tree for PATH is A - * . - * - *

- * txWrite = broker.newReadWriteTransaction(); // concurrent write transaction
- *
- * txWrite.read(OPERATIONAL,PATH).get()        // will return Optional containing A
- * txWrite.put(OPERATIONAL,PATH,B);            // writes B to PATH
- * txWrite.read(OPERATIONAL,PATH).get()        // will return Optional Containing B
- *
- * txWrite.commit().get();                     // data tree is updated, PATH contains B
- *
- * tx1afterCommit = broker.newReadOnlyTransaction(); // read Transaction is snapshot of new state
- * tx1afterCommit.read(OPERATIONAL,PATH).get(); // returns Optional containing B
- * 
- * - *

- * As you could see read-write transaction provides capabilities as - * {@link AsyncWriteTransaction} but also allows for reading proposed changes as - * if they already happened. - * - *

Transaction isolation (read transaction, read-write transaction)

Let - * assume initial state of data tree for PATH is A. - * - *
- * txRead = broker.newReadOnlyTransaction();   // read Transaction is snapshot of data
- * txWrite = broker.newReadWriteTransaction(); // concurrent write transaction
- *
- * txRead.read(OPERATIONAL,PATH).get();        // will return Optional containing A
- * txWrite.read(OPERATIONAL,PATH).get()        // will return Optional containing A
- *
- * txWrite.put(OPERATIONAL,PATH,B);            // writes B to PATH
- * txWrite.read(OPERATIONAL,PATH).get()        // will return Optional Containing B
- *
- * txRead.read(OPERATIONAL,PATH).get();        // concurrent read transaction still returns
- *                                             // Optional containing A
- *
- * txWrite.commit().get();                     // data tree is updated, PATH contains B
- * txRead.read(OPERATIONAL,PATH).get();        // still returns Optional containing A
- *
- * tx1afterCommit = broker.newReadOnlyTransaction(); // read Transaction is snapshot of new state
- * tx1afterCommit.read(OPERATIONAL,PATH).get(); // returns Optional containing B
- * 
- * - *

Transaction isolation (2 concurrent read-write transactions)

Let - * assume initial state of data tree for PATH is A. - * - *
- * tx1 = broker.newReadWriteTransaction(); // read Transaction is snapshot of data
- * tx2 = broker.newReadWriteTransaction(); // concurrent write transaction
- *
- * tx1.read(OPERATIONAL,PATH).get();       // will return Optional containing A
- * tx2.read(OPERATIONAL,PATH).get()        // will return Optional containing A
- *
- * tx2.put(OPERATIONAL,PATH,B);            // writes B to PATH
- * tx2.read(OPERATIONAL,PATH).get()        // will return Optional Containing B
- *
- * tx1.read(OPERATIONAL,PATH).get();       // tx1 read-write transaction still sees Optional
- *                                         // containing A since is isolated from tx2
- * tx1.put(OPERATIONAL,PATH,C);            // writes C to PATH
- * tx1.read(OPERATIONAL,PATH).get()        // will return Optional Containing C
- *
- * tx2.read(OPERATIONAL,PATH).get()        // tx2 read-write transaction still sees Optional
- *                                         // containing B since is isolated from tx1
- *
- * tx2.commit().get();                     // data tree is updated, PATH contains B
- * tx1.read(OPERATIONAL,PATH).get();       // still returns Optional containing C since is isolated from tx2
- *
- * tx1afterCommit = broker.newReadOnlyTransaction(); // read Transaction is snapshot of new state
- * tx1afterCommit.read(OPERATIONAL,PATH).get(); // returns Optional containing B
- *
- * tx1.commit()                            // Will fail with OptimisticLockFailedException
- *                                         // which means concurrent transaction changed the same PATH
- *
- * 
- * - *

- * Note: examples contains blocking calls on future only to illustrate - * that action happened after other asynchronous action. Use of blocking call - * {@link com.google.common.util.concurrent.ListenableFuture#get()} is discouraged for most uses and you should - * use {@link com.google.common.util.concurrent.Futures#addCallback(com.google.common.util.concurrent.ListenableFuture, - * com.google.common.util.concurrent.FutureCallback, java.util.concurrent.Executor)} - * or other functions from {@link com.google.common.util.concurrent.Futures} to - * register more specific listeners. - * - * @see AsyncReadTransaction - * @see AsyncWriteTransaction - * - * @param

- * Type of path (subtree identifier), which represents location in - * tree - * @param - * Type of data (payload), which represents data payload - */ -@Deprecated(forRemoval = true) -public interface AsyncReadWriteTransaction

, D> extends AsyncReadTransaction, - AsyncWriteTransaction { - -}