Change DOM read/exists to FluentFuture
[mdsal.git] / dom / mdsal-dom-broker / src / main / java / org / opendaylight / mdsal / dom / broker / TransactionChainReadTransaction.java
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