Change DOM read/exists to FluentFuture 27/74127/9
authorTom Pantelis <tompantelis@gmail.com>
Tue, 17 Jul 2018 14:59:02 +0000 (10:59 -0400)
committerRobert Varga <nite@hq.sk>
Wed, 18 Jul 2018 22:24:18 +0000 (22:24 +0000)
CheckedFuture is deprecated. The only user(s) is in controller -
companion patch is https://git.opendaylight.org/gerrit/#/c/74128/.
This breaks the controller so either we merge them together or
coordinate one after the other with a (hopefully) short breakage window.

Change-Id: If69281a6a6710974c5625b2e09a09df611409129
Signed-off-by: Tom Pantelis <tompantelis@gmail.com>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
28 files changed:
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/AbstractForwardedTransaction.java
binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/impl/transaction/BindingDOMTransactionChainAdapter.java
binding2/mdsal-binding2-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/javav2/dom/adapter/spi/AbstractForwardedTransaction.java
dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeListeningException.java
dom/mdsal-dom-api/src/main/java/org/opendaylight/mdsal/dom/api/DOMDataTreeReadTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMDataBrokerTransactionChainImpl.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedReadOnlyTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/DOMForwardedReadWriteTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMReadTransactionAdapter.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMReadWriteTransactionAdapter.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapter.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/TransactionChainReadTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/TransactionChainReadWriteTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/TransactionChainWriteTransaction.java
dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/pingpong/PingPongTransactionChain.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMBrokerTest.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/DOMTransactionChainTest.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMReadTransactionAdapterTest.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/ShardedDOMTransactionChainAdapterTest.java
dom/mdsal-dom-broker/src/test/java/org/opendaylight/mdsal/dom/broker/TransactionChainReadTransactionTest.java
dom/mdsal-dom-inmemory-datastore/src/test/java/org/opendaylight/controller/md/sal/dom/store/impl/InMemoryDataStoreTest.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMDataReadOnlyTransaction.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/ForwardingDOMDataReadWriteTransaction.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/DOMStoreReadTransaction.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransaction.java
dom/mdsal-dom-spi/src/main/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransaction.java
dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadTransactionTest.java
dom/mdsal-dom-spi/src/test/java/org/opendaylight/mdsal/dom/spi/store/SnapshotBackedReadWriteTransactionTest.java

index 2a912978522bbb0d30de5434ba5d888b2ba395c2..f58ad797bc66182f4ebb2b5d0c11ee34a5934701 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.mdsal.binding.dom.adapter;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
 import org.opendaylight.mdsal.common.api.AsyncTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
@@ -60,7 +59,8 @@ abstract class AbstractForwardedTransaction<T extends AsyncTransaction<YangInsta
             final InstanceIdentifier<D> path) {
         Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path);
 
-        return FluentFuture.from(Futures.transform(readTx.read(store, codec.toYangInstanceIdentifierBlocking(path)),
-                codec.deserializeFunction(path), MoreExecutors.directExecutor()));
+        return readTx.read(store, codec.toYangInstanceIdentifierBlocking(path))
+                .transform(Optional::fromJavaUtil, MoreExecutors.directExecutor())
+                .transform(codec.deserializeFunction(path), MoreExecutors.directExecutor());
     }
 }
index 5566b85dc0394986e5b3dce0b090035e4d2bc456..b4516ac7feac5ed47b022f08ce1f354f030e7ec6 100644 (file)
@@ -11,8 +11,6 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.binding.javav2.api.BindingTransactionChain;
@@ -85,8 +83,8 @@ public final class BindingDOMTransactionChainAdapter
         throw new UnsupportedOperationException();
     }
 
-    private <T, F extends ListenableFuture<T>> F listenForFailure(final WriteTransaction tx, final F future) {
-        Futures.addCallback(future, new FutureCallback<T>() {
+    private <T, F extends FluentFuture<T>> F listenForFailure(final WriteTransaction tx, final F future) {
+        future.addCallback(new FutureCallback<T>() {
             @Override
             public void onFailure(final Throwable throwable) {
                 failTransactionChain(tx, throwable);
index f8ccbd631bdfbe7718ea1b2ed95d952a2ebe97e1..50ae0156d04fc6bae186a486eb5e76a3bb34b0b4 100644 (file)
@@ -11,7 +11,7 @@ import com.google.common.annotations.Beta;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.MoreExecutors;
 import javax.annotation.Nonnull;
 import org.opendaylight.mdsal.binding.javav2.dom.codec.impl.BindingToNormalizedNodeCodec;
 import org.opendaylight.mdsal.binding.javav2.spec.base.InstanceIdentifier;
@@ -72,8 +72,8 @@ public abstract class AbstractForwardedTransaction<
             final InstanceIdentifier<D> path) {
         Preconditions.checkArgument(!path.isWildcarded(), "Invalid read of wildcarded path %s", path);
 
-        return MappingCheckedFuture
-                .create(Futures.transform(readTx.read(store, codec.toYangInstanceIdentifierBlocking(path)),
-                        codec.deserializeFunction(path)), ReadFailedException.MAPPER);
+        return MappingCheckedFuture.create(readTx.read(store, codec.toYangInstanceIdentifierBlocking(path))
+            .transform(Optional::fromJavaUtil, MoreExecutors.directExecutor())
+            .transform(codec.deserializeFunction(path), MoreExecutors.directExecutor()), ReadFailedException.MAPPER);
     }
 }
index e72a8554f80cb43f2d067fce084887dc994256e3..f04be46a11d127939255ec52292415f8aa43670d 100644 (file)
@@ -7,11 +7,13 @@
  */
 package org.opendaylight.mdsal.dom.api;
 
+import org.opendaylight.mdsal.common.api.ReadFailedException;
+
 /**
  * Base exception for various causes why and {@link DOMDataTreeListener}
  * may be terminated by the {@link DOMDataTreeService} implementation.
  */
-public class DOMDataTreeListeningException extends Exception {
+public class DOMDataTreeListeningException extends ReadFailedException {
     private static final long serialVersionUID = 1L;
 
     public DOMDataTreeListeningException(final String message) {
index 1840f2113c491bf40db80c49d0b2626d8a62c505..736a88d57dd36439c8ccff3bbe9371aeef6d9459 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.mdsal.dom.api;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.AsyncReadTransaction;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
@@ -35,7 +35,7 @@ public interface DOMDataTreeReadTransaction extends AsyncReadTransaction<YangIns
      * @param path
      *            Path which uniquely identifies subtree which client want to
      *            read
-     * @return a CheckFuture containing the result of the read. The Future blocks until the
+     * @return a FluentFuture containing the result of the read. The Future blocks until the
      *         commit operation is complete. Once complete:
      *         <ul>
      *         <li>If the data at the supplied path exists, the Future returns an Optional object
@@ -46,8 +46,7 @@ public interface DOMDataTreeReadTransaction extends AsyncReadTransaction<YangIns
      *         {@link ReadFailedException} or an exception derived from ReadFailedException.</li>
      *         </ul>
      */
-    CheckedFuture<Optional<NormalizedNode<?,?>>, ReadFailedException> read(
-            LogicalDatastoreType store, YangInstanceIdentifier path);
+    FluentFuture<Optional<NormalizedNode<?,?>>> read(LogicalDatastoreType store, YangInstanceIdentifier path);
 
     /**
      * Checks if data is available in the logical data store located at provided path.
@@ -63,7 +62,7 @@ public interface DOMDataTreeReadTransaction extends AsyncReadTransaction<YangIns
      * @param path
      *            Path which uniquely identifies subtree which client want to
      *            check existence of
-     * @return a CheckFuture containing the result of the check.
+     * @return a FluentFuture containing the result of the check.
      *         <ul>
      *         <li>If the data at the supplied path exists, the Future returns a Boolean
      *         whose value is true, false otherwise</li>
@@ -71,7 +70,5 @@ public interface DOMDataTreeReadTransaction extends AsyncReadTransaction<YangIns
      *         {@link ReadFailedException} or an exception derived from ReadFailedException.</li>
      *         </ul>
      */
-    CheckedFuture<Boolean, ReadFailedException> exists(
-        LogicalDatastoreType store, YangInstanceIdentifier path);
-
+    FluentFuture<Boolean> exists(LogicalDatastoreType store, YangInstanceIdentifier path);
 }
index 0551244a89dd1ba68ab4ebfc74f2ac95c4bb3b40..32c98be7971d624c2418b15a114aeb8acf4bb019 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.mdsal.dom.broker;
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Collection;
 import java.util.Map;
@@ -91,15 +90,15 @@ final class DOMDataBrokerTransactionChainImpl extends AbstractDOMForwardedTransa
     }
 
     @Override
-    protected FluentFuture<? extends CommitInfo> commit(DOMDataTreeWriteTransaction transaction,
-            Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
+    protected FluentFuture<? extends CommitInfo> commit(final DOMDataTreeWriteTransaction transaction,
+            final Collection<DOMStoreThreePhaseCommitCohort> cohorts) {
         checkNotFailed();
         checkNotClosed();
 
         final FluentFuture<? extends CommitInfo> ret = broker.commit(transaction, cohorts);
 
         COUNTER_UPDATER.incrementAndGet(this);
-        Futures.addCallback(ret, new FutureCallback<CommitInfo>() {
+        ret.addCallback(new FutureCallback<CommitInfo>() {
             @Override
             public void onSuccess(final CommitInfo result) {
                 transactionCompleted();
index 09777a23face3b64b79a23f52c2c2b387de79ddb..a4cbd5d3d1e3e5519ae0932fee8a8b14b78831b3 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
 import java.util.Map;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -33,15 +32,13 @@ class DOMForwardedReadOnlyTransaction extends
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?,?>>, ReadFailedException> read(
-            final LogicalDatastoreType store, final YangInstanceIdentifier path) {
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
+            final YangInstanceIdentifier path) {
         return getSubtransaction(store).read(path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(
-        final LogicalDatastoreType store,
-        final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         return getSubtransaction(store).exists(path);
     }
 
index efeab63ea2f2ec7d134c1d45864e374f86ad154c..ae66a540ad79b9d2b3768bf5d8f06f53efdef8c1 100644 (file)
@@ -7,11 +7,10 @@
  */
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
 import java.util.Map;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -46,14 +45,13 @@ final class DOMForwardedReadWriteTransaction extends DOMForwardedWriteTransactio
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(final LogicalDatastoreType store,
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
         return getSubtransaction(store).read(path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-            final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         return getSubtransaction(store).exists(path);
     }
 
index 82371752e5d501b63cba4f951d679ccb29617ffe..a877d88c15f8e3eb47d34a591985b626168c04f7 100644 (file)
@@ -8,23 +8,19 @@
 
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import javax.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeListener;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeListeningException;
@@ -72,7 +68,7 @@ public class ShardedDOMReadTransactionAdapter implements DOMDataTreeReadTransact
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(final LogicalDatastoreType store,
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
         checkRunning();
         LOG.debug("{}: Invoking read at {}:{}", txIdentifier, store, path);
@@ -89,7 +85,7 @@ public class ShardedDOMReadTransactionAdapter implements DOMDataTreeReadTransact
         }
 
         // After data tree change future is finished, we can close the listener registration
-        Futures.addCallback(initialDataTreeChangeFuture, new FutureCallback<Optional<NormalizedNode<?, ?>>>() {
+        initialDataTreeChangeFuture.addCallback(new FutureCallback<Optional<NormalizedNode<?, ?>>>() {
             @Override
             public void onSuccess(@Nullable final Optional<NormalizedNode<?, ?>> result) {
                 reg.close();
@@ -101,19 +97,14 @@ public class ShardedDOMReadTransactionAdapter implements DOMDataTreeReadTransact
             }
         }, MoreExecutors.directExecutor());
 
-        return Futures.makeChecked(initialDataTreeChangeFuture, ReadFailedException.MAPPER);
+        return initialDataTreeChangeFuture;
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-            final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         checkRunning();
         LOG.debug("{}: Invoking exists at {}:{}", txIdentifier, store, path);
-        final Function<Optional<NormalizedNode<?, ?>>, Boolean> transform =
-            optionalNode -> optionalNode.isPresent() ? Boolean.TRUE : Boolean.FALSE;
-        final ListenableFuture<Boolean> existsResult = Futures.transform(read(store, path), transform,
-            MoreExecutors.directExecutor());
-        return Futures.makeChecked(existsResult, ReadFailedException.MAPPER);
+        return read(store, path).transform(Optional::isPresent, MoreExecutors.directExecutor());
     }
 
     private void checkRunning() {
@@ -136,7 +127,7 @@ public class ShardedDOMReadTransactionAdapter implements DOMDataTreeReadTransact
 
             for (final DataTreeCandidate change : changes) {
                 if (change.getRootNode().getModificationType().equals(ModificationType.UNMODIFIED)) {
-                    readResultFuture.set(Optional.absent());
+                    readResultFuture.set(Optional.empty());
                     return;
                 }
             }
index 0c9581406cdb324626e277d6ac9144db8cffd8ba..468072a285383be4801682c3aa24bd1cb4075dd5 100644 (file)
@@ -7,10 +7,9 @@
  */
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -27,13 +26,13 @@ public class ShardedDOMReadWriteTransactionAdapter extends ShardedDOMWriteTransa
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(LogicalDatastoreType store,
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(LogicalDatastoreType store,
             YangInstanceIdentifier path) {
         return readAdapter.read(store, path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(LogicalDatastoreType store, YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(LogicalDatastoreType store, YangInstanceIdentifier path) {
         return readAdapter.exists(store, path);
     }
 
index f8296be0f4c647c368a1921520d5606a7a654b59..e10c1e07c902fe9d1e55faa58fe7957f7ea81256 100644 (file)
@@ -10,9 +10,8 @@ package org.opendaylight.mdsal.dom.broker;
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Collection;
 import java.util.Collections;
@@ -48,7 +47,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain {
     private final CachedDataTreeService cachedDataTreeService;
     private TransactionChainWriteTransaction writeTx;
     private TransactionChainReadTransaction readTx;
-    private ListenableFuture<? extends CommitInfo> writeTxCommitFuture;
+    private FluentFuture<? extends CommitInfo> writeTxCommitFuture;
     private boolean finished = false;
 
     public ShardedDOMTransactionChainAdapter(final Object txChainIdentifier,
@@ -109,7 +108,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain {
 
         checkReadTxClosed();
         checkWriteTxClosed();
-        Futures.addCallback(writeTxCommitFuture, new FutureCallback<CommitInfo>() {
+        writeTxCommitFuture.addCallback(new FutureCallback<CommitInfo>() {
             @Override
             public void onSuccess(@Nullable final CommitInfo result) {
                 txChainListener.onTransactionChainSuccessful(ShardedDOMTransactionChainAdapter.this);
@@ -130,7 +129,7 @@ public class ShardedDOMTransactionChainAdapter implements DOMTransactionChain {
         readTx = null;
     }
 
-    public void closeWriteTransaction(final ListenableFuture<? extends CommitInfo> commitFuture) {
+    public void closeWriteTransaction(final FluentFuture<? extends CommitInfo> commitFuture) {
         writeTxCommitFuture = commitFuture;
         writeTx = null;
     }
index f3c76929a9cd947cd35728ed21d61a926721e430..5a6a5e46bdda41ff4f8fcc72330d79998ce082ef 100644 (file)
@@ -8,18 +8,14 @@
 
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
+import java.util.Optional;
 import javax.annotation.Nullable;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -27,12 +23,12 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 public class TransactionChainReadTransaction implements DOMDataTreeReadTransaction {
 
     private final DOMDataTreeReadTransaction delegateReadTx;
-    private final ListenableFuture<? extends CommitInfo> previousWriteTxFuture;
+    private final FluentFuture<? extends CommitInfo> previousWriteTxFuture;
     private final Object identifier;
     private final ShardedDOMTransactionChainAdapter txChain;
 
     TransactionChainReadTransaction(final Object txIdentifier, final DOMDataTreeReadTransaction delegateReadTx,
-                                    final ListenableFuture<? extends CommitInfo> previousWriteTxFuture,
+                                    final FluentFuture<? extends CommitInfo> previousWriteTxFuture,
                                     final ShardedDOMTransactionChainAdapter txChain) {
         this.delegateReadTx = delegateReadTx;
         this.previousWriteTxFuture = previousWriteTxFuture;
@@ -41,27 +37,25 @@ public class TransactionChainReadTransaction implements DOMDataTreeReadTransacti
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(final LogicalDatastoreType store,
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
         final SettableFuture<Optional<NormalizedNode<?, ?>>> readResult = SettableFuture.create();
 
-        Futures.addCallback(previousWriteTxFuture, new FutureCallback<CommitInfo>() {
+        previousWriteTxFuture.addCallback(new FutureCallback<CommitInfo>() {
             @Override
             public void onSuccess(@Nullable final CommitInfo result) {
-                Futures.addCallback(delegateReadTx.read(store, path),
-                    new FutureCallback<Optional<NormalizedNode<?, ?>>>() {
+                delegateReadTx.read(store, path).addCallback(new FutureCallback<Optional<NormalizedNode<?, ?>>>() {
+                    @Override
+                    public void onSuccess(@Nullable final Optional<NormalizedNode<?, ?>> result) {
+                        readResult.set(result);
+                    }
 
-                        @Override
-                        public void onSuccess(@Nullable final Optional<NormalizedNode<?, ?>> result) {
-                            readResult.set(result);
-                        }
-
-                        @Override
-                        public void onFailure(final Throwable throwable) {
-                            txChain.transactionFailed(TransactionChainReadTransaction.this, throwable);
-                            readResult.setException(throwable);
-                        }
-                    }, MoreExecutors.directExecutor());
+                    @Override
+                    public void onFailure(final Throwable throwable) {
+                        txChain.transactionFailed(TransactionChainReadTransaction.this, throwable);
+                        readResult.setException(throwable);
+                    }
+                }, MoreExecutors.directExecutor());
             }
 
             @Override
@@ -72,17 +66,12 @@ public class TransactionChainReadTransaction implements DOMDataTreeReadTransacti
             }
         }, MoreExecutors.directExecutor());
 
-        return Futures.makeChecked(readResult, ReadFailedException.MAPPER);
+        return readResult;
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-                                                              final YangInstanceIdentifier path) {
-        final Function<Optional<NormalizedNode<?, ?>>, Boolean> transform =
-            optionalNode -> optionalNode.isPresent() ? Boolean.TRUE : Boolean.FALSE;
-        final ListenableFuture<Boolean> existsResult = Futures.transform(read(store, path), transform,
-            MoreExecutors.directExecutor());
-        return Futures.makeChecked(existsResult, ReadFailedException.MAPPER);
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
+        return read(store, path).transform(Optional::isPresent, MoreExecutors.directExecutor());
     }
 
     @Override
index 86197a036db7120c7a32ca30ac05a63bdc3b47ed..12267de6a31e00c11807005c3b90c773237483c2 100644 (file)
@@ -7,12 +7,10 @@
  */
 package org.opendaylight.mdsal.dom.broker;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -25,20 +23,20 @@ class TransactionChainReadWriteTransaction extends TransactionChainWriteTransact
 
     TransactionChainReadWriteTransaction(final Object identifier,
             final DOMDataTreeReadWriteTransaction delegateWriteTx, final DOMDataTreeReadTransaction delegateReadTx,
-            final ListenableFuture<? extends CommitInfo> previousWriteTxFuture,
+            final FluentFuture<? extends CommitInfo> previousWriteTxFuture,
             final ShardedDOMTransactionChainAdapter txChain) {
         super(identifier, delegateWriteTx, txChain);
         readTx = new TransactionChainReadTransaction(identifier, delegateReadTx, previousWriteTxFuture, txChain);
     }
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(LogicalDatastoreType store,
-            YangInstanceIdentifier path) {
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
+            final YangInstanceIdentifier path) {
         return readTx.read(store, path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(LogicalDatastoreType store, YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         return readTx.exists(store, path);
     }
 
index 34f168817f94f055b617734bf028c21373e34c6d..679adca5264a84617e4743cdbdeb52441badb438 100644 (file)
@@ -5,19 +5,18 @@
  * 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.mdsal.dom.broker;
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
-import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.MoreExecutors;
 import javax.annotation.Nullable;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -48,7 +47,7 @@ public class TransactionChainWriteTransaction implements DOMDataTreeWriteTransac
 
     @Override
     public boolean cancel() {
-        txChain.closeWriteTransaction(Futures.immediateFuture(null));
+        txChain.closeWriteTransaction(FluentFutures.immediateNullFluentFuture());
         return delegateTx.cancel();
     }
 
@@ -60,7 +59,7 @@ public class TransactionChainWriteTransaction implements DOMDataTreeWriteTransac
     @Override
     public @NonNull FluentFuture<? extends @NonNull CommitInfo> commit() {
         final FluentFuture<? extends CommitInfo> writeResultFuture = delegateTx.commit();
-        Futures.addCallback(writeResultFuture, new FutureCallback<CommitInfo>() {
+        writeResultFuture.addCallback(new FutureCallback<CommitInfo>() {
             @Override
             public void onSuccess(@Nullable final CommitInfo result) {
                 // NOOP
index c87a2fe9f2e44b720d38a0405a6d9144ebec5ea1..b11133a9faf7ee7f81755e4e4e7965bd6cb9a7a4 100644 (file)
@@ -7,15 +7,14 @@
  */
 package org.opendaylight.mdsal.dom.broker.pingpong;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Verify;
-import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.AbstractMap.SimpleImmutableEntry;
 import java.util.Map.Entry;
+import java.util.Optional;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
 import javax.annotation.Nonnull;
@@ -23,7 +22,6 @@ import javax.annotation.concurrent.GuardedBy;
 import org.opendaylight.mdsal.common.api.AsyncTransaction;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.common.api.TransactionChain;
 import org.opendaylight.mdsal.common.api.TransactionChainListener;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
@@ -415,14 +413,13 @@ public final class PingPongTransactionChain implements DOMTransactionChain {
 
         return new DOMDataTreeReadTransaction() {
             @Override
-            public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(
+            public FluentFuture<Optional<NormalizedNode<?, ?>>> read(
                     final LogicalDatastoreType store, final YangInstanceIdentifier path) {
                 return tx.getTransaction().read(store, path);
             }
 
             @Override
-            public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-                                                                      final YangInstanceIdentifier path) {
+            public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
                 return tx.getTransaction().exists(store, path);
             }
 
index 2ec3f64baffd104b84f36f1a961412f7632d6ca0..633d395398e99ab38cafcf64a71e0a14fad9dfb9 100644 (file)
@@ -14,13 +14,13 @@ import static org.junit.Assert.assertTrue;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ForwardingExecutorService;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Collections;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
@@ -176,7 +176,8 @@ public class DOMBrokerTest {
     }
 
     @Test(expected = ReadFailedException.class)
-    public void basicTests() throws Exception {
+    @SuppressWarnings({"checkstyle:IllegalThrows", "checkstyle:AvoidHidingCauseException"})
+    public void basicTests() throws Throwable {
         final DataContainerChild<?, ?> outerList = ImmutableNodes.mapNodeBuilder(TestModel.OUTER_LIST_QNAME)
                 .withChild(ImmutableNodes.mapEntry(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 1))
                 .build();
@@ -215,8 +216,14 @@ public class DOMBrokerTest {
                  .get().toString().contains(testContainer.toString()));
 
         readRx.close();
+
         //Expected exception after close call
-        readRx.read(OPERATIONAL, TestModel.TEST_PATH).checkedGet();
+
+        try {
+            readRx.read(OPERATIONAL, TestModel.TEST_PATH).get();
+        } catch (ExecutionException e) {
+            throw e.getCause();
+        }
     }
 
     @SuppressWarnings({"checkstyle:IllegalThrows", "checkstyle:IllegalCatch"})
index 6bea6dcbfe9260a386de62c57b00b7b3e7f79ac7..4d5ac7beb4dcb5ff13da16c9597a3c1076907bd8 100644 (file)
@@ -13,11 +13,11 @@ import static org.junit.Assert.fail;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.CONFIGURATION;
 import static org.opendaylight.mdsal.common.api.LogicalDatastoreType.OPERATIONAL;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.ListeningExecutorService;
 import com.google.common.util.concurrent.MoreExecutors;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
index 726f282b79120a0c4d343b954547a1c9e3b70c96..08963c11320e15a92f38c90cd46f898f6c4b0664 100644 (file)
@@ -11,7 +11,6 @@ package org.opendaylight.mdsal.dom.broker;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.Maps;
@@ -19,6 +18,7 @@ import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import org.junit.After;
 import org.junit.Before;
@@ -100,4 +100,4 @@ public class ShardedDOMReadTransactionAdapterTest {
             return null;
         }
     }
-}
\ No newline at end of file
+}
index 4d6945f4dbc4f282566ecea8bdd5046437f69d48..96640a7d4b60d347284611073399f90e0c2ddbcd 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeService;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.broker.util.TestModel;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 
 public class ShardedDOMTransactionChainAdapterTest {
@@ -68,7 +69,7 @@ public class ShardedDOMTransactionChainAdapterTest {
         doReturn(Futures.immediateCheckedFuture(null)).when(transaction).submit();
         doReturn(true).when(transaction).cancel();
         assertTrue(writeTransaction.cancel());
-        transactionChainAdapter.closeWriteTransaction(Futures.immediateFuture(null));
+        transactionChainAdapter.closeWriteTransaction(FluentFutures.immediateNullFluentFuture());
 
         transactionChainAdapter =
                 new ShardedDOMTransactionChainAdapter(identifier, dataTreeService, chainListener);
@@ -76,7 +77,7 @@ public class ShardedDOMTransactionChainAdapterTest {
         writeTransaction.put(OPERATIONAL, TestModel.TEST_PATH, ImmutableNodes.containerNode(TestModel.TEST_QNAME));
         assertNotNull(writeTransaction.commit());
         assertFalse(writeTransaction.cancel());
-        transactionChainAdapter.closeWriteTransaction(Futures.immediateFuture(null));
+        transactionChainAdapter.closeWriteTransaction(FluentFutures.immediateNullFluentFuture());
 
         assertNotNull(transactionChainAdapter.newWriteOnlyTransaction().commit());
 
index 06c047c0b12121ac3336cedbfac7d4319b17cb14..f8d063a4aac48810ed02cdff6cdfa29c2efcd3e0 100644 (file)
@@ -16,12 +16,13 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
 
+import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
-import com.google.common.util.concurrent.ListenableFuture;
 import org.junit.Test;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 
 public class TransactionChainReadTransactionTest {
@@ -31,7 +32,7 @@ public class TransactionChainReadTransactionTest {
         final String identifier = "testIdent";
         final DOMDataTreeReadTransaction readTransaction = mock(DOMDataTreeReadTransaction.class);
         final ShardedDOMTransactionChainAdapter chainAdapter = mock(ShardedDOMTransactionChainAdapter.class);
-        ListenableFuture<? extends CommitInfo> previousWriteTxFuture = Futures.immediateFuture(null);
+        FluentFuture<? extends CommitInfo> previousWriteTxFuture = FluentFutures.immediateNullFluentFuture();
 
         TransactionChainReadTransaction transactionChainReadTransaction =
                 new TransactionChainReadTransaction(identifier, readTransaction, previousWriteTxFuture, chainAdapter);
@@ -55,7 +56,7 @@ public class TransactionChainReadTransactionTest {
         doNothing().when(chainAdapter).transactionFailed(any(), any());
         assertNotNull(transactionChainReadTransaction.read(
                 LogicalDatastoreType.OPERATIONAL, YangInstanceIdentifier.EMPTY));
-        previousWriteTxFuture = Futures.immediateFailedFuture(new NullPointerException());
+        previousWriteTxFuture = FluentFutures.immediateFailedFluentFuture(new NullPointerException());
         transactionChainReadTransaction =
                 new TransactionChainReadTransaction(identifier, readTransaction, previousWriteTxFuture, chainAdapter);
         assertNotNull(transactionChainReadTransaction.read(
index 4547f6f801d0c05280ed019627c108de04f3f6af..234ba1b10bf0053402e5fe411ad0576c0ea2d61d 100644 (file)
@@ -12,9 +12,9 @@ import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
-import com.google.common.base.Optional;
 import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.junit.Assert;
 import org.junit.Before;
@@ -237,14 +237,19 @@ public class InMemoryDataStoreTest {
     }
 
     @Test(expected = ReadFailedException.class)
-    public void testExistsThrowsReadFailedException() throws Exception {
+    @SuppressWarnings({"checkstyle:IllegalThrows", "checkstyle:AvoidHidingCauseException"})
+    public void testExistsThrowsReadFailedException() throws Throwable {
 
         DOMStoreReadTransaction readTx = domStore.newReadOnlyTransaction();
         assertNotNull(readTx);
 
         readTx.close();
 
-        readTx.exists(TestModel.TEST_PATH).checkedGet();
+        try {
+            readTx.exists(TestModel.TEST_PATH).get();
+        } catch (ExecutionException e) {
+            throw e.getCause();
+        }
     }
 
 
index 3c7de4b3bf9914172d207f1561524c7cb42c4c34..208ae22b2a24ef73d5d4b5bc0ce63753986d4526 100644 (file)
@@ -7,12 +7,11 @@
  */
 package org.opendaylight.mdsal.dom.spi;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ForwardingObject;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -28,14 +27,13 @@ public abstract class ForwardingDOMDataReadOnlyTransaction extends ForwardingObj
     protected abstract DOMDataTreeReadTransaction delegate();
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>,
-            ReadFailedException> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
+            final YangInstanceIdentifier path) {
         return delegate().read(store, path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-            final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         return delegate().exists(store, path);
     }
 
index 310c29488e44989cf07cdd312323f5a59fe819c8..98136a266c11227d29138435f6720104fbd862f7 100644 (file)
@@ -7,14 +7,12 @@
  */
 package org.opendaylight.mdsal.dom.spi;
 
-import com.google.common.base.Optional;
 import com.google.common.collect.ForwardingObject;
-import com.google.common.util.concurrent.CheckedFuture;
 import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import javax.annotation.Nonnull;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -30,14 +28,13 @@ public abstract class ForwardingDOMDataReadWriteTransaction extends ForwardingOb
     protected abstract DOMDataTreeReadWriteTransaction delegate();
 
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?, ?>>, ReadFailedException> read(final LogicalDatastoreType store,
+    public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
         return delegate().read(store, path);
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final LogicalDatastoreType store,
-            final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         return delegate().exists(store, path);
     }
 
index 9069c3cacd9914f404e4cf2878974fcc78b82c58..404ed1faa13cd4d9b0dc93626fa8ebad58122ff2 100644 (file)
@@ -7,8 +7,8 @@
  */
 package org.opendaylight.mdsal.dom.spi.store;
 
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
+import com.google.common.util.concurrent.FluentFuture;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -21,7 +21,7 @@ public interface DOMStoreReadTransaction extends DOMStoreTransaction {
      * @param path
      *            Path which uniquely identifies subtree which client want to
      *            read
-     * @return a CheckFuture containing the result of the read. The Future blocks until the
+     * @return a FluentFuture containing the result of the read. The Future blocks until the
      *         commit operation is complete. Once complete:
      *         <ul>
      *         <li>If the data at the supplied path exists, the Future returns an Optional object
@@ -32,7 +32,7 @@ public interface DOMStoreReadTransaction extends DOMStoreTransaction {
      *         {@link ReadFailedException} or an exception derived from ReadFailedException.</li>
      *         </ul>
      */
-    CheckedFuture<Optional<NormalizedNode<?,?>>, ReadFailedException> read(YangInstanceIdentifier path);
+    FluentFuture<Optional<NormalizedNode<?,?>>> read(YangInstanceIdentifier path);
 
     /**
      * Checks if data is available in the logical data store located at provided path.
@@ -46,7 +46,7 @@ public interface DOMStoreReadTransaction extends DOMStoreTransaction {
      * @param path
      *            Path which uniquely identifies subtree which client want to
      *            check existence of
-     * @return a CheckFuture containing the result of the check.
+     * @return a FluentFuture containing the result of the check.
      *         <ul>
      *         <li>If the data at the supplied path exists, the Future returns a Boolean
      *         whose value is true, false otherwise</li>
@@ -54,5 +54,5 @@ public interface DOMStoreReadTransaction extends DOMStoreTransaction {
      *         {@link ReadFailedException} or an exception derived from ReadFailedException.</li>
      *         </ul>
      */
-    CheckedFuture<Boolean, ReadFailedException> exists(YangInstanceIdentifier path);
+    FluentFuture<Boolean> exists(YangInstanceIdentifier path);
 }
index dc1053dc6a83d97b24a60043365d44298c148081..ac754f56f277a193f97ceee228c6f5cb593945ae 100644 (file)
@@ -10,10 +10,11 @@ package org.opendaylight.mdsal.dom.spi.store;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
@@ -54,33 +55,29 @@ public final class SnapshotBackedReadTransaction<T> extends
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?,?>>, ReadFailedException> read(final YangInstanceIdentifier path) {
+    public FluentFuture<Optional<NormalizedNode<?,?>>> read(final YangInstanceIdentifier path) {
         LOG.debug("Tx: {} Read: {}", getIdentifier(), path);
         requireNonNull(path, "Path must not be null.");
 
         final DataTreeSnapshot snapshot = stableSnapshot;
         if (snapshot == null) {
-            return Futures.immediateFailedCheckedFuture(new ReadFailedException("Transaction is closed"));
+            return FluentFutures.immediateFailedFluentFuture(new ReadFailedException("Transaction is closed"));
         }
 
         try {
-            return Futures.immediateCheckedFuture(Optional.fromJavaUtil(snapshot.readNode(path)));
+            return FluentFutures.immediateFluentFuture(snapshot.readNode(path));
         } catch (Exception e) {
             LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e);
-            return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed", e));
+            return FluentFutures.immediateFailedFluentFuture(new ReadFailedException("Read failed", e));
         }
     }
 
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) {
+    public FluentFuture<Boolean> exists(final YangInstanceIdentifier path) {
         LOG.debug("Tx: {} Exists: {}", getIdentifier(), path);
         requireNonNull(path, "Path must not be null.");
 
-        try {
-            return Futures.immediateCheckedFuture(read(path).checkedGet().isPresent());
-        } catch (ReadFailedException e) {
-            return Futures.immediateFailedCheckedFuture(e);
-        }
+        return read(path).transform(Optional::isPresent, MoreExecutors.directExecutor());
     }
 
     @Override
index 7404324b31ad6523edc92b482144b5bf0870830f..76b4dc0bee1f4600711f0d7cf2a25393d1c59c98 100644 (file)
@@ -10,10 +10,11 @@ package org.opendaylight.mdsal.dom.spi.store;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.CheckedFuture;
-import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.MoreExecutors;
+import java.util.Optional;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
+import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot;
@@ -38,33 +39,29 @@ public final class SnapshotBackedReadWriteTransaction<T> extends
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public CheckedFuture<Optional<NormalizedNode<?,?>>, ReadFailedException> read(final YangInstanceIdentifier path) {
+    public FluentFuture<Optional<NormalizedNode<?,?>>> read(final YangInstanceIdentifier path) {
         LOG.debug("Tx: {} Read: {}", getIdentifier(), path);
         checkNotNull(path, "Path must not be null.");
 
         final Optional<NormalizedNode<?, ?>> result;
 
         try {
-            result = Optional.fromJavaUtil(readSnapshotNode(path));
+            result = readSnapshotNode(path);
         } catch (Exception e) {
             LOG.error("Tx: {} Failed Read of {}", getIdentifier(), path, e);
-            return Futures.immediateFailedCheckedFuture(new ReadFailedException("Read failed", e));
+            return FluentFutures.immediateFailedFluentFuture(new ReadFailedException("Read failed", e));
         }
 
         if (result == null) {
-            return Futures.immediateFailedCheckedFuture(new ReadFailedException("Transaction is closed"));
+            return FluentFutures.immediateFailedFluentFuture(new ReadFailedException("Transaction is closed"));
         }
 
-        return Futures.immediateCheckedFuture(result);
+        return FluentFutures.immediateFluentFuture(result);
     }
 
     @SuppressWarnings("checkstyle:IllegalCatch")
     @Override
-    public CheckedFuture<Boolean, ReadFailedException> exists(final YangInstanceIdentifier path) {
-        try {
-            return Futures.immediateCheckedFuture(read(path).checkedGet().isPresent());
-        } catch (ReadFailedException e) {
-            return Futures.immediateFailedCheckedFuture(e);
-        }
+    public FluentFuture<Boolean> exists(final YangInstanceIdentifier path) {
+        return read(path).transform(Optional::isPresent, MoreExecutors.directExecutor());
     }
 }
index 15dd743b22ef0ed75a41711876ec32060bd91dee..c137b61ae8d4db7b39819ae1a2d3e7dc7818e44a 100644 (file)
@@ -17,8 +17,8 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 
-import com.google.common.base.Optional;
 import java.lang.reflect.Field;
+import java.util.Optional;
 import org.junit.Test;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
index 2e9b26bdf59cc90fbf3c4aa74ecd3568d9baca52..d4a8262816acec6d6e6fc8a7722cb98bbd7c409c 100644 (file)
@@ -15,7 +15,7 @@ import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 
-import com.google.common.base.Optional;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
 import org.junit.Before;
 import org.junit.Test;