From 7e62b4a59f9e43bcd0585845f1aeb55c44199f27 Mon Sep 17 00:00:00 2001 From: Tom Pantelis Date: Tue, 17 Jul 2018 11:05:41 -0400 Subject: [PATCH] Adjust to mdsal DOM read/exists FluentFuture change This patch needs to be coordinated with https://git.opendaylight.org/gerrit/#/c/74127/. Change-Id: Iceeff9f9f75ca40ebc31bd839b5e6a5c8639aa4c Signed-off-by: Tom Pantelis --- .../commands/ReadTransactionSuccess.java | 4 +- .../ReadTransactionSuccessProxyV1.java | 4 +- .../ReadTransactionSuccessNoDataTest.java | 6 +-- .../commands/ReadTransactionSuccessTest.java | 4 +- .../admin/ClusterAdminRpcServiceTest.java | 2 +- .../ClientBackedReadTransaction.java | 14 +++-- .../ClientBackedReadWriteTransaction.java | 14 +++-- .../DOMBrokerReadOnlyTransaction.java | 13 ++--- .../DOMBrokerReadWriteTransaction.java | 13 ++--- .../actors/dds/AbstractProxyTransaction.java | 17 +++--- .../databroker/actors/dds/ClientSnapshot.java | 10 ++-- .../actors/dds/ClientTransaction.java | 10 ++-- .../actors/dds/LocalProxyTransaction.java | 17 +++--- .../dds/LocalReadWriteProxyTransaction.java | 2 +- .../actors/dds/RemoteProxyTransaction.java | 46 ++++++++-------- .../FrontendReadOnlyTransaction.java | 8 ++- .../FrontendReadWriteTransaction.java | 8 ++- .../datastore/LocalTransactionContext.java | 4 +- .../datastore/RemoteTransactionContext.java | 2 +- .../cluster/datastore/ShardTransaction.java | 2 +- .../cluster/datastore/TransactionProxy.java | 24 ++++----- .../compat/LegacyDOMStoreAdapter.java | 6 ++- .../datastore/messages/AbstractRead.java | 5 +- .../datastore/messages/DataExists.java | 4 +- .../cluster/datastore/messages/ReadData.java | 9 ++-- .../utils/NormalizedNodeAggregator.java | 4 +- .../sharding/PrefixedShardConfigWriter.java | 5 +- .../ClientBackedReadTransactionTest.java | 4 +- .../ClientBackedReadWriteTransactionTest.java | 8 ++- .../actors/dds/ClientSnapshotTest.java | 4 +- .../actors/dds/ClientTransactionTest.java | 11 ++-- .../actors/dds/LocalProxyTransactionTest.java | 5 +- .../dds/RemoteProxyTransactionTest.java | 11 ++-- .../AbstractTransactionProxyTest.java | 26 ++++----- .../DistributedDataStoreIntegrationTest.java | 36 ++++++------- ...butedDataStoreRemotingIntegrationTest.java | 18 +++---- .../cluster/datastore/IntegrationTestKit.java | 6 +-- .../ShardTransactionFailureTest.java | 2 +- .../datastore/TransactionProxyTest.java | 54 +++++++++++-------- ...ributedEntityOwnershipIntegrationTest.java | 15 +++--- .../AbstractModificationTest.java | 2 +- .../modification/DeleteModificationTest.java | 2 +- .../modification/MergeModificationTest.java | 2 +- .../MutableCompositeModificationTest.java | 2 +- .../modification/WriteModificationTest.java | 2 +- .../utils/NormalizedNodeAggregatorTest.java | 11 ++-- .../DistributedShardedDOMDataTreeTest.java | 9 ++-- ...OMDataBrokerDelegatingReadTransaction.java | 8 +-- .../DOMStoreReadTransactionAdapter.java | 7 ++- .../compat/LegacyDOMDataBrokerAdapter.java | 6 ++- .../LegacyDOMDataBrokerAdapterTest.java | 22 ++++---- .../provider/MdsalLowLevelTestProvider.java | 4 +- 52 files changed, 264 insertions(+), 270 deletions(-) diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java index 77bd430fc5..8fe4b0bb0a 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccess.java @@ -8,8 +8,9 @@ package org.opendaylight.controller.cluster.access.commands; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.util.Optional; import org.opendaylight.controller.cluster.access.ABIVersion; import org.opendaylight.controller.cluster.access.concepts.SliceableMessage; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; @@ -22,6 +23,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; * @author Robert Varga */ @Beta +@SuppressFBWarnings("SE_BAD_FIELD") public final class ReadTransactionSuccess extends TransactionSuccess implements SliceableMessage { private static final long serialVersionUID = 1L; diff --git a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessProxyV1.java b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessProxyV1.java index dafc26b125..24a305b31e 100644 --- a/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessProxyV1.java +++ b/opendaylight/md-sal/cds-access-api/src/main/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessProxyV1.java @@ -7,10 +7,10 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.base.Optional; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; +import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeDataOutput; import org.opendaylight.controller.cluster.datastore.node.utils.stream.NormalizedNodeInputOutput; @@ -59,7 +59,7 @@ final class ReadTransactionSuccessProxyV1 extends AbstractTransactionSuccessProx if (in.readBoolean()) { data = Optional.of(NormalizedNodeInputOutput.newDataInput(in).readNormalizedNode()); } else { - data = Optional.absent(); + data = Optional.empty(); } } diff --git a/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessNoDataTest.java b/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessNoDataTest.java index 5259fe4f21..a24539fea5 100644 --- a/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessNoDataTest.java +++ b/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessNoDataTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.base.Optional; +import java.util.Optional; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.access.ABIVersion; @@ -15,7 +15,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; public class ReadTransactionSuccessNoDataTest extends AbstractTransactionSuccessTest { private static final ReadTransactionSuccess OBJECT = new ReadTransactionSuccess( - TRANSACTION_IDENTIFIER, 0, Optional.absent()); + TRANSACTION_IDENTIFIER, 0, Optional.empty()); @Override protected ReadTransactionSuccess object() { @@ -39,4 +39,4 @@ public class ReadTransactionSuccessNoDataTest extends AbstractTransactionSuccess Assert.assertTrue(deserialize instanceof ReadTransactionSuccess); Assert.assertEquals(OBJECT.getData(), ((ReadTransactionSuccess) deserialize).getData()); } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessTest.java b/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessTest.java index a76e6d37f8..812a366e69 100644 --- a/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessTest.java +++ b/opendaylight/md-sal/cds-access-api/src/test/java/org/opendaylight/controller/cluster/access/commands/ReadTransactionSuccessTest.java @@ -7,7 +7,7 @@ */ package org.opendaylight.controller.cluster.access.commands; -import com.google.common.base.Optional; +import java.util.Optional; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.access.ABIVersion; @@ -46,4 +46,4 @@ public class ReadTransactionSuccessTest extends AbstractTransactionSuccessTest expCarsNode) throws Exception { - Optional> optional = readFromStore.newReadOnlyTransaction() + java.util.Optional> optional = readFromStore.newReadOnlyTransaction() .read(CarsModel.BASE_PATH).get(15, TimeUnit.SECONDS); assertTrue("isPresent", optional.isPresent()); assertEquals("Data node", expCarsNode, optional.get()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransaction.java index 2a05519287..de4ae32489 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransaction.java @@ -7,13 +7,11 @@ */ package org.opendaylight.controller.cluster.databroker; -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 java.util.Optional; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; import javax.annotation.Nullable; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -40,13 +38,13 @@ final class ClientBackedReadTransaction extends ClientBackedTransaction>, ReadFailedException> read(final YangInstanceIdentifier path) { - return Futures.makeChecked(delegate().read(path), ReadFailedException.MAPPER); + public FluentFuture>> read(final YangInstanceIdentifier path) { + return delegate().read(path); } @Override - public CheckedFuture exists(final YangInstanceIdentifier path) { - return Futures.makeChecked(delegate().exists(path), ReadFailedException.MAPPER); + public FluentFuture exists(final YangInstanceIdentifier path) { + return delegate().exists(path); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransaction.java index 0e673e7127..cfc251d6c8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransaction.java @@ -7,12 +7,10 @@ */ package org.opendaylight.controller.cluster.databroker; -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 java.util.Optional; import javax.annotation.Nullable; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -30,12 +28,12 @@ final class ClientBackedReadWriteTransaction extends ClientBackedWriteTransactio } @Override - public CheckedFuture>, ReadFailedException> read(final YangInstanceIdentifier path) { - return Futures.makeChecked(delegate().read(path), ReadFailedException.MAPPER); + public FluentFuture>> read(final YangInstanceIdentifier path) { + return delegate().read(path); } @Override - public CheckedFuture exists(final YangInstanceIdentifier path) { - return Futures.makeChecked(delegate().exists(path), ReadFailedException.MAPPER); + public FluentFuture exists(final YangInstanceIdentifier path) { + return delegate().exists(path); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadOnlyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadOnlyTransaction.java index 0dccb42c69..afce5c053d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadOnlyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadOnlyTransaction.java @@ -8,11 +8,10 @@ package org.opendaylight.controller.cluster.databroker; -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.mdsal.dom.spi.store.DOMStoreTransactionFactory; @@ -33,15 +32,13 @@ public class DOMBrokerReadOnlyTransaction } @Override - public CheckedFuture>, ReadFailedException> read( - final LogicalDatastoreType store, final YangInstanceIdentifier path) { + public FluentFuture>> read(final LogicalDatastoreType store, + final YangInstanceIdentifier path) { return getSubtransaction(store).read(path); } @Override - public CheckedFuture exists( - final LogicalDatastoreType store, - final YangInstanceIdentifier path) { + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { return getSubtransaction(store).exists(path); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadWriteTransaction.java index d5a09398ba..b160d5b076 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/DOMBrokerReadWriteTransaction.java @@ -8,11 +8,10 @@ package org.opendaylight.controller.cluster.databroker; -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.mdsal.dom.spi.store.DOMStoreTransactionFactory; @@ -35,15 +34,13 @@ public class DOMBrokerReadWriteTransaction extends AbstractDOMBrokerWriteTransac } @Override - public CheckedFuture>, ReadFailedException> read( - final LogicalDatastoreType store, final YangInstanceIdentifier path) { + public FluentFuture>> read(final LogicalDatastoreType store, + final YangInstanceIdentifier path) { return getSubtransaction(store).read(path); } @Override - public CheckedFuture exists( - final LogicalDatastoreType store, - final YangInstanceIdentifier path) { + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { return getSubtransaction(store).exists(path); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java index 8e094112f8..dab0c9fe27 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/AbstractProxyTransaction.java @@ -9,16 +9,16 @@ package org.opendaylight.controller.cluster.databroker.actors.dds; import akka.actor.ActorRef; import com.google.common.base.MoreObjects; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Verify; import com.google.common.collect.Iterables; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import java.util.ArrayDeque; import java.util.Deque; import java.util.Iterator; +import java.util.Optional; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; @@ -45,7 +45,6 @@ import org.opendaylight.controller.cluster.access.concepts.Request; import org.opendaylight.controller.cluster.access.concepts.RequestFailure; import org.opendaylight.controller.cluster.access.concepts.Response; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -305,12 +304,12 @@ abstract class AbstractProxyTransaction implements Identifiable exists(final YangInstanceIdentifier path) { + final FluentFuture exists(final YangInstanceIdentifier path) { checkNotSealed(); return doExists(path); } - final CheckedFuture>, ReadFailedException> read(final YangInstanceIdentifier path) { + final FluentFuture>> read(final YangInstanceIdentifier path) { checkNotSealed(); return doRead(path); } @@ -335,7 +334,7 @@ abstract class AbstractProxyTransaction implements Identifiable data); - abstract CheckedFuture doExists(YangInstanceIdentifier path); + abstract FluentFuture doExists(YangInstanceIdentifier path); - abstract CheckedFuture>, ReadFailedException> doRead(YangInstanceIdentifier path); + abstract FluentFuture>> doRead(YangInstanceIdentifier path); @GuardedBy("this") abstract java.util.Optional flushState(); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java index ac9a7091ae..74c4ae48b0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshot.java @@ -8,10 +8,9 @@ package org.opendaylight.controller.cluster.databroker.actors.dds; 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.FluentFuture; +import java.util.Optional; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -36,12 +35,11 @@ public class ClientSnapshot extends AbstractClientHandle exists(final YangInstanceIdentifier path) { + public FluentFuture exists(final YangInstanceIdentifier path) { return ensureSnapshotProxy(path).exists(path); } - public CheckedFuture>, ReadFailedException> read( - final YangInstanceIdentifier path) { + public FluentFuture>> read(final YangInstanceIdentifier path) { return ensureSnapshotProxy(path).read(path); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java index 02ccde264e..9c0983879a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransaction.java @@ -8,14 +8,13 @@ package org.opendaylight.controller.cluster.databroker.actors.dds; import com.google.common.annotations.Beta; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Iterables; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.Collection; +import java.util.Optional; import javax.annotation.Nonnull; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeCursor; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; @@ -75,12 +74,11 @@ public class ClientTransaction extends AbstractClientHandle exists(final YangInstanceIdentifier path) { + public FluentFuture exists(final YangInstanceIdentifier path) { return ensureTransactionProxy(path).exists(path); } - public CheckedFuture>, ReadFailedException> read( - final YangInstanceIdentifier path) { + public FluentFuture>> read(final YangInstanceIdentifier path) { return ensureTransactionProxy(path).read(path); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java index 89402091fc..2a81e1d0aa 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalProxyTransaction.java @@ -7,10 +7,9 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -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.FluentFuture; +import java.util.Optional; import java.util.function.Consumer; import javax.annotation.Nonnull; import javax.annotation.Nullable; @@ -29,7 +28,7 @@ import org.opendaylight.controller.cluster.access.commands.TransactionRequest; import org.opendaylight.controller.cluster.access.concepts.Response; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.util.AbstractDataTreeModificationCursor; -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.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -79,13 +78,13 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction { @Nullable Consumer> callback, long enqueuedTicks); @Override - final CheckedFuture doExists(final YangInstanceIdentifier path) { - return Futures.immediateCheckedFuture(readOnlyView().readNode(path).isPresent()); + final FluentFuture doExists(final YangInstanceIdentifier path) { + return FluentFutures.immediateFluentFuture(readOnlyView().readNode(path).isPresent()); } @Override - final CheckedFuture>, ReadFailedException> doRead(final YangInstanceIdentifier path) { - return Futures.immediateCheckedFuture(Optional.fromJavaUtil(readOnlyView().readNode(path))); + final FluentFuture>> doRead(final YangInstanceIdentifier path) { + return FluentFutures.immediateFluentFuture(readOnlyView().readNode(path)); } @Override @@ -109,7 +108,7 @@ abstract class LocalProxyTransaction extends AbstractProxyTransaction { // listeners, which we do not want to execute while we are reconnecting. if (request instanceof ReadTransactionRequest) { final YangInstanceIdentifier path = ((ReadTransactionRequest) request).getPath(); - final Optional> result = Optional.fromJavaUtil(readOnlyView().readNode(path)); + final Optional> result = readOnlyView().readNode(path); if (callback != null) { // XXX: FB does not see that callback is final, on stack and has be check for non-null. final Consumer> fbIsStupid = Preconditions.checkNotNull(callback); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java index c4db9d8e9a..ccce603652 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/LocalReadWriteProxyTransaction.java @@ -191,7 +191,7 @@ final class LocalReadWriteProxyTransaction extends LocalProxyTransaction { } @Override - boolean sealAndSend(final com.google.common.base.Optional enqueuedTicks) { + boolean sealAndSend(final Optional enqueuedTicks) { sealModification(); return super.sealAndSend(enqueuedTicks); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java index 3063a3530b..e12c724db1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransaction.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.cluster.databroker.actors.dds; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.base.Function; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; +import java.util.Optional; import java.util.function.Consumer; import javax.annotation.Nullable; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; @@ -40,8 +40,8 @@ import org.opendaylight.controller.cluster.access.concepts.RequestFailure; import org.opendaylight.controller.cluster.access.concepts.Response; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.util.AbstractDataTreeModificationCursor; -import org.opendaylight.mdsal.common.api.MappingCheckedFuture; 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.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -66,6 +66,8 @@ import org.slf4j.LoggerFactory; final class RemoteProxyTransaction extends AbstractProxyTransaction { private static final Logger LOG = LoggerFactory.getLogger(RemoteProxyTransaction.class); + private static final Function NOOP_EXCEPTION_MAPPER = ex -> ex; + // FIXME: make this tuneable private static final int REQUEST_MAX_MODIFICATIONS = 1000; @@ -97,42 +99,43 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { @Override void doDelete(final YangInstanceIdentifier path) { - appendModification(new TransactionDelete(path), Optional.absent()); + appendModification(new TransactionDelete(path), Optional.empty()); } @Override void doMerge(final YangInstanceIdentifier path, final NormalizedNode data) { - appendModification(new TransactionMerge(path, data), Optional.absent()); + appendModification(new TransactionMerge(path, data), Optional.empty()); } @Override void doWrite(final YangInstanceIdentifier path, final NormalizedNode data) { - appendModification(new TransactionWrite(path, data), Optional.absent()); + appendModification(new TransactionWrite(path, data), Optional.empty()); } - private CheckedFuture sendReadRequest(final AbstractReadTransactionRequest request, + private FluentFuture sendReadRequest(final AbstractReadTransactionRequest request, final Consumer> completer, final ListenableFuture future) { // Check if a previous operation failed. If it has, do not bother sending anything and report a failure final Exception local = operationFailure; if (local != null) { - return Futures.immediateFailedCheckedFuture(new ReadFailedException("Previous operation failed", local)); + return FluentFutures.immediateFailedFluentFuture( + new ReadFailedException("Previous operation failed", local)); } // Make sure we send any modifications before issuing a read ensureFlushedBuider(); sendRequest(request, completer); - return MappingCheckedFuture.create(future, ReadFailedException.MAPPER); + return FluentFuture.from(future); } @Override - CheckedFuture doExists(final YangInstanceIdentifier path) { + FluentFuture doExists(final YangInstanceIdentifier path) { final SettableFuture future = SettableFuture.create(); return sendReadRequest(new ExistsTransactionRequest(getIdentifier(), nextSequence(), localActor(), path, isSnapshotOnly()), t -> completeExists(future, t), future); } @Override - CheckedFuture>, ReadFailedException> doRead(final YangInstanceIdentifier path) { + FluentFuture>> doRead(final YangInstanceIdentifier path) { final SettableFuture>> future = SettableFuture.create(); return sendReadRequest(new ReadTransactionRequest(getIdentifier(), nextSequence(), localActor(), path, isSnapshotOnly()), t -> completeRead(future, t), future); @@ -146,7 +149,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { } private void ensureFlushedBuider() { - ensureFlushedBuider(Optional.absent()); + ensureFlushedBuider(Optional.empty()); } private void ensureFlushedBuider(final Optional enqueuedTicks) { @@ -171,7 +174,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { } private void appendModification(final TransactionModification modification) { - appendModification(modification, Optional.absent()); + appendModification(modification, Optional.empty()); } private void appendModification(final TransactionModification modification, final Optional enqueuedTicks) { @@ -194,11 +197,12 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { // Happy path recordSuccessfulRequest(request); } else { - recordFailedResponse(response); + recordFailedResponse(response, NOOP_EXCEPTION_MAPPER); } } - private Exception recordFailedResponse(final Response response) { + private X recordFailedResponse(final Response response, + final Function exMapper) { final Exception failure; if (response instanceof RequestFailure) { failure = ((RequestFailure) response).getCause(); @@ -211,11 +215,11 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { LOG.debug("Transaction {} failed", getIdentifier(), failure); operationFailure = failure; } - return failure; + return exMapper.apply(failure); } - private void failFuture(final SettableFuture future, final Response response) { - future.setException(recordFailedResponse(response)); + private void failReadFuture(final SettableFuture future, final Response response) { + future.setException(recordFailedResponse(response, ReadFailedException.MAPPER)); } private void completeExists(final SettableFuture future, final Response response) { @@ -224,7 +228,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { if (response instanceof ExistsTransactionSuccess) { future.set(((ExistsTransactionSuccess) response).getExists()); } else { - failFuture(future, response); + failReadFuture(future, response); } recordFinishedRequest(response); @@ -237,7 +241,7 @@ final class RemoteProxyTransaction extends AbstractProxyTransaction { if (response instanceof ReadTransactionSuccess) { future.set(((ReadTransactionSuccess) response).getData()); } else { - failFuture(future, response); + failReadFuture(future, response); } recordFinishedRequest(response); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java index 881518308c..fb9fbdcb8e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadOnlyTransaction.java @@ -7,8 +7,8 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import java.util.Optional; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionRequest; @@ -84,16 +84,14 @@ final class FrontendReadOnlyTransaction extends FrontendTransaction { private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request) throws RequestException { - final Optional> data = Optional.fromJavaUtil(openTransaction.getSnapshot() - .readNode(request.getPath())); + final Optional> data = openTransaction.getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(openTransaction.getIdentifier(), request.getSequence(), data.isPresent())); } private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request) throws RequestException { - final Optional> data = Optional.fromJavaUtil(openTransaction.getSnapshot().readNode( - request.getPath())); + final Optional> data = openTransaction.getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ReadTransactionSuccess(openTransaction.getIdentifier(), request.getSequence(), data)); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java index d5fcc5e741..9c39d823fe 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/FrontendReadWriteTransaction.java @@ -7,11 +7,11 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.primitives.UnsignedLong; import com.google.common.util.concurrent.FutureCallback; import java.util.Collection; +import java.util.Optional; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.controller.cluster.access.commands.AbortLocalTransactionRequest; @@ -526,16 +526,14 @@ final class FrontendReadWriteTransaction extends FrontendTransaction { private ExistsTransactionSuccess handleExistsTransaction(final ExistsTransactionRequest request) throws RequestException { - final Optional> data = Optional.fromJavaUtil(checkOpen().getSnapshot().readNode( - request.getPath())); + final Optional> data = checkOpen().getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ExistsTransactionSuccess(getIdentifier(), request.getSequence(), data.isPresent())); } private ReadTransactionSuccess handleReadTransaction(final ReadTransactionRequest request) throws RequestException { - final Optional> data = Optional.fromJavaUtil(checkOpen().getSnapshot().readNode( - request.getPath())); + final Optional> data = checkOpen().getSnapshot().readNode(request.getPath()); return recordSuccess(request.getSequence(), new ReadTransactionSuccess(getIdentifier(), request.getSequence(), data)); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java index f4ade4ff2a..da6d6d14fe 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/LocalTransactionContext.java @@ -18,6 +18,7 @@ import java.util.SortedSet; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; import org.opendaylight.controller.cluster.datastore.messages.AbstractRead; import org.opendaylight.controller.cluster.datastore.modification.AbstractModification; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction; @@ -69,7 +70,8 @@ abstract class LocalTransactionContext extends AbstractTransactionContext { @Override public void onFailure(final Throwable failure) { - proxyFuture.setException(failure); + proxyFuture.setException(failure instanceof Exception + ? ReadFailedException.MAPPER.apply((Exception) failure) : failure); } }, MoreExecutors.directExecutor()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java index ce4bda74cf..52057faa4b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/RemoteTransactionContext.java @@ -22,7 +22,7 @@ import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.modification.AbstractModification; import org.opendaylight.controller.cluster.datastore.modification.Modification; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.Future; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java index 5b9c95f3b7..ffdf126c3c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransaction.java @@ -25,7 +25,7 @@ import org.opendaylight.controller.cluster.datastore.messages.DataExistsReply; import org.opendaylight.controller.cluster.datastore.messages.PersistAbortTransactionPayload; import org.opendaylight.controller.cluster.datastore.messages.ReadData; import org.opendaylight.controller.cluster.datastore.messages.ReadDataReply; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; /** diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java index b04dd29a58..d6d44b897a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java @@ -10,11 +10,10 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorSelection; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.common.collect.Iterables; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; @@ -24,6 +23,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import java.util.Set; import java.util.SortedSet; import java.util.TreeMap; @@ -38,8 +38,6 @@ import org.opendaylight.controller.cluster.datastore.modification.MergeModificat import org.opendaylight.controller.cluster.datastore.modification.WriteModification; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; import org.opendaylight.controller.cluster.datastore.utils.NormalizedNodeAggregator; -import org.opendaylight.mdsal.common.api.MappingCheckedFuture; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.AbstractDOMStoreTransaction; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadWriteTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -79,12 +77,11 @@ public class TransactionProxy extends AbstractDOMStoreTransaction exists(final YangInstanceIdentifier path) { + public FluentFuture exists(final YangInstanceIdentifier path) { return executeRead(shardNameFromIdentifier(path), new DataExists(path, DataStoreVersions.CURRENT_VERSION)); } - private CheckedFuture executeRead(final String shardName, - final AbstractRead readCmd) { + private FluentFuture executeRead(final String shardName, final AbstractRead readCmd) { Preconditions.checkState(type != TransactionType.WRITE_ONLY, "Reads from write-only transactions are not allowed"); @@ -99,11 +96,11 @@ public class TransactionProxy extends AbstractDOMStoreTransaction>, ReadFailedException> read(final YangInstanceIdentifier path) { + public FluentFuture>> read(final YangInstanceIdentifier path) { Preconditions.checkState(type != TransactionType.WRITE_ONLY, "Reads from write-only transactions are not allowed"); Preconditions.checkNotNull(path, "path should not be null"); @@ -112,15 +109,14 @@ public class TransactionProxy extends AbstractDOMStoreTransaction>, ReadFailedException> singleShardRead( + private FluentFuture>> singleShardRead( final String shardName, final YangInstanceIdentifier path) { return executeRead(shardName, new ReadData(path, DataStoreVersions.CURRENT_VERSION)); } - private CheckedFuture>, ReadFailedException> readAllData() { + private FluentFuture>> readAllData() { final Set allShardNames = txContextFactory.getActorContext().getConfiguration().getAllShardNames(); - final Collection>, ReadFailedException>> futures = - new ArrayList<>(allShardNames.size()); + final Collection>>> futures = new ArrayList<>(allShardNames.size()); for (String shardName : allShardNames) { futures.add(singleShardRead(shardName, YangInstanceIdentifier.EMPTY)); @@ -140,7 +136,7 @@ public class TransactionProxy extends AbstractDOMStoreTransaction>, ReadFailedException> read(YangInstanceIdentifier path) { - return MappingCheckedFuture.create(readDelegate.read(path), ReadFailedExceptionAdapter.INSTANCE); + return MappingCheckedFuture.create(readDelegate.read(path).transformAsync(optional -> + Futures.immediateFuture(Optional.fromJavaUtil(optional)), MoreExecutors.directExecutor()), + ReadFailedExceptionAdapter.INSTANCE); } @Override diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java index bee9c11288..94e1a3779c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/AbstractRead.java @@ -8,13 +8,12 @@ package org.opendaylight.controller.cluster.datastore.messages; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.SettableFuture; import java.io.IOException; import java.io.ObjectInput; import java.io.ObjectOutput; import org.opendaylight.controller.cluster.datastore.node.utils.stream.SerializationUtils; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -57,7 +56,7 @@ public abstract class AbstractRead extends VersionedExternalizableMessage { return version == getVersion() ? this : newInstance(version); } - public abstract CheckedFuture apply(DOMStoreReadTransaction readDelegate); + public abstract FluentFuture apply(DOMStoreReadTransaction readDelegate); public abstract void processResponse(Object reponse, SettableFuture promise); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java index 435b759959..b7e38d5082 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/DataExists.java @@ -9,7 +9,7 @@ package org.opendaylight.controller.cluster.datastore.messages; import com.google.common.base.Preconditions; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; @@ -26,7 +26,7 @@ public class DataExists extends AbstractRead { } @Override - public CheckedFuture apply(DOMStoreReadTransaction readDelegate) { + public FluentFuture apply(DOMStoreReadTransaction readDelegate) { return readDelegate.exists(getPath()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java index 74d435a525..6352b5734b 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/messages/ReadData.java @@ -8,10 +8,10 @@ package org.opendaylight.controller.cluster.datastore.messages; -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.FluentFuture; import com.google.common.util.concurrent.SettableFuture; +import java.util.Optional; import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -28,8 +28,7 @@ public class ReadData extends AbstractRead>> { } @Override - public CheckedFuture>, ReadFailedException> apply( - DOMStoreReadTransaction readDelegate) { + public FluentFuture>> apply(DOMStoreReadTransaction readDelegate) { return readDelegate.read(getPath()); } @@ -37,7 +36,7 @@ public class ReadData extends AbstractRead>> { public void processResponse(Object readResponse, SettableFuture>> returnFuture) { if (ReadDataReply.isSerializedType(readResponse)) { ReadDataReply reply = ReadDataReply.fromSerializable(readResponse); - returnFuture.set(Optional.>fromNullable(reply.getNormalizedNode())); + returnFuture.set(Optional.>ofNullable(reply.getNormalizedNode())); } else { returnFuture.setException(new ReadFailedException("Invalid response reading data for path " + getPath())); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java index edbfa1f9b6..8d5994ea39 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java @@ -7,8 +7,8 @@ */ package org.opendaylight.controller.cluster.datastore.utils; -import com.google.common.base.Optional; import java.util.List; +import java.util.Optional; import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -66,6 +66,6 @@ public final class NormalizedNodeAggregator { } private Optional> getRootNode() { - return Optional.fromJavaUtil(dataTree.takeSnapshot().readNode(rootIdentifier)); + return dataTree.takeSnapshot().readNode(rootIdentifier); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java index 2342e5eeb9..5e7f83e7f2 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/PrefixedShardConfigWriter.java @@ -20,7 +20,6 @@ import org.opendaylight.controller.cluster.databroker.actors.dds.ClientSnapshot; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; import org.opendaylight.controller.cluster.datastore.utils.ClusterUtils; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -115,8 +114,8 @@ class PrefixedShardConfigWriter { final ClientSnapshot snapshot = history.takeSnapshot(); try { - return snapshot.exists(defaultId).checkedGet(); - } catch (final ReadFailedException e) { + return snapshot.exists(defaultId).get(); + } catch (InterruptedException | ExecutionException e) { LOG.error("Presence check of default shard in configuration failed.", e); return false; } finally { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransactionTest.java index 8333b4875e..7d41885ca5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadTransactionTest.java @@ -7,9 +7,9 @@ */ package org.opendaylight.controller.cluster.databroker; -import com.google.common.base.Optional; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; +import java.util.Optional; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -65,4 +65,4 @@ public class ClientBackedReadTransactionTest extends ClientBackedTransactionTest final ListenableFuture result = object().exists(YangInstanceIdentifier.EMPTY); Assert.assertTrue(result.get()); } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransactionTest.java index e369fd5cd1..97adcb35f0 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/ClientBackedReadWriteTransactionTest.java @@ -7,9 +7,9 @@ */ package org.opendaylight.controller.cluster.databroker; -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.Futures; +import java.util.Optional; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -17,7 +17,6 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.opendaylight.controller.cluster.databroker.actors.dds.ClientTransaction; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -55,8 +54,7 @@ public class ClientBackedReadWriteTransactionTest @Test public void testRead() throws Exception { - final CheckedFuture>, ReadFailedException> result = object().read( - YangInstanceIdentifier.EMPTY); + final FluentFuture>> result = object().read(YangInstanceIdentifier.EMPTY); final Optional> resultData = result.get(); Assert.assertTrue(resultData.isPresent()); Assert.assertEquals(data, resultData.get()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshotTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshotTest.java index 8162484d7d..9e3f57e90e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshotTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientSnapshotTest.java @@ -11,8 +11,8 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.getWithTimeout; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; +import java.util.Optional; import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -54,4 +54,4 @@ public class ClientSnapshotTest extends AbstractClientHandleTest Assert.assertFalse(getWithTimeout(exists).isPresent()); } -} \ No newline at end of file +} diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransactionTest.java index 04f706dc66..9dd5d7b7aa 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/ClientTransactionTest.java @@ -14,16 +14,15 @@ import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtil import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.assertOperationThrowsException; import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.getWithTimeout; -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.ListenableFuture; +import java.util.Optional; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.opendaylight.controller.cluster.access.commands.CommitLocalTransactionRequest; import org.opendaylight.controller.cluster.access.commands.TransactionCommitSuccess; -import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteCursor; import org.opendaylight.mdsal.dom.spi.store.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.common.QName; @@ -78,14 +77,14 @@ public class ClientTransactionTest extends AbstractClientHandleTest exists = getHandle().exists(PATH); + final FluentFuture exists = getHandle().exists(PATH); verify(modification).readNode(PATH); Assert.assertTrue(getWithTimeout(exists)); } @Test public void testRead() throws Exception { - final CheckedFuture>, ReadFailedException> resultFuture = getHandle().read(PATH); + final FluentFuture>> resultFuture = getHandle().read(PATH); verify(modification).readNode(PATH); final Optional> result = getWithTimeout(resultFuture); Assert.assertTrue(result.isPresent()); @@ -138,4 +137,4 @@ public class ClientTransactionTest extends AbstractClientHandleTest @Override @Test public void testRead() throws Exception { - assertFutureEquals(com.google.common.base.Optional.of(DATA_1), transaction.read(PATH_1)); - assertFutureEquals(com.google.common.base.Optional.absent(), transaction.read(PATH_3)); + assertFutureEquals(Optional.of(DATA_1), transaction.read(PATH_1)); + assertFutureEquals(Optional.empty(), transaction.read(PATH_3)); } @Test diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransactionTest.java index c8bdd276dd..e159cf02d9 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/databroker/actors/dds/RemoteProxyTransactionTest.java @@ -13,10 +13,10 @@ import static org.hamcrest.CoreMatchers.isA; import static org.opendaylight.controller.cluster.databroker.actors.dds.TestUtils.assertFutureEquals; import akka.testkit.TestProbe; -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.ListenableFuture; import java.util.List; +import java.util.Optional; import org.junit.Assert; import org.junit.Test; import org.opendaylight.controller.cluster.access.commands.ExistsTransactionRequest; @@ -37,7 +37,6 @@ import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitR import org.opendaylight.controller.cluster.access.commands.TransactionPreCommitSuccess; import org.opendaylight.controller.cluster.access.commands.TransactionWrite; import org.opendaylight.controller.cluster.access.concepts.TransactionIdentifier; -import org.opendaylight.mdsal.common.api.ReadFailedException; 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,7 +53,7 @@ public class RemoteProxyTransactionTest extends AbstractProxyTransactionTest tester = getTester(); - final CheckedFuture exists = transaction.exists(PATH_1); + final FluentFuture exists = transaction.exists(PATH_1); final ExistsTransactionRequest req = tester.expectTransactionRequest(ExistsTransactionRequest.class); final boolean existsResult = true; tester.replySuccess(new ExistsTransactionSuccess(TRANSACTION_ID, req.getSequence(), existsResult)); @@ -65,7 +64,7 @@ public class RemoteProxyTransactionTest extends AbstractProxyTransactionTest tester = getTester(); - final CheckedFuture>, ReadFailedException> read = transaction.read(PATH_2); + final FluentFuture>> read = transaction.read(PATH_2); final ReadTransactionRequest req = tester.expectTransactionRequest(ReadTransactionRequest.class); final Optional> result = Optional.of(DATA_1); tester.replySuccess(new ReadTransactionSuccess(TRANSACTION_ID, req.getSequence(), result)); @@ -233,4 +232,4 @@ public class RemoteProxyTransactionTest extends AbstractProxyTransactionTest future) - throws Exception { + @SuppressWarnings({"checkstyle:avoidHidingCauseException", "checkstyle:IllegalThrows"}) + protected void propagateReadFailedExceptionCause(final FluentFuture future) throws Throwable { try { - future.checkedGet(5, TimeUnit.SECONDS); + future.get(5, TimeUnit.SECONDS); fail("Expected ReadFailedException"); - } catch (ReadFailedException e) { - assertNotNull("Expected a cause", e.getCause()); - Throwable cause; - if (e.getCause().getCause() != null) { - cause = e.getCause().getCause(); - } else { - cause = e.getCause(); - } - - Throwables.propagateIfPossible(cause, Exception.class); - throw new RuntimeException(cause); + } catch (ExecutionException e) { + final Throwable cause = e.getCause(); + assertTrue("Unexpected cause: " + cause.getClass(), cause instanceof ReadFailedException); + throw Throwables.getRootCause(cause); } } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java index 482021aa8b..fe8ffe3dbc 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreIntegrationTest.java @@ -22,10 +22,9 @@ import akka.actor.Address; import akka.actor.AddressFromURIString; import akka.cluster.Cluster; import akka.testkit.javadsl.TestKit; -import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableMap; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.Uninterruptibles; @@ -37,6 +36,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Optional; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; @@ -212,7 +212,7 @@ public class DistributedDataStoreIntegrationTest { readWriteTx.write(nodePath, nodeToWrite); // 3. Read the data from Tx - final Boolean exists = readWriteTx.exists(nodePath).checkedGet(5, TimeUnit.SECONDS); + final Boolean exists = readWriteTx.exists(nodePath).get(5, TimeUnit.SECONDS); assertEquals("exists", true, exists); Optional> optional = readWriteTx.read(nodePath).get(5, TimeUnit.SECONDS); @@ -268,7 +268,7 @@ public class DistributedDataStoreIntegrationTest { final YangInstanceIdentifier personPath = PeopleModel.newPersonPath("jack"); readWriteTx.write(personPath, person); - final Boolean exists = readWriteTx.exists(carPath).checkedGet(5, TimeUnit.SECONDS); + final Boolean exists = readWriteTx.exists(carPath).get(5, TimeUnit.SECONDS); assertEquals("exists", true, exists); Optional> optional = readWriteTx.read(carPath).get(5, TimeUnit.SECONDS); @@ -445,9 +445,8 @@ public class DistributedDataStoreIntegrationTest { assertNotNull("newReadWriteTransaction returned null", readWriteTx); // Do some reads on the Tx on a separate thread. - final AtomicReference> txExistsFuture = - new AtomicReference<>(); - final AtomicReference>, ReadFailedException>> + final AtomicReference> txExistsFuture = new AtomicReference<>(); + final AtomicReference>>> txReadFuture = new AtomicReference<>(); final AtomicReference caughtEx = new AtomicReference<>(); final CountDownLatch txReadsDone = new CountDownLatch(1); @@ -482,8 +481,8 @@ public class DistributedDataStoreIntegrationTest { blockRecoveryLatch.countDown(); // Wait for the reads to complete and verify. - assertEquals("exists", true, txExistsFuture.get().checkedGet(5, TimeUnit.SECONDS)); - assertEquals("read", true, txReadFuture.get().checkedGet(5, TimeUnit.SECONDS).isPresent()); + assertEquals("exists", true, txExistsFuture.get().get(5, TimeUnit.SECONDS)); + assertEquals("read", true, txReadFuture.get().get(5, TimeUnit.SECONDS).isPresent()); readWriteTx.close(); } @@ -588,7 +587,7 @@ public class DistributedDataStoreIntegrationTest { assertNotNull("newReadWriteTransaction returned null", readWriteTx); // Do a read on the Tx on a separate thread. - final AtomicReference>, ReadFailedException>> + final AtomicReference>>> txReadFuture = new AtomicReference<>(); final AtomicReference caughtEx = new AtomicReference<>(); final CountDownLatch txReadDone = new CountDownLatch(1); @@ -621,9 +620,10 @@ public class DistributedDataStoreIntegrationTest { // initialized, the Tx should // have timed out and throw an appropriate exception cause. try { - txReadFuture.get().checkedGet(5, TimeUnit.SECONDS); - fail("Expected NotInitializedException"); - } catch (final ReadFailedException e) { + txReadFuture.get().get(5, TimeUnit.SECONDS); + } catch (ExecutionException e) { + assertTrue("Expected ReadFailedException cause: " + e.getCause(), + e.getCause() instanceof ReadFailedException); final Throwable root = Throwables.getRootCause(e); Throwables.throwIfUnchecked(root); throw new RuntimeException(root); @@ -1045,10 +1045,10 @@ public class DistributedDataStoreIntegrationTest { final DOMStoreThreePhaseCommitCohort cohort1 = writeTx.ready(); // Create read-only tx's and issue a read. - CheckedFuture>, ReadFailedException> readFuture1 = txChain + FluentFuture>> readFuture1 = txChain .newReadOnlyTransaction().read(TestModel.TEST_PATH); - CheckedFuture>, ReadFailedException> readFuture2 = txChain + FluentFuture>> readFuture2 = txChain .newReadOnlyTransaction().read(TestModel.TEST_PATH); // Create another write tx and issue the write. @@ -1058,8 +1058,8 @@ public class DistributedDataStoreIntegrationTest { // Ensure the reads succeed. - assertEquals("isPresent", true, readFuture1.checkedGet(5, TimeUnit.SECONDS).isPresent()); - assertEquals("isPresent", true, readFuture2.checkedGet(5, TimeUnit.SECONDS).isPresent()); + assertEquals("isPresent", true, readFuture1.get(5, TimeUnit.SECONDS).isPresent()); + assertEquals("isPresent", true, readFuture2.get(5, TimeUnit.SECONDS).isPresent()); // Ensure the writes succeed. DOMStoreThreePhaseCommitCohort cohort2 = writeTx2.ready(); @@ -1068,7 +1068,7 @@ public class DistributedDataStoreIntegrationTest { doCommit(cohort2); assertEquals("isPresent", true, txChain.newReadOnlyTransaction().read(TestModel.OUTER_LIST_PATH) - .checkedGet(5, TimeUnit.SECONDS).isPresent()); + .get(5, TimeUnit.SECONDS).isPresent()); } } }; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java index 4f0f9297c9..526b1d47e1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/DistributedDataStoreRemotingIntegrationTest.java @@ -25,7 +25,6 @@ import akka.cluster.Cluster; import akka.dispatch.Futures; import akka.pattern.Patterns; import akka.testkit.javadsl.TestKit; -import com.google.common.base.Optional; import com.google.common.base.Stopwatch; import com.google.common.base.Supplier; import com.google.common.base.Throwables; @@ -40,6 +39,7 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; @@ -636,8 +636,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { initDatastoresWithCars("testReadyLocalTransactionForwardedToLeader"); followerTestKit.waitUntilLeader(followerDistributedDataStore.getActorContext(), "cars"); - final Optional carsFollowerShard = followerDistributedDataStore.getActorContext() - .findLocalShard("cars"); + final com.google.common.base.Optional carsFollowerShard = + followerDistributedDataStore.getActorContext().findLocalShard("cars"); assertEquals("Cars follower shard found", true, carsFollowerShard.isPresent()); final DataTree dataTree = new InMemoryDataTreeFactory().create( @@ -704,8 +704,8 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { initDatastoresWithCars("testForwardedReadyTransactionForwardedToLeader"); followerTestKit.waitUntilLeader(followerDistributedDataStore.getActorContext(), "cars"); - final Optional carsFollowerShard = followerDistributedDataStore.getActorContext() - .findLocalShard("cars"); + final com.google.common.base.Optional carsFollowerShard = + followerDistributedDataStore.getActorContext().findLocalShard("cars"); assertEquals("Cars follower shard found", true, carsFollowerShard.isPresent()); carsFollowerShard.get().tell(GetShardDataTree.INSTANCE, followerTestKit.getRef()); @@ -1009,7 +1009,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { // Do an initial read to get the primary shard info cached. final DOMStoreReadTransaction readTx = followerDistributedDataStore.newReadOnlyTransaction(); - readTx.read(CarsModel.BASE_PATH).checkedGet(5, TimeUnit.SECONDS); + readTx.read(CarsModel.BASE_PATH).get(5, TimeUnit.SECONDS); // Shutdown the leader and try to create a new tx. @@ -1044,7 +1044,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { // Do an initial read to get the primary shard info cached. final DOMStoreReadTransaction readTx = followerDistributedDataStore.newReadOnlyTransaction(); - readTx.read(CarsModel.BASE_PATH).checkedGet(5, TimeUnit.SECONDS); + readTx.read(CarsModel.BASE_PATH).get(5, TimeUnit.SECONDS); // Shutdown the leader and try to create a new tx. @@ -1095,7 +1095,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { // Do an initial read to get the primary shard info cached. final DOMStoreReadTransaction readTx = followerDistributedDataStore.newReadOnlyTransaction(); - readTx.read(CarsModel.BASE_PATH).checkedGet(5, TimeUnit.SECONDS); + readTx.read(CarsModel.BASE_PATH).get(5, TimeUnit.SECONDS); // Shutdown the leader and try to create a new tx. @@ -1142,7 +1142,7 @@ public class DistributedDataStoreRemotingIntegrationTest extends AbstractTest { initDatastoresWithCars(testName); final Optional> readOptional = leaderDistributedDataStore.newReadOnlyTransaction().read( - CarsModel.BASE_PATH).checkedGet(5, TimeUnit.SECONDS); + CarsModel.BASE_PATH).get(5, TimeUnit.SECONDS); assertEquals("isPresent", true, readOptional.isPresent()); assertEquals("Node", carsNode, readOptional.get()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/IntegrationTestKit.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/IntegrationTestKit.java index 82d05352e1..a7b9ae8e7e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/IntegrationTestKit.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/IntegrationTestKit.java @@ -17,12 +17,12 @@ import akka.cluster.Cluster; import akka.cluster.ClusterEvent.CurrentClusterState; import akka.cluster.Member; import akka.cluster.MemberStatus; -import com.google.common.base.Optional; import com.google.common.base.Stopwatch; import com.google.common.collect.Sets; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.Uninterruptibles; import java.lang.reflect.Constructor; +import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.TimeUnit; @@ -250,7 +250,7 @@ public class IntegrationTestKit extends ShardTestKit { ActorRef shard = null; for (int i = 0; i < 20 * 5 && shard == null; i++) { Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - Optional shardReply = actorContext.findLocalShard(shardName); + com.google.common.base.Optional shardReply = actorContext.findLocalShard(shardName); if (shardReply.isPresent()) { shard = shardReply.get(); } @@ -262,7 +262,7 @@ public class IntegrationTestKit extends ShardTestKit { for (int i = 0; i < 20 * 5 ; i++) { LOG.debug("Waiting for shard down {}", shardName); Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - Optional shardReply = actorContext.findLocalShard(shardName); + com.google.common.base.Optional shardReply = actorContext.findLocalShard(shardName); if (!shardReply.isPresent()) { return; } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java index 881429bee6..580c805719 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java @@ -20,7 +20,7 @@ import org.opendaylight.controller.cluster.datastore.jmx.mbeans.shard.ShardStats import org.opendaylight.controller.cluster.datastore.messages.DataExists; import org.opendaylight.controller.cluster.datastore.messages.ReadData; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; +import org.opendaylight.mdsal.common.api.ReadFailedException; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.model.api.SchemaContext; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java index 4fa4fcd1dd..62c03d7617 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/TransactionProxyTest.java @@ -29,16 +29,16 @@ import akka.actor.ActorSystem; import akka.actor.Props; import akka.dispatch.Futures; import akka.util.Timeout; -import com.google.common.base.Optional; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Sets; -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 com.google.common.util.concurrent.Uninterruptibles; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.SortedSet; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; @@ -82,7 +82,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Promise; -@SuppressWarnings("resource") +@SuppressWarnings({"resource", "checkstyle:IllegalThrows", "checkstyle:AvoidHidingCauseException"}) public class TransactionProxyTest extends AbstractTransactionProxyTest { @SuppressWarnings("serial") @@ -90,7 +90,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { } interface Invoker { - CheckedFuture invoke(TransactionProxy proxy) throws Exception; + FluentFuture invoke(TransactionProxy proxy) throws Exception; } @Test @@ -120,7 +120,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { } @Test(expected = ReadFailedException.class) - public void testReadWithInvalidReplyMessageType() throws Exception { + public void testReadWithInvalidReplyMessageType() throws Throwable { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.successful(new Object())).when(mockActorContext) @@ -128,11 +128,15 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, READ_ONLY); - transactionProxy.read(TestModel.TEST_PATH).checkedGet(5, TimeUnit.SECONDS); + try { + transactionProxy.read(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS); + } catch (ExecutionException e) { + throw e.getCause(); + } } @Test(expected = TestException.class) - public void testReadWithAsyncRemoteOperatonFailure() throws Exception { + public void testReadWithAsyncRemoteOperatonFailure() throws Throwable { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.failed(new TestException())).when(mockActorContext) @@ -144,7 +148,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { } private void testExceptionOnInitialCreateTransaction(final Exception exToThrow, final Invoker invoker) - throws Exception { + throws Throwable { ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class)); if (exToThrow instanceof PrimaryNotFoundException) { @@ -162,23 +166,23 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { propagateReadFailedExceptionCause(invoker.invoke(transactionProxy)); } - private void testReadWithExceptionOnInitialCreateTransaction(final Exception exToThrow) throws Exception { + private void testReadWithExceptionOnInitialCreateTransaction(final Exception exToThrow) throws Throwable { testExceptionOnInitialCreateTransaction(exToThrow, proxy -> proxy.read(TestModel.TEST_PATH)); } @Test(expected = PrimaryNotFoundException.class) - public void testReadWhenAPrimaryNotFoundExceptionIsThrown() throws Exception { + public void testReadWhenAPrimaryNotFoundExceptionIsThrown() throws Throwable { testReadWithExceptionOnInitialCreateTransaction(new PrimaryNotFoundException("test")); } - @Test(expected = TimeoutException.class) - public void testReadWhenATimeoutExceptionIsThrown() throws Exception { + @Test(expected = TestException.class) + public void testReadWhenATimeoutExceptionIsThrown() throws Throwable { testReadWithExceptionOnInitialCreateTransaction(new TimeoutException("test", - new Exception("reason"))); + new TestException())); } @Test(expected = TestException.class) - public void testReadWhenAnyOtherExceptionIsThrown() throws Exception { + public void testReadWhenAnyOtherExceptionIsThrown() throws Throwable { testReadWithExceptionOnInitialCreateTransaction(new TestException()); } @@ -218,7 +222,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { } @Test(expected = IllegalArgumentException.class) - public void testInvalidCreateTransactionReply() throws Exception { + public void testInvalidCreateTransactionReply() throws Throwable { ActorRef actorRef = getSystem().actorOf(Props.create(DoNothingActor.class)); doReturn(getSystem().actorSelection(actorRef.path())).when(mockActorContext) @@ -245,26 +249,26 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { doReturn(dataExistsReply(false)).when(mockActorContext).executeOperationAsync( eq(actorSelection(actorRef)), eqDataExists(), any(Timeout.class)); - Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet(); + Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).get(); assertEquals("Exists response", false, exists); doReturn(dataExistsReply(true)).when(mockActorContext).executeOperationAsync( eq(actorSelection(actorRef)), eqDataExists(), any(Timeout.class)); - exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet(); + exists = transactionProxy.exists(TestModel.TEST_PATH).get(); assertEquals("Exists response", true, exists); } @Test(expected = PrimaryNotFoundException.class) - public void testExistsWhenAPrimaryNotFoundExceptionIsThrown() throws Exception { + public void testExistsWhenAPrimaryNotFoundExceptionIsThrown() throws Throwable { testExceptionOnInitialCreateTransaction(new PrimaryNotFoundException("test"), proxy -> proxy.exists(TestModel.TEST_PATH)); } @Test(expected = ReadFailedException.class) - public void testExistsWithInvalidReplyMessageType() throws Exception { + public void testExistsWithInvalidReplyMessageType() throws Throwable { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.successful(new Object())).when(mockActorContext) @@ -272,11 +276,15 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { TransactionProxy transactionProxy = new TransactionProxy(mockComponentFactory, READ_ONLY); - transactionProxy.exists(TestModel.TEST_PATH).checkedGet(5, TimeUnit.SECONDS); + try { + transactionProxy.exists(TestModel.TEST_PATH).get(5, TimeUnit.SECONDS); + } catch (ExecutionException e) { + throw e.getCause(); + } } @Test(expected = TestException.class) - public void testExistsWithAsyncRemoteOperatonFailure() throws Exception { + public void testExistsWithAsyncRemoteOperatonFailure() throws Throwable { ActorRef actorRef = setupActorContextWithInitialCreateTransaction(getSystem(), READ_ONLY); doReturn(Futures.failed(new TestException())).when(mockActorContext) @@ -302,7 +310,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { transactionProxy.write(TestModel.TEST_PATH, nodeToWrite); - Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet(); + Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).get(); assertEquals("Exists response", true, exists); @@ -1415,7 +1423,7 @@ public class TransactionProxyTest extends AbstractTransactionProxyTest { transactionProxy.delete(deletePath); - Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).checkedGet(); + Boolean exists = transactionProxy.exists(TestModel.TEST_PATH).get(); assertEquals("Exists response", true, exists); assertEquals("NormalizedNode isPresent", true, readOptional.isPresent()); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipIntegrationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipIntegrationTest.java index 9bdacd73f5..78dc8f38df 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipIntegrationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipIntegrationTest.java @@ -29,7 +29,6 @@ import akka.actor.Status.Success; import akka.cluster.Cluster; import akka.pattern.Patterns; import akka.util.Timeout; -import com.google.common.base.Optional; import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; @@ -39,6 +38,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.TimeUnit; import org.junit.After; import org.junit.Before; @@ -540,10 +540,11 @@ public class DistributedEntityOwnershipIntegrationTest { boolean passed = false; for (int i = 0; i < 100; i++) { Uninterruptibles.sleepUninterruptibly(50, TimeUnit.MILLISECONDS); - final Optional leaderState = leaderEntityOwnershipService.getOwnershipState(ENTITY1); - final Optional follower1State = + final com.google.common.base.Optional leaderState = + leaderEntityOwnershipService.getOwnershipState(ENTITY1); + final com.google.common.base.Optional follower1State = follower1EntityOwnershipService.getOwnershipState(ENTITY1); - final Optional follower2State = + final com.google.common.base.Optional follower2State = follower2EntityOwnershipService.getOwnershipState(ENTITY1); final Optional leaderChange = getValueSafely(leaderChangeCaptor); final Optional follower1Change = getValueSafely(follower1ChangeCaptor); @@ -564,10 +565,10 @@ public class DistributedEntityOwnershipIntegrationTest { private static Optional getValueSafely(ArgumentCaptor captor) { try { - return Optional.fromNullable(captor.getValue()); + return Optional.ofNullable(captor.getValue()); } catch (MockitoException e) { // No value was captured - return Optional.absent(); + return Optional.empty(); } } @@ -837,7 +838,7 @@ public class DistributedEntityOwnershipIntegrationTest { private static void verifyGetOwnershipState(final DOMEntityOwnershipService service, final DOMEntity entity, final EntityOwnershipState expState) { - Optional state = service.getOwnershipState(entity); + com.google.common.base.Optional state = service.getOwnershipState(entity); assertEquals("getOwnershipState present", true, state.isPresent()); assertEquals("EntityOwnershipState", expState, state.get()); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModificationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModificationTest.java index ac06dc2b32..9daa3429fd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModificationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/AbstractModificationTest.java @@ -8,9 +8,9 @@ package org.opendaylight.controller.cluster.datastore.modification; -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 org.junit.Before; import org.opendaylight.controller.md.cluster.datastore.model.TestModel; import org.opendaylight.mdsal.dom.spi.store.DOMStoreReadTransaction; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/DeleteModificationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/DeleteModificationTest.java index 676bce90f4..ac0d7f9388 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/DeleteModificationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/DeleteModificationTest.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.cluster.datastore.modification; import static org.junit.Assert.assertEquals; -import com.google.common.base.Optional; +import java.util.Optional; import org.apache.commons.lang.SerializationUtils; import org.junit.Assert; import org.junit.Test; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MergeModificationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MergeModificationTest.java index 4d94040e77..bfdcf0edf8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MergeModificationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MergeModificationTest.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.cluster.datastore.modification; import static org.junit.Assert.assertEquals; -import com.google.common.base.Optional; +import java.util.Optional; import org.apache.commons.lang.SerializationUtils; import org.junit.Assert; import org.junit.Test; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModificationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModificationTest.java index 2974e9139b..96438c4209 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModificationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/MutableCompositeModificationTest.java @@ -11,7 +11,7 @@ package org.opendaylight.controller.cluster.datastore.modification; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; -import com.google.common.base.Optional; +import java.util.Optional; import org.apache.commons.lang.SerializationUtils; import org.junit.Test; import org.opendaylight.controller.cluster.datastore.DataStoreVersions; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/WriteModificationTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/WriteModificationTest.java index 9ebb5bbc69..5218cee1b3 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/WriteModificationTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/modification/WriteModificationTest.java @@ -10,7 +10,7 @@ package org.opendaylight.controller.cluster.datastore.modification; import static org.junit.Assert.assertEquals; -import com.google.common.base.Optional; +import java.util.Optional; import org.apache.commons.lang.SerializationUtils; import org.junit.Assert; import org.junit.Test; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregatorTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregatorTest.java index 5687755cfb..7ae05bd11a 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregatorTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregatorTest.java @@ -11,10 +11,10 @@ package org.opendaylight.controller.cluster.datastore.utils; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.Collection; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; import org.junit.Test; @@ -75,7 +75,7 @@ public class NormalizedNodeAggregatorTest { } public static NormalizedNode getRootNode(NormalizedNode moduleNode, SchemaContext schemaContext) - throws ReadFailedException, ExecutionException, InterruptedException { + throws ExecutionException, InterruptedException { try (InMemoryDOMDataStore store = new InMemoryDOMDataStore("test", Executors.newSingleThreadExecutor())) { store.onGlobalContextUpdated(schemaContext); @@ -91,10 +91,9 @@ public class NormalizedNodeAggregatorTest { DOMStoreReadTransaction readTransaction = store.newReadOnlyTransaction(); - CheckedFuture>, ReadFailedException> read = readTransaction - .read(YangInstanceIdentifier.EMPTY); + FluentFuture>> read = readTransaction.read(YangInstanceIdentifier.EMPTY); - Optional> nodeOptional = read.checkedGet(); + Optional> nodeOptional = read.get(); return nodeOptional.get(); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeTest.java index 7545cd5edc..8d5351ca90 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTreeTest.java @@ -29,15 +29,16 @@ import akka.actor.AddressFromURIString; import akka.actor.Props; import akka.cluster.Cluster; import akka.testkit.javadsl.TestKit; -import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.typesafe.config.ConfigFactory; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.concurrent.CompletionStage; import java.util.concurrent.TimeUnit; @@ -269,11 +270,9 @@ public class DistributedShardedDOMDataTreeTest extends AbstractTest { final ClientLocalHistory localHistory = distributedDataStoreClient.createLocalHistory(); final ClientTransaction tx2 = localHistory.createTransaction(); - final CheckedFuture>, - org.opendaylight.mdsal.common.api.ReadFailedException> read = - tx2.read(YangInstanceIdentifier.EMPTY); + final FluentFuture>> read = tx2.read(YangInstanceIdentifier.EMPTY); - final Optional> optional = read.checkedGet(); + final Optional> optional = read.get(); tx2.abort(); localHistory.close(); diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadTransaction.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadTransaction.java index 42daf16360..2e29c255dd 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadTransaction.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/legacy/sharded/adapter/ShardedDOMDataBrokerDelegatingReadTransaction.java @@ -9,10 +9,12 @@ package org.opendaylight.controller.md.sal.dom.broker.impl.legacy.sharded.adapter; import static com.google.common.base.Preconditions.checkNotNull; +import static org.opendaylight.controller.md.sal.dom.broker.impl.legacy.sharded.adapter.LegacyShardedDOMDataBrokerAdapterUtils.translateDataStoreType; 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.MoreExecutors; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; @@ -43,9 +45,9 @@ class ShardedDOMDataBrokerDelegatingReadTransaction implements DOMDataReadOnlyTr @Override public CheckedFuture>, ReadFailedException> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) { - return Futures.makeChecked( - delegateTx.read(LegacyShardedDOMDataBrokerAdapterUtils.translateDataStoreType(store), path), - ReadFailedException.MAPPER); + return Futures.makeChecked(delegateTx.read(translateDataStoreType(store), path).transformAsync( + optional -> Futures.immediateFuture(Optional.fromJavaUtil(optional)), MoreExecutors.directExecutor()), + ReadFailedException.MAPPER); } @Override diff --git a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/DOMStoreReadTransactionAdapter.java b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/DOMStoreReadTransactionAdapter.java index 60b858fcde..0e5efa2b3b 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/DOMStoreReadTransactionAdapter.java +++ b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/DOMStoreReadTransactionAdapter.java @@ -9,8 +9,11 @@ package org.opendaylight.controller.sal.core.compat; import static java.util.Objects.requireNonNull; +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.Futures; +import com.google.common.util.concurrent.MoreExecutors; import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadTransaction; import org.opendaylight.mdsal.common.api.MappingCheckedFuture; @@ -43,7 +46,9 @@ public class DOMStoreReadTransactionAdapter>, ReadFailedException> read( final YangInstanceIdentifier path) { - return MappingCheckedFuture.create(delegate.read(path), ReadFailedExceptionAdapter.INSTANCE); + return MappingCheckedFuture.create(delegate.read(path).transformAsync( + optional -> Futures.immediateFuture(Optional.fromJavaUtil(optional)), MoreExecutors.directExecutor()), + ReadFailedExceptionAdapter.INSTANCE); } @Override diff --git a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java index dfd0f14aff..7f11d5f17c 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java +++ b/opendaylight/md-sal/sal-dom-compat/src/main/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapter.java @@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableClassToInstanceMap.Builder; 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.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.Map; @@ -253,8 +254,9 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD @Override public CheckedFuture>, ReadFailedException> read(LogicalDatastoreType store, YangInstanceIdentifier path) { - return MappingCheckedFuture.create(readDelegate().read(convert(store), path), - ReadFailedExceptionAdapter.INSTANCE); + return MappingCheckedFuture.create(readDelegate().read(convert(store), path).transformAsync( + optional -> Futures.immediateFuture(Optional.fromJavaUtil(optional)), MoreExecutors.directExecutor()), + ReadFailedExceptionAdapter.INSTANCE); } @Override diff --git a/opendaylight/md-sal/sal-dom-compat/src/test/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapterTest.java b/opendaylight/md-sal/sal-dom-compat/src/test/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapterTest.java index 3c752c2074..ce375edb19 100644 --- a/opendaylight/md-sal/sal-dom-compat/src/test/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapterTest.java +++ b/opendaylight/md-sal/sal-dom-compat/src/test/java/org/opendaylight/controller/sal/core/compat/LegacyDOMDataBrokerAdapterTest.java @@ -21,7 +21,6 @@ import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.collect.ImmutableMap; @@ -30,6 +29,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; import java.util.Arrays; import java.util.Collection; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -67,6 +67,7 @@ import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain; import org.opendaylight.mdsal.dom.spi.store.DOMStoreTreeChangePublisher; import org.opendaylight.mdsal.dom.spi.store.DOMStoreWriteTransaction; import org.opendaylight.yangtools.concepts.ListenerRegistration; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -152,13 +153,14 @@ public class LegacyDOMDataBrokerAdapterTest { doReturn(mockConfigCommitCohort).when(mockConfigWriteTx).ready(); doReturn(mockConfigReadTx).when(mockConfigStore).newReadOnlyTransaction(); - doReturn(Futures.immediateCheckedFuture(Optional.of(dataNode))).when(mockConfigReadTx).read(TEST_PATH); - doReturn(Futures.immediateCheckedFuture(Boolean.TRUE)).when(mockConfigReadTx).exists(TEST_PATH); + doReturn(FluentFutures.immediateFluentFuture(Optional.of(dataNode))).when(mockConfigReadTx).read(TEST_PATH); + doReturn(FluentFutures.immediateFluentFuture(Boolean.TRUE)).when(mockConfigReadTx).exists(TEST_PATH); doReturn(mockConfigReadWriteTx).when(mockConfigStore).newReadWriteTransaction(); doNothing().when(mockConfigReadWriteTx).write(TEST_PATH, dataNode); doReturn(mockConfigCommitCohort).when(mockConfigReadWriteTx).ready(); - doReturn(Futures.immediateCheckedFuture(Optional.of(dataNode))).when(mockConfigReadWriteTx).read(TEST_PATH); + doReturn(FluentFutures.immediateFluentFuture(Optional.of(dataNode))) + .when(mockConfigReadWriteTx).read(TEST_PATH); DOMStoreTransactionChain mockTxChain = mock(DOMStoreTransactionChain.class); doReturn(mockConfigReadTx).when(mockTxChain).newReadOnlyTransaction(); @@ -194,9 +196,9 @@ public class LegacyDOMDataBrokerAdapterTest { // Test successful read - CheckedFuture>, ReadFailedException> readFuture = + CheckedFuture>, ReadFailedException> readFuture = tx.read(LogicalDatastoreType.CONFIGURATION, TEST_PATH); - Optional> readOptional = readFuture.get(); + com.google.common.base.Optional> readOptional = readFuture.get(); assertEquals("isPresent", true, readOptional.isPresent()); assertEquals("NormalizedNode", dataNode, readOptional.get()); @@ -324,9 +326,9 @@ public class LegacyDOMDataBrokerAdapterTest { public void testReadWriteTransaction() throws Exception { DOMDataReadWriteTransaction tx = adapter.newReadWriteTransaction(); - CheckedFuture>, ReadFailedException> readFuture = + CheckedFuture>, ReadFailedException> readFuture = tx.read(LogicalDatastoreType.CONFIGURATION, TEST_PATH); - Optional> readOptional = readFuture.get(); + com.google.common.base.Optional> readOptional = readFuture.get(); assertEquals("isPresent", true, readOptional.isPresent()); assertEquals("NormalizedNode", dataNode, readOptional.get()); @@ -354,9 +356,9 @@ public class LegacyDOMDataBrokerAdapterTest { DOMDataReadOnlyTransaction readTx = chain.newReadOnlyTransaction(); - CheckedFuture>, ReadFailedException> readFuture = + CheckedFuture>, ReadFailedException> readFuture = readTx.read(LogicalDatastoreType.CONFIGURATION, TEST_PATH); - Optional> readOptional = readFuture.get(); + com.google.common.base.Optional> readOptional = readFuture.get(); assertEquals("isPresent", true, readOptional.isPresent()); assertEquals("NormalizedNode", dataNode, readOptional.get()); diff --git a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/MdsalLowLevelTestProvider.java b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/MdsalLowLevelTestProvider.java index 9075a56c5e..0c0a3b2410 100644 --- a/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/MdsalLowLevelTestProvider.java +++ b/opendaylight/md-sal/samples/clustering-test-app/provider/src/main/java/org/opendaylight/controller/clustering/it/provider/MdsalLowLevelTestProvider.java @@ -793,13 +793,13 @@ public class MdsalLowLevelTestProvider implements OdlMdsalLowlevelControlService final ClientLocalHistory localHistory = distributedDataStoreClient.createLocalHistory(); final ClientTransaction tx = localHistory.createTransaction(); - final ListenableFuture>> read = + final ListenableFuture>> read = tx.read(YangInstanceIdentifier.of(ProduceTransactionsHandler.ID_INT)); tx.abort(); localHistory.close(); try { - final Optional> optional = read.get(); + final java.util.Optional> optional = read.get(); if (!optional.isPresent()) { LOG.warn("Final read from client is empty."); final RpcError error = RpcResultBuilder.newError( -- 2.36.6