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;
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;
}
@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
}
}, 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