Bump mdsal to 4.0.0 73/81273/18
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 28 Mar 2019 19:41:39 +0000 (20:41 +0100)
committerSomashekhar Javalagi <somashekhar.manohara.javalagi@ericsson.com>
Fri, 12 Apr 2019 01:16:25 +0000 (06:46 +0530)
This bumps mdsal to 4.0.0, adjusting to changed APIs:
- 'type empty' mapped to yang.common.Empty
- RPC method invocation using ListenableFuture instead of FluentFuture
- DOMDataTreeReadWriteTransaction no longer having close() method

Change-Id: I7e4f3bba8cab75af750784d77c2a62ca2460e542
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
36 files changed:
features/netconf-connector/odl-netconf-connector/pom.xml
features/netconf/odl-netconf-api/pom.xml
features/netconf/odl-netconf-notifications-impl/pom.xml
features/restconf/odl-restconf-common/pom.xml
features/restconf/odl-restconf-nb-bierman02/pom.xml
netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/netconf/mdsal/notification/impl/CapabilityChangeNotificationProducer.java
netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/netconf/mdsal/notification/impl/CapabilityChangeNotificationProducerTest.java
netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMount.java
netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistration.java
netconf/netconf-impl/src/main/java/org/opendaylight/netconf/impl/osgi/NetconfCapabilityMonitoringService.java
netconf/netconf-parent/pom.xml
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBroker.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadAdapter.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ActorProxyTransactionFacade.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/FailedProxyTransactionFacade.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadTransaction.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransaction.java
netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java
netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTestAdapter.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/DeviceActionFactoryImpl.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/SchemalessNetconfDeviceRpc.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTx.java
netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOps.java
netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java
restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/impl/BatchedExistenceCheck.java
restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/impl/BrokerFacade.java
restconf/restconf-nb-bierman02/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/BrokerFacadeTest.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/FutureCallbackTx.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/PatchDataTransactionUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/RestconfInvokeOperationsUtil.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/SubscribeToStreamUtil.java
restconf/restconf-parent/pom.xml

index 5d62bb1ff10f086569659e326d079e9e6dc9a3d8..e441e364771eeed3071a1fa117f6d86545b51771 100644 (file)
@@ -28,7 +28,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>3.0.6</version>
+                <version>4.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index fed8f9fd7f60a5b7c9348829023e86ff226d3dcd..7da5eb94ada95fc4ca5ac81859fb52826345e8ea 100644 (file)
@@ -35,7 +35,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>3.0.6</version>
+                <version>4.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 39d0bb6b31f029a448e83b2785051abd68a05bdb..53d78d022c576e87f84fb525e3449bdbcb543520 100644 (file)
@@ -28,7 +28,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>3.0.6</version>
+                <version>4.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 4aff4f5f85823bb5261fabfca021a69b9b0c0192..c5d989245aa71688a46fe550124c44d13fa2c4ea 100644 (file)
@@ -35,7 +35,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>3.0.6</version>
+                <version>4.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 61aa1b37a55d83605543f96302b028a269c161c2..31272e661f6b69938a718be66f1128fe06489bf6 100644 (file)
@@ -28,7 +28,7 @@
             <dependency>
                 <groupId>org.opendaylight.mdsal</groupId>
                 <artifactId>mdsal-artifacts</artifactId>
-                <version>3.0.6</version>
+                <version>4.0.0</version>
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
index 7f68fe1bb64f1bf612cfcda191b35a008f517793..87cfa2a081af67500b281178b04c83132ae86383 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.not
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.changed.by.server.or.user.ServerBuilder;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Empty;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -86,7 +87,7 @@ public final class CapabilityChangeNotificationProducer extends OperationalDatas
     private void publishNotification(final Set<Uri> added, final Set<Uri> removed) {
         final NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder();
         netconfCapabilityChangeBuilder.setChangedBy(new ChangedByBuilder().setServerOrUser(new ServerBuilder()
-                .setServer(true).build()).build());
+                .setServer(Empty.getInstance()).build()).build());
         netconfCapabilityChangeBuilder.setAddedCapability(ImmutableList.copyOf(added));
         netconfCapabilityChangeBuilder.setDeletedCapability(ImmutableList.copyOf(removed));
         // TODO modified should be computed ... but why ?
index 7dceaf771caa4bf745c148067e944ad5c83c1f11..aeb97e4f06b4d234ed59ae994db599abd57f8f76 100644 (file)
@@ -40,6 +40,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.not
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.common.Empty;
 
 public class CapabilityChangeNotificationProducerTest {
 
@@ -125,7 +126,7 @@ public class CapabilityChangeNotificationProducerTest {
     private static NetconfCapabilityChange changedCapabilitesFrom(final List<Uri> added, final List<Uri> deleted) {
         NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder();
         netconfCapabilityChangeBuilder.setChangedBy(new ChangedByBuilder().setServerOrUser(
-                new ServerBuilder().setServer(true).build()).build());
+                new ServerBuilder().setServer(Empty.getInstance()).build()).build());
 
         netconfCapabilityChangeBuilder.setModifiedCapability(Collections.emptyList());
         netconfCapabilityChangeBuilder.setAddedCapability(added);
index cad403e5ad70e68d30b5eff7c030b98d9a9c128c..b5f980172235ca81459c089ff05ef737d4af4adc 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.netconf.messagebus.eventsources.netconf;
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.time.Instant;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
@@ -109,7 +110,8 @@ class NetconfEventSourceMount {
      * @param lastEventTime last event time
      * @return rpc result
      */
-    FluentFuture<DOMRpcResult> invokeCreateSubscription(final Stream stream, final Optional<Instant> lastEventTime) {
+    ListenableFuture<DOMRpcResult> invokeCreateSubscription(final Stream stream,
+            final Optional<Instant> lastEventTime) {
         final CreateSubscriptionInputBuilder inputBuilder = new CreateSubscriptionInputBuilder()
                 .setStream(stream.getName());
         if (lastEventTime.isPresent() && stream.isReplaySupport()) {
@@ -128,7 +130,7 @@ class NetconfEventSourceMount {
      * @param stream stream
      * @return rpc result
      */
-    FluentFuture<DOMRpcResult> invokeCreateSubscription(final Stream stream) {
+    ListenableFuture<DOMRpcResult> invokeCreateSubscription(final Stream stream) {
         return invokeCreateSubscription(stream, Optional.empty());
     }
 
index 2d70d5f6c2c4e94b3f4b3cf952417a5e73c3252a..50b2b3eab9f4e7dd1013e989b8a3520c818bbd41 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.netconf.messagebus.eventsources.netconf;
 
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Set;
@@ -62,7 +62,7 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration
     void activateNotificationSource() {
         if (!isActive()) {
             LOG.info("Stream {} is not active on node {}. Will subscribe.", this.getStreamName(), this.nodeId);
-            final FluentFuture<DOMRpcResult> result = mountPoint.invokeCreateSubscription(stream);
+            final ListenableFuture<DOMRpcResult> result = mountPoint.invokeCreateSubscription(stream);
             try {
                 result.get();
                 setActive(true);
@@ -84,7 +84,8 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration
     void reActivateNotificationSource() {
         if (isActive()) {
             LOG.info("Stream {} is reactivating on node {}.", this.getStreamName(), this.nodeId);
-            final FluentFuture<DOMRpcResult> result = mountPoint.invokeCreateSubscription(stream, getLastEventTime());
+            final ListenableFuture<DOMRpcResult> result = mountPoint.invokeCreateSubscription(stream,
+                getLastEventTime());
             try {
                 result.get();
                 setActive(true);
index f9c931a1dce9a5abd65d1b8d02e5a418e3b1f777..b3f20bf9ee613948e94cf4ed38ea807325936e46 100644 (file)
@@ -45,6 +45,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.not
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfCapabilityChangeBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.ChangedByBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.changed.by.parms.changed.by.server.or.user.ServerBuilder;
+import org.opendaylight.yangtools.yang.common.Empty;
 
 class NetconfCapabilityMonitoringService implements CapabilityListener, AutoCloseable {
 
@@ -238,7 +239,7 @@ class NetconfCapabilityMonitoringService implements CapabilityListener, AutoClos
         final NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder();
         netconfCapabilityChangeBuilder
                 .setChangedBy(new ChangedByBuilder().setServerOrUser(
-                    new ServerBuilder().setServer(Boolean.TRUE).build()).build());
+                    new ServerBuilder().setServer(Empty.getInstance()).build()).build());
         netconfCapabilityChangeBuilder.setDeletedCapability(Lists.newArrayList(Collections2
                 .transform(removed, CAPABILITY_TO_URI)));
         netconfCapabilityChangeBuilder.setAddedCapability(Lists.newArrayList(Collections2
index d2173bd1586de17d38e167b185974a78cb444621..9c051a43f877de74f1c5a051b5ac47d6cfcfa27f 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>3.0.6</version>
+    <version>4.0.0</version>
     <relativePath/>
   </parent>
 
index 3158b4925b179b0ac12f7063a2756dab5b0bf929..4a89c7c25d8bde250bb0be61faf3a79d6bf1b71c 100644 (file)
@@ -12,13 +12,13 @@ import akka.pattern.Patterns;
 import akka.util.Timeout;
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
-import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
+import org.opendaylight.mdsal.dom.spi.PingPongMergingDOMDataBroker;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.netconf.topology.singleton.impl.tx.ProxyReadTransaction;
 import org.opendaylight.netconf.topology.singleton.impl.tx.ProxyReadWriteTransaction;
@@ -28,7 +28,7 @@ import org.opendaylight.netconf.topology.singleton.messages.transactions.NewWrit
 import scala.concurrent.ExecutionContext;
 import scala.concurrent.Future;
 
-public class ProxyDOMDataBroker implements DOMDataBroker {
+public class ProxyDOMDataBroker implements PingPongMergingDOMDataBroker {
 
     private final Timeout askTimeout;
     private final RemoteDeviceId id;
index 1fc684a4ff669d9d75f5a1c6938e0c9f2778757b..b34f846d9e5edac62798ba0789c491d7d39e47f9 100644 (file)
@@ -13,7 +13,7 @@ import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Optional;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage;
 import org.opendaylight.netconf.topology.singleton.messages.transactions.EmptyReadResponse;
 import org.opendaylight.netconf.topology.singleton.messages.transactions.ExistsRequest;
@@ -23,9 +23,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
 class ReadAdapter {
 
-    private final DOMDataTreeReadTransaction tx;
+    private final DOMDataTreeReadOperations tx;
 
-    ReadAdapter(final DOMDataTreeReadTransaction tx) {
+    ReadAdapter(final DOMDataTreeReadOperations tx) {
         this.tx = tx;
     }
 
index d39e960aeb32ee2e019e6d5d27d48a06c3f38e8c..6b62e04785189adb2b6dea1b291255238c2c52f6 100644 (file)
@@ -85,11 +85,6 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade {
         return true;
     }
 
-    @Override
-    public void close() {
-        cancel();
-    }
-
     @Override
     public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
index d1bce43e5d885e811e4906d16bec4d8f201bf05e..8cf76f675de4800b416fdd616815012232b9f4a3 100644 (file)
@@ -48,11 +48,6 @@ class FailedProxyTransactionFacade implements ProxyTransactionFacade {
         return true;
     }
 
-    @Override
-    public void close() {
-        // No-op
-    }
-
     @Override
     public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
index fbe946f3ba3e0f854d7fe215149b29d792529dfb..3ad77763f4b023d58bc709b0ec685cd45931b4c9 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.netconf.topology.singleton.impl.tx;
 
 import akka.actor.ActorRef;
 import akka.util.Timeout;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import scala.concurrent.ExecutionContext;
 import scala.concurrent.Future;
@@ -17,10 +18,15 @@ import scala.concurrent.Future;
  * ProxyReadTransaction uses provided {@link ActorRef} to delegate method calls to master
  * {@link org.opendaylight.netconf.topology.singleton.impl.actors.ReadTransactionActor}.
  */
-public class ProxyReadTransaction extends ProxyReadWriteTransaction {
+public class ProxyReadTransaction extends ProxyReadWriteTransaction implements DOMDataTreeReadTransaction {
 
     public ProxyReadTransaction(final RemoteDeviceId id, final Future<Object> masterTxActorFuture,
             final ExecutionContext executionContext, final Timeout askTimeout) {
         super(id, masterTxActorFuture, executionContext, askTimeout);
     }
+
+    @Override
+    public void close() {
+        cancel();
+    }
 }
index 1b94724e0a4d93b20c2e4f9450f8b1e32e005abd..1e62fba01d05297f76c1322da34307d45c689e1f 100644 (file)
@@ -80,11 +80,6 @@ public class ProxyReadWriteTransaction implements DOMDataTreeReadWriteTransactio
         return true;
     }
 
-    @Override
-    public void close() {
-        cancel();
-    }
-
     @Override
     public FluentFuture<Optional<NormalizedNode<?, ?>>> read(final LogicalDatastoreType store,
             final YangInstanceIdentifier path) {
index 94e8f4b2f70cecc9127c64c47b542c3adf14c3c3..2713850ddf43180af62861286cac24ab07ddfc86 100644 (file)
@@ -72,7 +72,7 @@ import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext;
 import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMMountPoint;
@@ -599,7 +599,7 @@ public class MountPointEndToEndTest {
         writeTx.commit().get(5, TimeUnit.SECONDS);
     }
 
-    private static void verifyDataInStore(final DOMDataTreeReadTransaction readTx, final YangInstanceIdentifier path,
+    private static void verifyDataInStore(final DOMDataTreeReadOperations readTx, final YangInstanceIdentifier path,
             final NormalizedNode<?, ?> expNode) throws InterruptedException, ExecutionException, TimeoutException {
         final Optional<NormalizedNode<?, ?>> read = readTx.read(LogicalDatastoreType.CONFIGURATION, path)
                 .get(5, TimeUnit.SECONDS);
index 738fd6bd5719a7034c77cebc57f6cb5477b03a9e..9080ed47d8b5bbcca21f15e865e3a6ea7a634043 100644 (file)
@@ -24,7 +24,7 @@ import java.util.concurrent.TimeUnit;
 import org.junit.Test;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage;
 import org.opendaylight.netconf.topology.singleton.messages.transactions.EmptyReadResponse;
 import org.opendaylight.netconf.topology.singleton.messages.transactions.ExistsRequest;
@@ -46,11 +46,11 @@ public abstract class ReadTransactionActorTestAdapter {
     static final NormalizedNode<?, ?> NODE = Builders.containerBuilder()
             .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(QName.create("", "cont"))).build();
 
-    private DOMDataTreeReadTransaction mockReadTx;
+    private DOMDataTreeReadOperations mockReadTx;
     private TestProbe probe;
     private ActorRef actorRef;
 
-    public void init(final DOMDataTreeReadTransaction inMockReadTx, final ActorSystem system,
+    public void init(final DOMDataTreeReadOperations inMockReadTx, final ActorSystem system,
             final ActorRef inActorRef) {
         this.mockReadTx = inMockReadTx;
         this.probe = TestProbe.apply(system);
index a15b00a6ecb472439c77ee77f4fb988d4eed030b..e217eec8f17e9827f472c61be61515a05a3b3dc7 100644 (file)
@@ -11,9 +11,9 @@ package org.opendaylight.netconf.sal.connect.netconf;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
-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;
-import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.dom.api.DOMActionResult;
 import org.opendaylight.mdsal.dom.api.DOMActionService;
 import org.opendaylight.mdsal.dom.api.DOMActionServiceExtension;
@@ -45,16 +45,16 @@ public class DeviceActionFactoryImpl implements DeviceActionFactory {
 
         return new DOMActionService() {
             @Override
-            public FluentFuture<? extends DOMActionResult> invokeAction(final SchemaPath schemaPath,
+            public ListenableFuture<? extends DOMActionResult> invokeAction(final SchemaPath schemaPath,
                     final DOMDataTreeIdentifier dataTreeIdentifier, final ContainerNode input) {
                 Preconditions.checkNotNull(schemaPath);
                 Preconditions.checkNotNull(dataTreeIdentifier);
                 Preconditions.checkNotNull(input);
 
-                final FluentFuture<RpcResult<NetconfMessage>> actionResultFuture = listener.sendRequest(
+                final ListenableFuture<RpcResult<NetconfMessage>> actionResultFuture = listener.sendRequest(
                         messageTransformer.toActionRequest(schemaPath, dataTreeIdentifier, input), input.getNodeType());
 
-                return actionResultFuture.transform(netconfMessageRpcResult -> {
+                return Futures.transform(actionResultFuture, netconfMessageRpcResult -> {
                     if (netconfMessageRpcResult != null) {
                         return messageTransformer.toActionResult(schemaPath, netconfMessageRpcResult.getResult());
                     } else {
@@ -66,7 +66,7 @@ public class DeviceActionFactoryImpl implements DeviceActionFactory {
             }
 
             @Override
-            public @NonNull ClassToInstanceMap<DOMActionServiceExtension> getExtensions() {
+            public ClassToInstanceMap<DOMActionServiceExtension> getExtensions() {
                 return ImmutableClassToInstanceMap.of();
             }
         };
index 1146fa81aa0537432975fdc471d0aee38678aa2a..ede7dddc2839429d725040d3cb5424eee3a50cfc 100644 (file)
@@ -14,7 +14,6 @@ import com.google.common.base.Predicates;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
 import com.google.common.util.concurrent.Futures;
 import com.google.common.util.concurrent.ListenableFuture;
@@ -185,7 +184,7 @@ public class NetconfDevice
         // TODO check whether the model describing create subscription is present in schema
         // Perhaps add a default schema context to support create-subscription if the model was not provided
         // (same as what we do for base netconf operations in transformer)
-        final FluentFuture<DOMRpcResult> rpcResultListenableFuture = deviceRpc.invokeRpc(
+        final ListenableFuture<DOMRpcResult> rpcResultListenableFuture = deviceRpc.invokeRpc(
                 NetconfMessageTransformUtil.toPath(NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_QNAME),
                 NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_CONTENT);
 
index 825cd380996b90a61ad7cb9e01e9b87b6b78ff29..f8abed3c3903ce9fd484ca3c19c0f69aa18cd7c0 100644 (file)
@@ -13,8 +13,9 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr
 import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_CONFIG_PATH;
 import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_RUNNING_QNAME;
 
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.concurrent.ScheduledExecutorService;
@@ -197,8 +198,8 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler<NetconfSess
                 if (!lastJobSucceeded) {
                     onFailure(new IllegalStateException("Previous keepalive timed out"));
                 } else {
-                    currentDeviceRpc.invokeRpc(NETCONF_GET_CONFIG_PATH, KEEPALIVE_PAYLOAD).addCallback(this,
-                                        MoreExecutors.directExecutor());
+                    Futures.addCallback(currentDeviceRpc.invokeRpc(NETCONF_GET_CONFIG_PATH, KEEPALIVE_PAYLOAD), this,
+                        MoreExecutors.directExecutor());
                 }
             } catch (final NullPointerException e) {
                 LOG.debug("{}: Skipping keepalive while reconnecting", id);
@@ -272,7 +273,7 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler<NetconfSess
             }
             scheduleKeepalives();
             //Listening on the result should be done before the keepalive rpc will be send
-            final long delay = (keepaliveDelaySeconds * 1000) - 500;
+            final long delay = keepaliveDelaySeconds * 1000 - 500;
             schedule = executor.schedule(runnable, delay, TimeUnit.MILLISECONDS);
         }
 
@@ -287,11 +288,11 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler<NetconfSess
 
     private static final class ResponseWaiting implements Runnable {
 
-        private final FluentFuture<DOMRpcResult> rpcResultFuture;
+        private final ListenableFuture<DOMRpcResult> rpcResultFuture;
         private final ResponseWaitingScheduler responseWaitingScheduler;
 
         ResponseWaiting(final ResponseWaitingScheduler responseWaitingScheduler,
-                final FluentFuture<DOMRpcResult> rpcResultFuture) {
+                final ListenableFuture<DOMRpcResult> rpcResultFuture) {
             this.responseWaitingScheduler = responseWaitingScheduler;
             this.rpcResultFuture = rpcResultFuture;
         }
@@ -323,11 +324,11 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler<NetconfSess
      * it.
      */
     private static final class RequestTimeoutTask implements Runnable {
-
-        private final FluentFuture<DOMRpcResult> rpcResultFuture;
+        private final ListenableFuture<DOMRpcResult> rpcResultFuture;
         private final ResponseWaiting responseWaiting;
 
-        RequestTimeoutTask(final FluentFuture<DOMRpcResult> rpcResultFuture, final ResponseWaiting responseWaiting) {
+        RequestTimeoutTask(final ListenableFuture<DOMRpcResult> rpcResultFuture,
+            final ResponseWaiting responseWaiting) {
             this.rpcResultFuture = rpcResultFuture;
             this.responseWaiting = responseWaiting;
         }
@@ -370,11 +371,11 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler<NetconfSess
         }
 
         @Override
-        public FluentFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
-            final FluentFuture<DOMRpcResult> rpcResultFuture = deviceRpc.invokeRpc(type, input);
+        public ListenableFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
+            final ListenableFuture<DOMRpcResult> rpcResultFuture = deviceRpc.invokeRpc(type, input);
             final ResponseWaiting responseWaiting = new ResponseWaiting(responseWaitingScheduler, rpcResultFuture);
             responseWaiting.start();
-            rpcResultFuture.addCallback(resetKeepaliveTask, MoreExecutors.directExecutor());
+            Futures.addCallback(rpcResultFuture, resetKeepaliveTask, MoreExecutors.directExecutor());
 
             final RequestTimeoutTask timeoutTask = new RequestTimeoutTask(rpcResultFuture, responseWaiting);
             executor.schedule(timeoutTask, defaultRequestTimeoutMillis, TimeUnit.MILLISECONDS);
index afb76dcfe4566a1922a0a0b45f761106a153e70c..694e120ae28d3f4fd9551bf5daeb9bc1da84ad2d 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.netconf.sal.connect.netconf.sal;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.ClassToInstanceMap;
 import com.google.common.collect.ImmutableClassToInstanceMap;
-import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
@@ -18,6 +17,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMRpcService;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChain;
 import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener;
+import org.opendaylight.mdsal.dom.spi.PingPongMergingDOMDataBroker;
 import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences;
 import org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadOnlyTx;
 import org.opendaylight.netconf.sal.connect.netconf.sal.tx.ReadWriteTx;
@@ -29,7 +29,7 @@ import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
-public final class NetconfDeviceDataBroker implements DOMDataBroker {
+public final class NetconfDeviceDataBroker implements PingPongMergingDOMDataBroker {
     private final RemoteDeviceId id;
     private final NetconfBaseOps netconfOps;
 
index 2bf04875d31857e2a99def1514d8f950170e7bcc..19de2565df65ff525b9ec31882d376f4a0bac3b6 100644 (file)
@@ -10,8 +10,9 @@ package org.opendaylight.netconf.sal.connect.netconf.sal;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.Collections2;
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener;
@@ -48,20 +49,20 @@ public final class NetconfDeviceRpc implements DOMRpcService {
     }
 
     @Override
-    public FluentFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
-        final FluentFuture<RpcResult<NetconfMessage>> delegateFuture = communicator.sendRequest(
+    public ListenableFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
+        final ListenableFuture<RpcResult<NetconfMessage>> delegateFuture = communicator.sendRequest(
             transformer.toRpcRequest(type, input), type.getLastComponent());
 
         final SettableFuture<DOMRpcResult> ret = SettableFuture.create();
-        delegateFuture.addCallback(new FutureCallback<RpcResult<NetconfMessage>>() {
+        Futures.addCallback(delegateFuture, new FutureCallback<RpcResult<NetconfMessage>>() {
             @Override
-            public void onSuccess(RpcResult<NetconfMessage> result) {
+            public void onSuccess(final RpcResult<NetconfMessage> result) {
                 ret.set(result.isSuccessful() ? transformer.toRpcResult(result.getResult(), type)
                         : new DefaultDOMRpcResult(result.getErrors()));
             }
 
             @Override
-            public void onFailure(Throwable cause) {
+            public void onFailure(final Throwable cause) {
                 ret.setException(new DOMRpcImplementationNotAvailableException(cause, "Unable to invoke rpc %s", type));
             }
 
index 1d991e717bface8a837a4a6e6ea8861fa52c7e47..b9f89815c68ff6460523d7a4356b25d7aa6c3c7f 100644 (file)
@@ -7,8 +7,9 @@
  */
 package org.opendaylight.netconf.sal.connect.netconf.sal;
 
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import com.google.common.util.concurrent.SettableFuture;
 import org.eclipse.jdt.annotation.NonNull;
@@ -25,7 +26,6 @@ import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.SchemalessMes
 import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil;
 import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.util.concurrent.FluentFutures;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
@@ -52,35 +52,35 @@ public final class SchemalessNetconfDeviceRpc implements DOMRpcService {
     }
 
     @Override
-    public FluentFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
+    public ListenableFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
         final MessageTransformer<NetconfMessage> transformer;
         if (input instanceof AnyXmlNode) {
             transformer = schemalessTransformer;
         } else if (isBaseRpc(type)) {
             transformer = baseRpcTransformer;
         } else {
-            return FluentFutures.immediateFailedFluentFuture(new DOMRpcImplementationNotAvailableException(
+            return Futures.immediateFailedFuture(new DOMRpcImplementationNotAvailableException(
                 "Unable to invoke rpc %s", type));
         }
         return handleRpc(type, input, transformer);
     }
 
-    private FluentFuture<DOMRpcResult> handleRpc(
+    private ListenableFuture<DOMRpcResult> handleRpc(
             final @NonNull SchemaPath type, final @NonNull NormalizedNode<?, ?> input,
             final MessageTransformer<NetconfMessage> transformer) {
-        final FluentFuture<RpcResult<NetconfMessage>> delegateFuture = listener.sendRequest(
+        final ListenableFuture<RpcResult<NetconfMessage>> delegateFuture = listener.sendRequest(
             transformer.toRpcRequest(type, input), type.getLastComponent());
 
         final SettableFuture<DOMRpcResult> ret = SettableFuture.create();
-        delegateFuture.addCallback(new FutureCallback<RpcResult<NetconfMessage>>() {
+        Futures.addCallback(delegateFuture, new FutureCallback<RpcResult<NetconfMessage>>() {
             @Override
-            public void onSuccess(RpcResult<NetconfMessage> result) {
+            public void onSuccess(final RpcResult<NetconfMessage> result) {
                 ret.set(result.isSuccessful() ? transformer.toRpcResult(result.getResult(), type)
                         : new DefaultDOMRpcResult(result.getErrors()));
             }
 
             @Override
-            public void onFailure(Throwable cause) {
+            public void onFailure(final Throwable cause) {
                 ret.setException(new DOMRpcImplementationNotAvailableException(cause,
                     "Unable to invoke rpc %s on device %s", type, deviceId));
             }
index bf98c56e476be09a5b27d9681c9bf368c96c46af..b4f44b714a191f1c31191eef917d6921ab8d2200 100644 (file)
@@ -35,11 +35,6 @@ public class ReadWriteTx implements DOMDataTreeReadWriteTransaction {
         return delegateWriteTx.cancel();
     }
 
-    @Override
-    public void close() {
-        cancel();
-    }
-
     @Override
     public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path,
                     final NormalizedNode<?, ?> data) {
index f2dd3c5ca84a9888cc6ebae33633802363e24e49..ecbe6fa6a929af59a6b46ad36291066a7b65def1 100644 (file)
@@ -34,6 +34,8 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr
 
 import com.google.common.base.Preconditions;
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.Futures;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.util.Locale;
 import java.util.Optional;
@@ -80,110 +82,109 @@ public final class NetconfBaseOps {
         }
     }
 
-    public FluentFuture<DOMRpcResult> lock(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
+    public ListenableFuture<DOMRpcResult> lock(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
         Preconditions.checkNotNull(callback);
         Preconditions.checkNotNull(datastore);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(datastore));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(datastore));
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> lockCandidate(final FutureCallback<DOMRpcResult> callback) {
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH,
+    public ListenableFuture<DOMRpcResult> lockCandidate(final FutureCallback<DOMRpcResult> callback) {
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH,
             getLockContent(NETCONF_CANDIDATE_QNAME));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-
-    public FluentFuture<DOMRpcResult> lockRunning(final FutureCallback<DOMRpcResult> callback) {
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH,
+    public ListenableFuture<DOMRpcResult> lockRunning(final FutureCallback<DOMRpcResult> callback) {
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_LOCK_PATH,
             getLockContent(NETCONF_RUNNING_QNAME));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> unlock(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
+    public ListenableFuture<DOMRpcResult> unlock(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
         Preconditions.checkNotNull(callback);
         Preconditions.checkNotNull(datastore);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(datastore));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(datastore));
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> unlockRunning(final FutureCallback<DOMRpcResult> callback) {
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH,
+    public ListenableFuture<DOMRpcResult> unlockRunning(final FutureCallback<DOMRpcResult> callback) {
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH,
             getUnLockContent(NETCONF_RUNNING_QNAME));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> unlockCandidate(final FutureCallback<DOMRpcResult> callback) {
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH,
+    public ListenableFuture<DOMRpcResult> unlockCandidate(final FutureCallback<DOMRpcResult> callback) {
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_UNLOCK_PATH,
             getUnLockContent(NETCONF_CANDIDATE_QNAME));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> discardChanges(final FutureCallback<DOMRpcResult> callback) {
+    public ListenableFuture<DOMRpcResult> discardChanges(final FutureCallback<DOMRpcResult> callback) {
         Preconditions.checkNotNull(callback);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_DISCARD_CHANGES_PATH, null);
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_DISCARD_CHANGES_PATH, null);
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> commit(final FutureCallback<DOMRpcResult> callback) {
+    public ListenableFuture<DOMRpcResult> commit(final FutureCallback<DOMRpcResult> callback) {
         Preconditions.checkNotNull(callback);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_COMMIT_PATH,
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_COMMIT_PATH,
             NetconfMessageTransformUtil.COMMIT_RPC_CONTENT);
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> validate(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
+    public ListenableFuture<DOMRpcResult> validate(final FutureCallback<DOMRpcResult> callback, final QName datastore) {
         Preconditions.checkNotNull(callback);
         Preconditions.checkNotNull(datastore);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_VALIDATE_PATH,
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_VALIDATE_PATH,
             getValidateContent(datastore));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> validateCandidate(final FutureCallback<DOMRpcResult> callback) {
+    public ListenableFuture<DOMRpcResult> validateCandidate(final FutureCallback<DOMRpcResult> callback) {
         return validate(callback, NETCONF_CANDIDATE_QNAME);
     }
 
-    public FluentFuture<DOMRpcResult> validateRunning(final FutureCallback<DOMRpcResult> callback) {
+    public ListenableFuture<DOMRpcResult> validateRunning(final FutureCallback<DOMRpcResult> callback) {
         return validate(callback, NETCONF_RUNNING_QNAME);
     }
 
-    public FluentFuture<DOMRpcResult> copyConfig(final FutureCallback<DOMRpcResult> callback,
+    public ListenableFuture<DOMRpcResult> copyConfig(final FutureCallback<DOMRpcResult> callback,
                                                      final QName source, final QName target) {
         Preconditions.checkNotNull(callback);
         Preconditions.checkNotNull(source);
         Preconditions.checkNotNull(target);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_COPY_CONFIG_PATH,
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_COPY_CONFIG_PATH,
             getCopyConfigContent(source, target));
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<DOMRpcResult> copyRunningToCandidate(final FutureCallback<DOMRpcResult> callback) {
+    public ListenableFuture<DOMRpcResult> copyRunningToCandidate(final FutureCallback<DOMRpcResult> callback) {
         return copyConfig(callback, NETCONF_RUNNING_QNAME, NETCONF_CANDIDATE_QNAME);
     }
 
-    public FluentFuture<DOMRpcResult> getConfig(final FutureCallback<DOMRpcResult> callback, final QName datastore,
+    public ListenableFuture<DOMRpcResult> getConfig(final FutureCallback<DOMRpcResult> callback, final QName datastore,
                                                     final Optional<YangInstanceIdentifier> filterPath) {
         Preconditions.checkNotNull(callback);
         Preconditions.checkNotNull(datastore);
 
-        final FluentFuture<DOMRpcResult> future;
+        final ListenableFuture<DOMRpcResult> future;
         if (isFilterPresent(filterPath)) {
             final DataContainerChild<?, ?> node = transformer.toFilterStructure(filterPath.get());
             future = rpc.invokeRpc(NETCONF_GET_CONFIG_PATH,
@@ -193,25 +194,25 @@ public final class NetconfBaseOps {
                 NetconfMessageTransformUtil.wrap(NETCONF_GET_CONFIG_NODEID, getSourceNode(datastore)));
         }
 
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
-    public FluentFuture<Optional<NormalizedNode<?, ?>>> getConfigRunningData(
+    public ListenableFuture<Optional<NormalizedNode<?, ?>>> getConfigRunningData(
             final FutureCallback<DOMRpcResult> callback, final Optional<YangInstanceIdentifier> filterPath) {
-        final FluentFuture<DOMRpcResult> configRunning = getConfigRunning(callback, filterPath);
+        final ListenableFuture<DOMRpcResult> configRunning = getConfigRunning(callback, filterPath);
         return extractData(filterPath, configRunning);
     }
 
-    public FluentFuture<Optional<NormalizedNode<?, ?>>> getData(final FutureCallback<DOMRpcResult> callback,
+    public ListenableFuture<Optional<NormalizedNode<?, ?>>> getData(final FutureCallback<DOMRpcResult> callback,
                                                                     final Optional<YangInstanceIdentifier> filterPath) {
-        final FluentFuture<DOMRpcResult> configRunning = get(callback, filterPath);
+        final ListenableFuture<DOMRpcResult> configRunning = get(callback, filterPath);
         return extractData(filterPath, configRunning);
     }
 
-    private FluentFuture<Optional<NormalizedNode<?, ?>>> extractData(
-            final Optional<YangInstanceIdentifier> path, final FluentFuture<DOMRpcResult> configRunning) {
-        return configRunning.transform(result -> {
+    private ListenableFuture<Optional<NormalizedNode<?, ?>>> extractData(
+            final Optional<YangInstanceIdentifier> path, final ListenableFuture<DOMRpcResult> configRunning) {
+        return Futures.transform(configRunning, result -> {
             Preconditions.checkArgument(result.getErrors().isEmpty(), "Unable to read data: %s, errors: %s", path,
                 result.getErrors());
             final DataContainerChild<? extends YangInstanceIdentifier.PathArgument, ?> dataNode =
@@ -221,24 +222,24 @@ public final class NetconfBaseOps {
         }, MoreExecutors.directExecutor());
     }
 
-    public FluentFuture<DOMRpcResult> getConfigRunning(final FutureCallback<DOMRpcResult> callback,
+    public ListenableFuture<DOMRpcResult> getConfigRunning(final FutureCallback<DOMRpcResult> callback,
                                                            final Optional<YangInstanceIdentifier> filterPath) {
         return getConfig(callback, NETCONF_RUNNING_QNAME, filterPath);
     }
 
-    public FluentFuture<DOMRpcResult> getConfigCandidate(final FutureCallback<DOMRpcResult> callback,
+    public ListenableFuture<DOMRpcResult> getConfigCandidate(final FutureCallback<DOMRpcResult> callback,
                                                              final Optional<YangInstanceIdentifier> filterPath) {
         return getConfig(callback, NETCONF_CANDIDATE_QNAME, filterPath);
     }
 
-    public FluentFuture<DOMRpcResult> get(final FutureCallback<DOMRpcResult> callback,
+    public ListenableFuture<DOMRpcResult> get(final FutureCallback<DOMRpcResult> callback,
                                               final Optional<YangInstanceIdentifier> filterPath) {
         Preconditions.checkNotNull(callback);
 
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_GET_PATH, isFilterPresent(filterPath)
+        final ListenableFuture<DOMRpcResult> future = rpc.invokeRpc(NETCONF_GET_PATH, isFilterPresent(filterPath)
             ? NetconfMessageTransformUtil.wrap(NETCONF_GET_NODEID, toFilterStructure(filterPath.get(), schemaContext))
                     : NetconfMessageTransformUtil.GET_RPC_CONTENT);
-        future.addCallback(callback, MoreExecutors.directExecutor());
+        Futures.addCallback(future, callback, MoreExecutors.directExecutor());
         return future;
     }
 
index 8dc629e8fca34018d5333e4621b94111701084e2..730ae8090d409a220e9188ffbc929574a5656e7f 100644 (file)
@@ -11,7 +11,6 @@ import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 
-import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.Futures;
 import java.util.Collection;
 import java.util.Collections;
@@ -78,8 +77,7 @@ public class NetconfDeviceRpcTest {
     @Test
     public void testInvokeRpc() throws Exception {
         NormalizedNode<?, ?> input = createNode("urn:ietf:params:xml:ns:netconf:base:1.0", "2011-06-01", "filter");
-        final FluentFuture<DOMRpcResult> future = rpc.invokeRpc(path, input);
-        final DOMRpcResult result = future.get();
+        final DOMRpcResult result = rpc.invokeRpc(path, input).get();
         Assert.assertEquals(expectedReply, result);
     }
 
index d8c15248e86ef673d6cba00cae476c242774ab3a..c536dc5fdb8f9bb8583ffe8130f011a6a153b9ae 100644 (file)
@@ -18,7 +18,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.common.api.ReadFailedException;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 
@@ -35,7 +35,7 @@ final class BatchedExistenceCheck {
         this.outstanding = total;
     }
 
-    static BatchedExistenceCheck start(final DOMDataTreeReadTransaction readTx,
+    static BatchedExistenceCheck start(final DOMDataTreeReadOperations readTx,
             final LogicalDatastoreType datastore, final YangInstanceIdentifier parentPath,
             final Collection<? extends NormalizedNode<?, ?>> children) {
         final BatchedExistenceCheck ret = new BatchedExistenceCheck(children.size());
index 2d5c7b9ae4d43577474fd62ed3b7ec75c8311352..b30b00d107cf57d06b16c3f5726147ca6fb99cd4 100644 (file)
@@ -15,6 +15,7 @@ import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.util.concurrent.FluentFuture;
 import com.google.common.util.concurrent.FutureCallback;
+import com.google.common.util.concurrent.ListenableFuture;
 import com.google.common.util.concurrent.MoreExecutors;
 import java.io.Closeable;
 import java.util.ArrayList;
@@ -37,6 +38,7 @@ import org.opendaylight.mdsal.common.api.ReadFailedException;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
@@ -488,7 +490,7 @@ public class BrokerFacade implements Closeable {
     }
 
     // RPC
-    public FluentFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
+    public ListenableFuture<DOMRpcResult> invokeRpc(final SchemaPath type, final NormalizedNode<?, ?> input) {
         if (this.rpcService == null) {
             throw new RestconfDocumentedException(Status.SERVICE_UNAVAILABLE);
         }
@@ -515,12 +517,12 @@ public class BrokerFacade implements Closeable {
         listener.setRegistration(registration);
     }
 
-    private NormalizedNode<?, ?> readDataViaTransaction(final DOMDataTreeReadTransaction transaction,
+    private NormalizedNode<?, ?> readDataViaTransaction(final DOMDataTreeReadOperations transaction,
             final LogicalDatastoreType datastore, final YangInstanceIdentifier path) {
         return readDataViaTransaction(transaction, datastore, path, null);
     }
 
-    private NormalizedNode<?, ?> readDataViaTransaction(final DOMDataTreeReadTransaction transaction,
+    private NormalizedNode<?, ?> readDataViaTransaction(final DOMDataTreeReadOperations transaction,
             final LogicalDatastoreType datastore, final YangInstanceIdentifier path, final String withDefa) {
         LOG.trace("Read {} via Restconf: {}", datastore.name(), path);
 
index aa49c0bdc1588fb7cd2f3379a7f736879fa52cb4..e5be1fa141a168bc7d7f77fb119a60e802ec09c4 100644 (file)
@@ -30,6 +30,7 @@ import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediate
 import com.google.common.collect.ImmutableClassToInstanceMap;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.ArrayList;
 import java.util.Optional;
 import org.junit.Before;
@@ -186,7 +187,7 @@ public class BrokerFacadeTest {
         final DOMRpcResult expResult = mock(DOMRpcResult.class);
         doReturn(immediateFluentFuture(expResult)).when(this.mockRpcService).invokeRpc(this.type, this.dummyNode);
 
-        final FluentFuture<DOMRpcResult> actualFuture = this.brokerFacade.invokeRpc(this.type, this.dummyNode);
+        final ListenableFuture<DOMRpcResult> actualFuture = this.brokerFacade.invokeRpc(this.type, this.dummyNode);
         assertNotNull("Future is null", actualFuture);
         final DOMRpcResult actualResult = actualFuture.get();
         assertSame("invokeRpc", expResult, actualResult);
index 2471f4a1568b1bdfc4545b94952b8b63bd093e3d..e925612e63bc8e00c582b4e6c3e195c3660daab6 100644 (file)
@@ -9,7 +9,7 @@ package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.List;
 import java.util.concurrent.ExecutionException;
 import org.opendaylight.mdsal.common.api.TransactionCommitFailedException;
@@ -47,7 +47,7 @@ final class FutureCallbackTx {
      *             if the Future throws an exception
      */
     @SuppressWarnings("checkstyle:IllegalCatch")
-    static <T> void addCallback(final FluentFuture<T> listenableFuture, final String txType,
+    static <T> void addCallback(final ListenableFuture<T> listenableFuture, final String txType,
             final FutureDataFactory<? super T> dataFactory) throws RestconfDocumentedException {
 
         try {
index 0444d0ad5cab2aedd28a8ccdbd2589af1adff7d3..6a47e7051bed4e3c83c922c969724e7615c01f99 100644 (file)
@@ -15,7 +15,7 @@ import java.util.List;
 import javax.ws.rs.core.Response.Status;
 import org.opendaylight.mdsal.common.api.CommitInfo;
 import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction;
 import org.opendaylight.restconf.common.errors.RestconfDocumentedException;
@@ -273,7 +273,7 @@ public final class PatchDataTransactionUtil {
      * @param store Datastore
      * @param path Path to be checked
      */
-    public static void checkItemExistsWithinTransaction(final DOMDataTreeReadTransaction rwTransaction,
+    public static void checkItemExistsWithinTransaction(final DOMDataTreeReadOperations rwTransaction,
                                                 final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         final FluentFuture<Boolean> future = rwTransaction.exists(store, path);
         final FutureDataFactory<Boolean> response = new FutureDataFactory<>();
@@ -294,7 +294,7 @@ public final class PatchDataTransactionUtil {
      * @param store Datastore
      * @param path Path to be checked
      */
-    public static void checkItemDoesNotExistsWithinTransaction(final DOMDataTreeReadTransaction rwTransaction,
+    public static void checkItemDoesNotExistsWithinTransaction(final DOMDataTreeReadOperations rwTransaction,
                                                final LogicalDatastoreType store, final YangInstanceIdentifier path) {
         final FluentFuture<Boolean> future = rwTransaction.exists(store, path);
         final FutureDataFactory<Boolean> response = new FutureDataFactory<>();
index 918a415d61483ad388d725a7f117856b4cb9ff55..fcc7d3c39c75d75cf889835f8229bfadb4fe69d7 100644 (file)
@@ -7,7 +7,7 @@
  */
 package org.opendaylight.restconf.nb.rfc8040.rests.utils;
 
-import com.google.common.util.concurrent.FluentFuture;
+import com.google.common.util.concurrent.ListenableFuture;
 import java.util.Optional;
 import java.util.concurrent.CancellationException;
 import javax.ws.rs.core.Response.Status;
@@ -50,7 +50,7 @@ public final class RestconfInvokeOperationsUtil {
             final SchemaPath schemaPath) {
         final Optional<DOMRpcService> mountPointService = mountPoint.getService(DOMRpcService.class);
         if (mountPointService.isPresent()) {
-            final FluentFuture<DOMRpcResult> rpc = mountPointService.get().invokeRpc(schemaPath, data);
+            final ListenableFuture<DOMRpcResult> rpc = mountPointService.get().invokeRpc(schemaPath, data);
             return prepareResult(rpc);
         }
         final String errmsg = "RPC service is missing.";
@@ -76,7 +76,7 @@ public final class RestconfInvokeOperationsUtil {
             throw new RestconfDocumentedException(Status.SERVICE_UNAVAILABLE);
         }
 
-        final FluentFuture<DOMRpcResult> rpc = rpcService.invokeRpc(schemaPath, data);
+        final ListenableFuture<DOMRpcResult> rpc = rpcService.invokeRpc(schemaPath, data);
         return prepareResult(rpc);
     }
 
@@ -104,7 +104,7 @@ public final class RestconfInvokeOperationsUtil {
         }
     }
 
-    private static DOMRpcResult prepareResult(final FluentFuture<DOMRpcResult> rpc) {
+    private static DOMRpcResult prepareResult(final ListenableFuture<DOMRpcResult> rpc) {
         final RpcResultFactory dataFactory = new RpcResultFactory();
         FutureCallbackTx.addCallback(rpc, RestconfDataServiceConstant.PostData.POST_TX_TYPE, dataFactory);
         return dataFactory.build();
index 527e27deefc4643ae0037e0153da38968e56cfdc..28fe9458fa3635e1b09b8e66be847f9b10798359 100644 (file)
@@ -28,7 +28,7 @@ import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.mdsal.dom.api.DOMDataBroker;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
-import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction;
+import org.opendaylight.mdsal.dom.api.DOMDataTreeReadOperations;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction;
 import org.opendaylight.mdsal.dom.api.DOMNotificationListener;
 import org.opendaylight.restconf.common.context.InstanceIdentifierContext;
@@ -358,7 +358,7 @@ public final class SubscribeToStreamUtil {
     }
 
     static boolean checkExist(final SchemaContext schemaContext,
-                              final DOMDataTreeReadTransaction readWriteTransaction) {
+                              final DOMDataTreeReadOperations readWriteTransaction) {
         boolean exist;
         try {
             exist = readWriteTransaction.exists(LogicalDatastoreType.OPERATIONAL,
index 26ac2eaa004bc9580b4a5d6684adbf45ecefc9d5..71d9ed32e57f70c283c559766b616db23543c057 100644 (file)
@@ -11,7 +11,7 @@
   <parent>
     <groupId>org.opendaylight.mdsal</groupId>
     <artifactId>binding-parent</artifactId>
-    <version>3.0.6</version>
+    <version>4.0.0</version>
     <relativePath/>
   </parent>