From 1d91e1bbe29d0da6ea427a5d0837064c8a3d5134 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 5 Nov 2018 14:08:50 +0100 Subject: [PATCH] Migrate netconf to MD-SAL APIs This patch mass-migrates netconf components to use MD-SAL APIs. Change-Id: I2ddd0004ef0e72a7fa1fc7a9d7df26515326ca4c Signed-off-by: Robert Varga Signed-off-by: Jakub Morvay --- features/netconf-connector/pom.xml | 9 -- features/netconf/odl-netconf-mdsal/pom.xml | 8 -- netconf/callhome-provider/pom.xml | 8 +- .../callhome/mount/BaseCallHomeTopology.java | 5 +- .../mount/CallHomeAuthProviderImpl.java | 18 +-- .../mount/CallHomeMountDispatcher.java | 18 +-- .../callhome/mount/CallHomeTopology.java | 5 +- .../mount/CallhomeStatusReporter.java | 62 ++++---- .../IetfZeroTouchCallHomeServerProvider.java | 71 ++++++---- .../blueprint/callhome-topology.xml | 4 +- .../mount/CallHomeMountDispatcherTest.java | 4 +- .../DOMDataTransactionValidator.java | 13 +- .../MdsalNetconfOperationService.java | 5 +- .../MdsalNetconfOperationServiceFactory.java | 6 +- .../mdsal/connector/OperationProvider.java | 5 +- .../mdsal/connector/TransactionProvider.java | 57 ++++---- .../mdsal/connector/ops/CopyConfig.java | 19 ++- .../mdsal/connector/ops/EditConfig.java | 20 +-- .../mdsal/connector/ops/RuntimeRpc.java | 24 ++-- .../netconf/mdsal/connector/ops/get/Get.java | 17 ++- .../mdsal/connector/ops/get/GetConfig.java | 17 ++- .../blueprint/mdsal-netconf-connector.xml | 4 +- .../ops/AbstractNetconfOperationTest.java | 9 +- .../mdsal/connector/ops/RuntimeRpcTest.java | 58 +++----- .../mdsal/connector/ops/ValidateTest.java | 18 ++- netconf/mdsal-netconf-monitoring/pom.xml | 6 +- .../monitoring/MonitoringToMdsalWriter.java | 7 +- .../blueprint/mdsal-netconf-monitoring.xml | 2 +- .../MonitoringToMdsalWriterTest.java | 6 +- netconf/mdsal-netconf-notification/pom.xml | 4 +- .../CapabilityChangeNotificationProducer.java | 13 +- .../NotificationToMdsalWriter.java | 7 +- .../OperationalDatastoreListener.java | 14 +- .../SessionNotificationProducer.java | 12 +- .../blueprint/mdsal-netconf-notification.xml | 2 +- ...abilityChangeNotificationProducerTest.java | 13 +- .../NotificationToMdsalWriterTest.java | 6 +- .../OperationalDatastoreListenerTest.java | 10 +- .../SessionNotificationProducerTest.java | 19 +-- netconf/mdsal-netconf-yang-library/pom.xml | 8 +- .../library/SchemaServiceToMdsalWriter.java | 6 +- .../blueprint/mdsal-netconf-yang-library.xml | 2 +- .../SchemaServiceToMdsalWriterTest.java | 6 +- ...nnectionNotificationTopicRegistration.java | 4 +- .../netconf/NetconfEventSource.java | 20 +-- .../netconf/NetconfEventSourceManager.java | 19 ++- .../netconf/NetconfEventSourceMount.java | 51 ++++--- .../NetconfEventSourceRegistration.java | 6 +- .../NotificationTopicRegistration.java | 12 +- .../StreamNotificationTopicRegistration.java | 33 ++--- .../blueprint/messagebus-netconf.xml | 6 +- ...tionNotificationTopicRegistrationTest.java | 8 +- .../NetconfEventSourceManagerTest.java | 44 +++--- .../netconf/NetconfEventSourceMountTest.java | 30 ++-- .../netconf/NetconfEventSourceTest.java | 4 +- ...reamNotificationTopicRegistrationTest.java | 21 ++- netconf/netconf-console/pom.xml | 8 +- .../console/impl/NetconfCommandsImpl.java | 7 +- .../console/utils/NetconfConsoleUtils.java | 11 +- .../blueprint/netconf-command.xml | 2 +- .../console/impl/NetconfCommandsImplTest.java | 9 +- .../blueprint/netconf-topology.xml | 4 +- netconf/netconf-topology-singleton/pom.xml | 8 +- .../singleton/impl/MasterSalFacade.java | 13 +- .../singleton/impl/NetconfNodeManager.java | 15 +- .../impl/NetconfTopologyContext.java | 3 +- .../impl/NetconfTopologyManager.java | 27 ++-- .../singleton/impl/ProxyDOMDataBroker.java | 33 ++--- .../singleton/impl/ProxyDOMRpcService.java | 37 ++--- .../singleton/impl/SlaveSalFacade.java | 5 +- .../impl/actors/NetconfNodeActor.java | 22 +-- .../singleton/impl/actors/ReadAdapter.java | 18 ++- .../impl/actors/ReadTransactionActor.java | 9 +- .../actors/ReadWriteTransactionActor.java | 9 +- .../singleton/impl/actors/WriteAdapter.java | 6 +- .../impl/actors/WriteTransactionActor.java | 14 +- .../impl/tx/ActorProxyTransactionFacade.java | 62 +++++--- .../impl/tx/FailedProxyTransactionFacade.java | 35 +++-- .../impl/tx/ProxyReadTransaction.java | 9 +- .../impl/tx/ProxyReadWriteTransaction.java | 28 ++-- .../impl/tx/ProxyTransactionFacade.java | 4 +- .../impl/utils/ClusteringRpcException.java | 7 +- .../impl/utils/NetconfTopologySetup.java | 14 +- .../CreateInitialMasterActorData.java | 5 +- .../messages/transactions/DeleteRequest.java | 3 +- .../messages/transactions/ExistsRequest.java | 3 +- .../messages/transactions/MergeRequest.java | 2 +- .../messages/transactions/PutRequest.java | 3 +- .../messages/transactions/ReadRequest.java | 3 +- .../blueprint/netconf-topology-singleton.xml | 6 +- .../impl/MountPointEndToEndTest.java | 103 +++++++------- .../singleton/impl/NetconfNodeActorTest.java | 29 ++-- .../impl/NetconfNodeManagerTest.java | 46 +++--- .../impl/NetconfTopologyManagerTest.java | 51 ++++--- .../impl/ProxyDOMDataBrokerTest.java | 16 +-- .../impl/RemoteDeviceConnectorImplTest.java | 19 ++- .../impl/actors/ReadTransactionActorTest.java | 4 +- .../ReadTransactionActorTestAdapter.java | 29 ++-- .../actors/ReadWriteTransactionActorTest.java | 5 +- .../actors/WriteTransactionActorTest.java | 5 +- .../WriteTransactionActorTestAdapter.java | 9 +- .../tx/ProxyReadWriteTransactionTest.java | 15 +- netconf/netconf-topology/pom.xml | 17 +-- .../topology/AbstractNetconfTopology.java | 4 +- .../topology/api/NetconfConnectorFactory.java | 2 +- .../impl/NetconfConnectorFactoryImpl.java | 6 +- .../topology/impl/NetconfTopologyImpl.java | 23 ++- .../impl/NetconfTopologyImplTest.java | 12 +- netconf/sal-netconf-connector/pom.xml | 17 +-- .../sal/connect/api/DeviceActionFactory.java | 6 +- .../sal/connect/api/MessageTransformer.java | 10 +- .../connect/api/RemoteDeviceCommunicator.java | 5 +- .../sal/connect/api/RemoteDeviceHandler.java | 15 +- .../netconf/LibraryModulesSchemas.java | 2 +- .../sal/connect/netconf/NetconfDevice.java | 15 +- .../connect/netconf/NetconfStateSchemas.java | 4 +- .../NetconfStateSchemasResolverImpl.java | 1 - .../connect/netconf/NotificationHandler.java | 4 +- .../listener/NetconfDeviceCommunicator.java | 11 +- .../netconf/sal/KeepaliveSalFacade.java | 22 +-- .../netconf/sal/NetconfDeviceDataBroker.java | 34 +++-- .../sal/NetconfDeviceNotificationService.java | 7 +- .../connect/netconf/sal/NetconfDeviceRpc.java | 53 ++++--- .../netconf/sal/NetconfDeviceSalFacade.java | 14 +- .../netconf/sal/NetconfDeviceSalProvider.java | 31 ++-- .../sal/NetconfDeviceTopologyAdapter.java | 13 +- .../netconf/sal/NetconfKeystoreAdapter.java | 17 ++- .../sal/SchemalessNetconfDeviceRpc.java | 56 ++++---- .../netconf/sal/tx/AbstractWriteTx.java | 34 ++--- .../connect/netconf/sal/tx/ReadOnlyTx.java | 62 ++++---- .../connect/netconf/sal/tx/ReadWriteTx.java | 37 ++--- .../sal/connect/netconf/sal/tx/TxChain.java | 29 ++-- .../netconf/sal/tx/WriteCandidateTx.java | 4 +- .../netconf/sal/tx/WriteRunningTx.java | 5 +- ...NetconfRemoteSchemaYangSourceProvider.java | 2 +- .../mapping/BaseRpcSchemalessTransformer.java | 6 +- .../mapping/NetconfMessageTransformer.java | 28 ++-- .../mapping/SchemalessMessageTransformer.java | 10 +- .../connect/netconf/util/NetconfBaseOps.java | 132 +++++++++--------- .../util/NetconfMessageTransformUtil.java | 25 ++-- .../util/NetconfRpcFutureCallback.java | 3 +- .../util/NetconfRpcStructureTransformer.java | 4 +- .../netconf/util/RpcStructureTransformer.java | 2 +- .../SchemalessRpcStructureTransformer.java | 2 +- .../util/NetconfSalKeystoreService.java | 7 +- .../util/NetconfTopologyRPCProvider.java | 6 +- .../connect/netconf/NetconfDeviceTest.java | 10 +- .../netconf/NetconfStateSchemasTest.java | 31 ++-- .../netconf/NetconfToNotificationTest.java | 9 +- .../netconf/SchemalessNetconfDeviceTest.java | 5 +- .../netconf/sal/KeepaliveSalFacadeTest.java | 6 +- .../netconf/sal/MountInstanceTest.java | 12 +- .../sal/NetconfDeviceDataBrokerTest.java | 25 ++-- .../NetconfDeviceNotificationServiceTest.java | 5 +- .../netconf/sal/NetconfDeviceRpcTest.java | 15 +- .../sal/NetconfDeviceSalFacadeTest.java | 6 +- .../sal/NetconfDeviceSalProviderTest.java | 14 +- .../sal/NetconfDeviceTopologyAdapterTest.java | 35 +++-- .../sal/NetconfKeystoreAdapterTest.java | 8 +- .../sal/tx/NetconfDeviceWriteOnlyTxTest.java | 7 +- .../netconf/sal/tx/ReadOnlyTxTest.java | 7 +- .../netconf/sal/tx/ReadWriteTxTest.java | 31 ++-- .../connect/netconf/sal/tx/TxChainTest.java | 16 +-- .../sal/tx/WriteCandidateRunningTxTest.java | 7 +- .../netconf/sal/tx/WriteCandidateTxTest.java | 7 +- .../netconf/sal/tx/WriteRunningTxTest.java | 7 +- ...onfRemoteSchemaYangSourceProviderTest.java | 8 +- .../BaseRpcSchemalessTransformerTest.java | 3 +- .../NetconfMessageTransformerTest.java | 4 +- .../SchemalessMessageTransformerTest.java | 5 +- .../netconf/util/NetconfBaseOpsTest.java | 30 ++-- .../util/NetconfSalKeystoreServiceTest.java | 6 +- .../util/NetconfTopologyRPCProviderTest.java | 2 +- ...SchemalessRpcStructureTransformerTest.java | 12 +- netconf/tools/netconf-testtool/pom.xml | 4 +- .../test/tool/MdsalOperationProvider.java | 21 ++- netconf/yanglib/pom.xml | 4 +- .../yanglib/impl/YangLibProvider.java | 6 +- .../org/opendaylight/blueprint/yanglib.xml | 2 +- .../yanglib/impl/YangLibProviderTest.java | 6 +- 180 files changed, 1375 insertions(+), 1460 deletions(-) diff --git a/features/netconf-connector/pom.xml b/features/netconf-connector/pom.xml index aaba92d906..fa6ef049cd 100644 --- a/features/netconf-connector/pom.xml +++ b/features/netconf-connector/pom.xml @@ -21,7 +21,6 @@ 1.12.0-SNAPSHOT - 1.9.0-SNAPSHOT 3.0.2 1.6.0-SNAPSHOT 1.9.0-SNAPSHOT @@ -64,14 +63,6 @@ features xml - - org.opendaylight.controller - features-mdsal - ${controller.mdsal.version} - features - xml - runtime - ${project.groupId} features-netconf diff --git a/features/netconf/odl-netconf-mdsal/pom.xml b/features/netconf/odl-netconf-mdsal/pom.xml index bf3d9c9b61..2356a0f2e6 100644 --- a/features/netconf/odl-netconf-mdsal/pom.xml +++ b/features/netconf/odl-netconf-mdsal/pom.xml @@ -26,7 +26,6 @@ 1.6.0-SNAPSHOT - ${project.version} @@ -70,13 +69,6 @@ xml features - - org.opendaylight.controller - odl-mdsal-broker - ${controller.mdsal.version} - xml - features - ${project.groupId} mdsal-netconf-ssh diff --git a/netconf/callhome-provider/pom.xml b/netconf/callhome-provider/pom.xml index e9ded25d95..dcb4b6fed9 100644 --- a/netconf/callhome-provider/pom.xml +++ b/netconf/callhome-provider/pom.xml @@ -17,12 +17,12 @@ - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test-jar test diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/BaseCallHomeTopology.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/BaseCallHomeTopology.java index 2d174ea0ba..d9bead0a64 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/BaseCallHomeTopology.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/BaseCallHomeTopology.java @@ -5,15 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.callhome.mount; import io.netty.util.concurrent.EventExecutor; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory; import org.opendaylight.netconf.topology.AbstractNetconfTopology; diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java index c00bcec83b..a115bec6c8 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeAuthProviderImpl.java @@ -18,12 +18,12 @@ import java.util.Collection; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.callhome.protocol.AuthorizedKeysDecoder; import org.opendaylight.netconf.callhome.protocol.CallHomeAuthorization; import org.opendaylight.netconf.callhome.protocol.CallHomeAuthorization.Builder; @@ -44,14 +44,14 @@ public class CallHomeAuthProviderImpl implements CallHomeAuthorizationProvider, private static final InstanceIdentifier GLOBAL_PATH = InstanceIdentifier.create(NetconfCallhomeServer.class).child(Global.class); private static final DataTreeIdentifier GLOBAL = - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, GLOBAL_PATH); + DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, GLOBAL_PATH); private static final InstanceIdentifier ALLOWED_DEVICES_PATH = InstanceIdentifier.create(NetconfCallhomeServer.class).child(AllowedDevices.class).child(Device.class); private static final DataTreeIdentifier ALLOWED_DEVICES = - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, ALLOWED_DEVICES_PATH); + DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, ALLOWED_DEVICES_PATH); private static final DataTreeIdentifier ALLOWED_OP_DEVICES = - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, ALLOWED_DEVICES_PATH); + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, ALLOWED_DEVICES_PATH); private final GlobalConfig globalConfig = new GlobalConfig(); private final DeviceConfig deviceConfig = new DeviceConfig(); diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcher.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcher.java index 95d4b7be7b..e8e1925962 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcher.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcher.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.callhome.mount; import io.netty.util.concurrent.EventExecutor; @@ -15,8 +14,8 @@ import java.net.InetSocketAddress; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.callhome.mount.CallHomeMountSessionContext.CloseCallback; import org.opendaylight.netconf.callhome.protocol.CallHomeChannelActivator; import org.opendaylight.netconf.callhome.protocol.CallHomeNetconfSubsystemListener; @@ -48,15 +47,12 @@ public class CallHomeMountDispatcher implements NetconfClientDispatcher, CallHom protected CallHomeTopology topology; - private final CloseCallback onCloseHandler = new CloseCallback() { - @Override - public void onClosed(final CallHomeMountSessionContext deviceContext) { - LOG.info("Removing {} from Netconf Topology.", deviceContext.getId()); - topology.disconnectNode(deviceContext.getId()); - } + private final CloseCallback onCloseHandler = deviceContext -> { + LOG.info("Removing {} from Netconf Topology.", deviceContext.getId()); + topology.disconnectNode(deviceContext.getId()); }; - private DeviceActionFactory deviceActionFactory; + private final DeviceActionFactory deviceActionFactory; public CallHomeMountDispatcher(final String topologyId, final EventExecutor eventExecutor, final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor, @@ -71,7 +67,7 @@ public class CallHomeMountDispatcher implements NetconfClientDispatcher, CallHom final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor, final SchemaRepositoryProvider schemaRepositoryProvider, final DataBroker dataBroker, final DOMMountPointService mountService, - final AAAEncryptionService encryptionService, DeviceActionFactory deviceActionFactory) { + final AAAEncryptionService encryptionService, final DeviceActionFactory deviceActionFactory) { this.topologyId = topologyId; this.eventExecutor = eventExecutor; this.keepaliveExecutor = keepaliveExecutor; diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java index d918def01b..84c743ea66 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallHomeTopology.java @@ -5,15 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.callhome.mount; import io.netty.util.concurrent.EventExecutor; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallhomeStatusReporter.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallhomeStatusReporter.java index 3db60e9fca..728c291b78 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallhomeStatusReporter.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/CallhomeStatusReporter.java @@ -5,28 +5,28 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.callhome.mount; -import com.google.common.base.Optional; +import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.PublicKey; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.callhome.protocol.AuthorizedKeysDecoder; import org.opendaylight.netconf.callhome.protocol.StatusRecorder; import org.opendaylight.yang.gen.v1.urn.opendaylight.callhome.device.status.rev170112.Device1; @@ -63,12 +63,12 @@ class CallhomeStatusReporter implements DataTreeChangeListener, StatusReco CallhomeStatusReporter(final DataBroker broker) { this.dataBroker = broker; - this.reg = dataBroker.registerDataTreeChangeListener(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + this.reg = dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, NETCONF_TOPO_IID.child(Node.class)), this); } @Override - public void onDataTreeChanged(@Nonnull final Collection> changes) { + public void onDataTreeChanged(final Collection> changes) { for (DataTreeModification change: changes) { final DataObjectModification rootNode = change.getRootNode(); final InstanceIdentifier identifier = change.getRootPath().getRootIdentifier(); @@ -205,26 +205,25 @@ class CallhomeStatusReporter implements DataTreeChangeListener, StatusReco } private Device readAndGetDevice(final NodeId nodeId) { - return readDevice(nodeId).orNull(); + return readDevice(nodeId).orElse(null); } - @Nonnull private Optional readDevice(final NodeId nodeId) { - ReadOnlyTransaction opTx = dataBroker.newReadOnlyTransaction(); + ReadTransaction opTx = dataBroker.newReadOnlyTransaction(); InstanceIdentifier deviceIID = buildDeviceInstanceIdentifier(nodeId); ListenableFuture> devFuture = opTx.read(LogicalDatastoreType.OPERATIONAL, deviceIID); try { return devFuture.get(); } catch (InterruptedException | ExecutionException e) { - return Optional.absent(); + return Optional.empty(); } } private void writeDevice(final NodeId nodeId, final Device modifiedDevice) { - ReadWriteTransaction opTx = dataBroker.newReadWriteTransaction(); + WriteTransaction opTx = dataBroker.newWriteOnlyTransaction(); opTx.merge(LogicalDatastoreType.OPERATIONAL, buildDeviceInstanceIdentifier(nodeId), modifiedDevice); - opTx.commit(); + commit(opTx, modifiedDevice.key()); } private static InstanceIdentifier buildDeviceInstanceIdentifier(final NodeId nodeId) { @@ -259,21 +258,34 @@ class CallhomeStatusReporter implements DataTreeChangeListener, StatusReco private void setDeviceStatus(final Device device) { WriteTransaction tx = dataBroker.newWriteOnlyTransaction(); - InstanceIdentifier deviceIId = - InstanceIdentifier.create(NetconfCallhomeServer.class) + InstanceIdentifier deviceIId = InstanceIdentifier.create(NetconfCallhomeServer.class) .child(AllowedDevices.class) .child(Device.class, device.key()); tx.merge(LogicalDatastoreType.OPERATIONAL, deviceIId, device); - tx.commit(); + commit(tx, device.key()); + } + + private static void commit(WriteTransaction tx, DeviceKey device) { + tx.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(CommitInfo result) { + LOG.debug("Device {} committed", device); + } + + @Override + public void onFailure(Throwable cause) { + LOG.warn("Failed to commit device {}", device, cause); + } + }, MoreExecutors.directExecutor()); } private AllowedDevices getDevices() { - ReadOnlyTransaction rxTransaction = dataBroker.newReadOnlyTransaction(); + ReadTransaction rxTransaction = dataBroker.newReadOnlyTransaction(); ListenableFuture> devicesFuture = rxTransaction.read(LogicalDatastoreType.OPERATIONAL, IetfZeroTouchCallHomeServerProvider.ALL_DEVICES); try { - return devicesFuture.get().orNull(); + return devicesFuture.get().orElse(null); } catch (ExecutionException | InterruptedException e) { LOG.error("Error trying to read the whitelist devices: {}", e); return null; diff --git a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/IetfZeroTouchCallHomeServerProvider.java b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/IetfZeroTouchCallHomeServerProvider.java index 8bb21ffa51..3b3c815a82 100644 --- a/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/IetfZeroTouchCallHomeServerProvider.java +++ b/netconf/callhome-provider/src/main/java/org/opendaylight/netconf/callhome/mount/IetfZeroTouchCallHomeServerProvider.java @@ -5,12 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.callhome.mount; import com.google.common.annotations.VisibleForTesting; -import com.google.common.base.Optional; +import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.MoreExecutors; import io.netty.channel.nio.NioEventLoopGroup; import java.io.IOException; import java.net.InetSocketAddress; @@ -18,17 +18,19 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutionException; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.api.ReadWriteTransaction; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.callhome.protocol.CallHomeAuthorizationProvider; import org.opendaylight.netconf.callhome.protocol.NetconfCallHomeServer; import org.opendaylight.netconf.callhome.protocol.NetconfCallHomeServerBuilder; @@ -77,7 +79,7 @@ public class IetfZeroTouchCallHomeServerProvider implements AutoCloseable, DataT LOG.info("Initializing provider for {}", APPNAME); initializeServer(); listenerReg = dataBroker.registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, ALL_DEVICES), this); + DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, ALL_DEVICES), this); LOG.info("Initialization complete for {}", APPNAME); } catch (IOException | Configuration.ConfigurationException e) { LOG.error("Unable to successfully initialize", e); @@ -139,13 +141,13 @@ public class IetfZeroTouchCallHomeServerProvider implements AutoCloseable, DataT } @Override - public void onDataTreeChanged(@Nonnull final Collection> changes) { + public void onDataTreeChanged(final Collection> changes) { // In case of any changes to the devices datatree, register the changed values with callhome server // As of now, no way to add a new callhome client key to the CallHomeAuthorization instance since // its created under CallHomeAuthorizationProvider. // Will have to redesign a bit here. // CallHomeAuthorization. - ReadOnlyTransaction roConfigTx = dataBroker.newReadOnlyTransaction(); + ReadTransaction roConfigTx = dataBroker.newReadOnlyTransaction(); ListenableFuture> devicesFuture = roConfigTx .read(LogicalDatastoreType.CONFIGURATION, IetfZeroTouchCallHomeServerProvider.ALL_DEVICES); @@ -177,20 +179,29 @@ public class IetfZeroTouchCallHomeServerProvider implements AutoCloseable, DataT return; } - ReadWriteTransaction opTx = dataBroker.newReadWriteTransaction(); + WriteTransaction opTx = dataBroker.newWriteOnlyTransaction(); for (InstanceIdentifier removedIID : deletedDevices) { LOG.info("Deleting the entry for callhome device {}", removedIID); opTx.delete(LogicalDatastoreType.OPERATIONAL, removedIID); } - opTx.commit(); + opTx.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(CommitInfo result) { + LOG.debug("Device deletions committed"); + } + + @Override + public void onFailure(Throwable cause) { + LOG.warn("Failed to commit device deletions", cause); + } + }, MoreExecutors.directExecutor()); } private static List getReadDevices(final ListenableFuture> devicesFuture) throws InterruptedException, ExecutionException { - Optional opt = devicesFuture.get(); - return opt.isPresent() ? opt.get().getDevice() : Collections.emptyList(); + return devicesFuture.get().map(AllowedDevices::getDevice).orElse(Collections.emptyList()); } private void readAndUpdateStatus(Device cfgDevice) throws InterruptedException, ExecutionException { @@ -200,17 +211,27 @@ public class IetfZeroTouchCallHomeServerProvider implements AutoCloseable, DataT ReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); ListenableFuture> deviceFuture = tx.read(LogicalDatastoreType.OPERATIONAL, deviceIID); + final Device1 devStatus; Optional opDevGet = deviceFuture.get(); - Device1 devStatus = new Device1Builder().setDeviceStatus(Device1.DeviceStatus.DISCONNECTED).build(); if (opDevGet.isPresent()) { - Device opDevice = opDevGet.get(); - devStatus = opDevice.augmentation(Device1.class); + devStatus = opDevGet.get().augmentation(Device1.class); + } else { + devStatus = new Device1Builder().setDeviceStatus(Device1.DeviceStatus.DISCONNECTED).build(); } - cfgDevice = new DeviceBuilder().addAugmentation(Device1.class, devStatus) - .setSshHostKey(cfgDevice.getSshHostKey()).setUniqueId(cfgDevice.getUniqueId()).build(); + tx.merge(LogicalDatastoreType.OPERATIONAL, deviceIID, new DeviceBuilder() + .addAugmentation(Device1.class, devStatus).setSshHostKey(cfgDevice.getSshHostKey()) + .setUniqueId(cfgDevice.getUniqueId()).build()); + tx.commit().addCallback(new FutureCallback() { + @Override + public void onSuccess(CommitInfo result) { + LOG.debug("Device {} status update committed", cfgDevice.key()); + } - tx.merge(LogicalDatastoreType.OPERATIONAL, deviceIID, cfgDevice); - tx.commit(); + @Override + public void onFailure(Throwable cause) { + LOG.warn("Failed to commit device {} status update", cfgDevice.key(), cause); + } + }, MoreExecutors.directExecutor()); } } diff --git a/netconf/callhome-provider/src/main/resources/org/opendaylight/blueprint/callhome-topology.xml b/netconf/callhome-provider/src/main/resources/org/opendaylight/blueprint/callhome-topology.xml index ed5e6ebe9d..7d79a213f1 100755 --- a/netconf/callhome-provider/src/main/resources/org/opendaylight/blueprint/callhome-topology.xml +++ b/netconf/callhome-provider/src/main/resources/org/opendaylight/blueprint/callhome-topology.xml @@ -20,9 +20,9 @@ interface="io.netty.util.concurrent.EventExecutor" odl:type="global-event-executor"/> + interface="org.opendaylight.mdsal.binding.api.DataBroker"/> + interface="org.opendaylight.mdsal.dom.api.DOMMountPointService"/> diff --git a/netconf/callhome-provider/src/test/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcherTest.java b/netconf/callhome-provider/src/test/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcherTest.java index 2fa318857a..b9e5e3f7c5 100644 --- a/netconf/callhome-provider/src/test/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcherTest.java +++ b/netconf/callhome-provider/src/test/java/org/opendaylight/netconf/callhome/mount/CallHomeMountDispatcherTest.java @@ -25,8 +25,8 @@ import org.junit.Test; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.api.messages.NetconfHelloMessageAdditionalHeader; import org.opendaylight.netconf.callhome.protocol.CallHomeChannelActivator; import org.opendaylight.netconf.callhome.protocol.CallHomeProtocolSessionContext; diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/DOMDataTransactionValidator.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/DOMDataTransactionValidator.java index 9d4aa7d764..db84128c2b 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/DOMDataTransactionValidator.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/DOMDataTransactionValidator.java @@ -5,15 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector; import com.google.common.annotations.Beta; import com.google.common.util.concurrent.CheckedFuture; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMServiceExtension; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMServiceExtension; import org.opendaylight.yangtools.yang.common.OperationFailedException; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @@ -26,7 +25,7 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder; @Beta public interface DOMDataTransactionValidator extends DOMDataBrokerExtension { /** - * Validates state of the data tree associated with the provided {@link DOMDataWriteTransaction}. + * Validates state of the data tree associated with the provided {@link DOMDataTreeWriteTransaction}. * *

The operation should not have any side-effects on the transaction state. * @@ -40,7 +39,7 @@ public interface DOMDataTransactionValidator extends DOMDataBrokerExtension { * operation is complete. A successful validate returns nothing. On failure, the Future will fail * with a {@link ValidationFailedException} or an exception derived from ValidationFailedException. */ - CheckedFuture validate(DOMDataWriteTransaction transaction); + CheckedFuture validate(DOMDataTreeWriteTransaction transaction); /** * Failed validation of asynchronous transaction. This exception is raised and returned when transaction validation diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationService.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationService.java index e5cf5a56d8..1b29d9fe57 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationService.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationService.java @@ -5,12 +5,11 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector; import java.util.Set; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.mapping.api.NetconfOperation; import org.opendaylight.netconf.mapping.api.NetconfOperationService; diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java index b4b03355b1..829f66bb42 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java @@ -18,8 +18,8 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.api.DOMYangTextSourceProvider; import org.opendaylight.netconf.api.capability.BasicCapability; @@ -153,7 +153,7 @@ public class MdsalNetconfOperationServiceFactory implements NetconfOperationServ @Override public AutoCloseable registerCapabilityListener(final CapabilityListener listener) { // Advertise validate capability only if DOMDataBroker provides DOMDataTransactionValidator - if (dataBroker.getSupportedExtensions().get(DOMDataTransactionValidator.class) != null) { + if (dataBroker.getExtensions().get(DOMDataTransactionValidator.class) != null) { listener.onCapabilitiesChanged(Collections.singleton(VALIDATE_CAPABILITY), Collections.emptySet()); } // Advertise namespaces of supported YANG models as NETCONF capabilities diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/OperationProvider.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/OperationProvider.java index ddf713f6a4..eb5b5d2118 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/OperationProvider.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/OperationProvider.java @@ -5,13 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector; import com.google.common.collect.ImmutableSet; import java.util.Set; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.mapping.api.NetconfOperation; import org.opendaylight.netconf.mdsal.connector.ops.Commit; import org.opendaylight.netconf.mdsal.connector.ops.CopyConfig; diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/TransactionProvider.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/TransactionProvider.java index 7e2ecc8d9d..32ac2cd4d8 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/TransactionProvider.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/TransactionProvider.java @@ -5,35 +5,33 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector; -import static org.opendaylight.netconf.mdsal.connector.DOMDataTransactionValidator.ValidationFailedException; - 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 java.util.ArrayList; import java.util.List; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; import org.opendaylight.netconf.api.DocumentedException.ErrorType; +import org.opendaylight.netconf.mdsal.connector.DOMDataTransactionValidator.ValidationFailedException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class TransactionProvider implements AutoCloseable { - private static final Logger LOG = LoggerFactory.getLogger(TransactionProvider.class); private final DOMDataBroker dataBroker; - private DOMDataReadWriteTransaction candidateTransaction = null; - private DOMDataReadWriteTransaction runningTransaction = null; - private final List allOpenReadWriteTransactions = new ArrayList<>(); + private DOMDataTreeReadWriteTransaction candidateTransaction = null; + private DOMDataTreeReadWriteTransaction runningTransaction = null; + private final List allOpenReadWriteTransactions = new ArrayList<>(); private final DOMDataTransactionValidator transactionValidator; private final String netconfSessionIdForReporting; @@ -43,20 +41,19 @@ public class TransactionProvider implements AutoCloseable { public TransactionProvider(final DOMDataBroker dataBroker, final String netconfSessionIdForReporting) { this.dataBroker = dataBroker; this.netconfSessionIdForReporting = netconfSessionIdForReporting; - this.transactionValidator = (DOMDataTransactionValidator)dataBroker.getSupportedExtensions() - .get(DOMDataTransactionValidator.class); + this.transactionValidator = dataBroker.getExtensions().getInstance(DOMDataTransactionValidator.class); } @Override public synchronized void close() { - for (final DOMDataReadWriteTransaction rwt : allOpenReadWriteTransactions) { + for (final DOMDataTreeReadWriteTransaction rwt : allOpenReadWriteTransactions) { rwt.cancel(); } allOpenReadWriteTransactions.clear(); } - public synchronized Optional getCandidateTransaction() { + public synchronized Optional getCandidateTransaction() { if (candidateTransaction == null) { return Optional.absent(); } @@ -64,7 +61,7 @@ public class TransactionProvider implements AutoCloseable { return Optional.of(candidateTransaction); } - public synchronized DOMDataReadWriteTransaction getOrCreateTransaction() { + public synchronized DOMDataTreeReadWriteTransaction getOrCreateTransaction() { if (getCandidateTransaction().isPresent()) { return getCandidateTransaction().get(); } @@ -92,11 +89,10 @@ public class TransactionProvider implements AutoCloseable { } catch (final ValidationFailedException e) { LOG.debug("Candidate transaction validation {} failed on session {}", candidateTransaction, netconfSessionIdForReporting, e); - final String cause = e.getCause() != null ? (" Cause: " + e.getCause().getMessage()) : ""; - throw new DocumentedException( - "Candidate transaction validate failed [sessionId=" + netconfSessionIdForReporting + "]: " - + e.getMessage() + cause, - e, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, ErrorSeverity.ERROR); + final String cause = e.getCause() != null ? " Cause: " + e.getCause().getMessage() : ""; + throw new DocumentedException("Candidate transaction validate failed [sessionId=" + + netconfSessionIdForReporting + "]: " + e.getMessage() + cause, e, ErrorType.APPLICATION, + ErrorTag.OPERATION_FAILED, ErrorSeverity.ERROR); } } @@ -107,15 +103,15 @@ public class TransactionProvider implements AutoCloseable { return true; } - final CheckedFuture future = candidateTransaction.submit(); + final FluentFuture future = candidateTransaction.commit(); try { - future.checkedGet(); - } catch (final TransactionCommitFailedException e) { + future.get(); + } catch (final InterruptedException | ExecutionException e) { LOG.debug("Transaction {} failed on", candidateTransaction, e); final String cause = e.getCause() != null ? " Cause: " + e.getCause().getMessage() : ""; - throw new DocumentedException( - "Transaction commit failed on " + e.getMessage() + " " + netconfSessionIdForReporting + cause, e, - ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, ErrorSeverity.ERROR); + throw new DocumentedException("Transaction commit failed on " + e.getMessage() + " " + + netconfSessionIdForReporting + cause, e, ErrorType.APPLICATION, ErrorTag.OPERATION_FAILED, + ErrorSeverity.ERROR); } finally { allOpenReadWriteTransactions.remove(candidateTransaction); candidateTransaction = null; @@ -126,7 +122,7 @@ public class TransactionProvider implements AutoCloseable { public synchronized void abortTransaction() { LOG.debug("Aborting current candidateTransaction"); - final Optional otx = getCandidateTransaction(); + final Optional otx = getCandidateTransaction(); if (!otx.isPresent()) { LOG.warn("discard-changes triggerd on an empty transaction for session: {}", netconfSessionIdForReporting); return; @@ -136,18 +132,17 @@ public class TransactionProvider implements AutoCloseable { candidateTransaction = null; } - public synchronized DOMDataReadWriteTransaction createRunningTransaction() { + public synchronized DOMDataTreeReadWriteTransaction createRunningTransaction() { runningTransaction = dataBroker.newReadWriteTransaction(); allOpenReadWriteTransactions.add(runningTransaction); return runningTransaction; } - public synchronized void abortRunningTransaction(final DOMDataReadWriteTransaction tx) { + public synchronized void abortRunningTransaction(final DOMDataTreeReadWriteTransaction tx) { LOG.debug("Aborting current running Transaction"); Preconditions.checkState(runningTransaction != null, NO_TRANSACTION_FOUND_FOR_SESSION + netconfSessionIdForReporting); tx.cancel(); allOpenReadWriteTransactions.remove(tx); } - } diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/CopyConfig.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/CopyConfig.java index c3e3cb423d..c249a44391 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/CopyConfig.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/CopyConfig.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops; import static org.opendaylight.netconf.api.xml.XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0; @@ -19,13 +18,13 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; +import java.util.concurrent.ExecutionException; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.dom.DOMResult; -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.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; @@ -104,7 +103,7 @@ public final class CopyConfig extends AbstractEdit { // , unlike , always replaces entire configuration, // so remove old configuration first: - final DOMDataReadWriteTransaction rwTx = transactionProvider.getOrCreateTransaction(); + final DOMDataTreeReadWriteTransaction rwTx = transactionProvider.getOrCreateTransaction(); rwTx.put(LogicalDatastoreType.CONFIGURATION, YangInstanceIdentifier.EMPTY, EMPTY_ROOT_NODE); // Then create nodes present in the element: @@ -169,16 +168,16 @@ public final class CopyConfig extends AbstractEdit { private ContainerNode readData(final XmlElement source) throws DocumentedException { final Datastore sourceDatastore = getDatastore(source); - final DOMDataReadWriteTransaction rwTx = getTransaction(sourceDatastore); + final DOMDataTreeReadWriteTransaction rwTx = getTransaction(sourceDatastore); final YangInstanceIdentifier dataRoot = YangInstanceIdentifier.EMPTY; try { - final Optional> normalizedNodeOptional = rwTx.read( - LogicalDatastoreType.CONFIGURATION, dataRoot).checkedGet(); + final java.util.Optional> normalizedNodeOptional = rwTx.read( + LogicalDatastoreType.CONFIGURATION, dataRoot).get(); if (sourceDatastore == Datastore.running) { transactionProvider.abortRunningTransaction(rwTx); } return (ContainerNode) normalizedNodeOptional.get(); - } catch (ReadFailedException e) { + } catch (InterruptedException | ExecutionException e) { throw new IllegalStateException("Unable to read data " + dataRoot, e); } } @@ -194,7 +193,7 @@ public final class CopyConfig extends AbstractEdit { } } - private DOMDataReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { + private DOMDataTreeReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { if (datastore == Datastore.candidate) { return transactionProvider.getOrCreateTransaction(); } else if (datastore == Datastore.running) { diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditConfig.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditConfig.java index 28f8857aae..7fcb151105 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditConfig.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/EditConfig.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops; import com.google.common.base.Optional; @@ -14,8 +13,8 @@ import java.util.List; import java.util.ListIterator; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; @@ -87,7 +86,7 @@ public final class EditConfig extends AbstractEdit { } private void executeOperations(final DataTreeChangeTracker changeTracker) throws DocumentedException { - final DOMDataReadWriteTransaction rwTx = transactionProvider.getOrCreateTransaction(); + final DOMDataTreeReadWriteTransaction rwTx = transactionProvider.getOrCreateTransaction(); final List aa = changeTracker.getDataTreeChanges(); final ListIterator iterator = aa.listIterator(aa.size()); @@ -97,7 +96,7 @@ public final class EditConfig extends AbstractEdit { } } - private void executeChange(final DOMDataReadWriteTransaction rwtx, final DataTreeChange change) + private void executeChange(final DOMDataTreeReadWriteTransaction rwtx, final DataTreeChange change) throws DocumentedException { final YangInstanceIdentifier path = YangInstanceIdentifier.create(change.getPath()); final NormalizedNode changeData = change.getChangeRoot(); @@ -110,9 +109,7 @@ public final class EditConfig extends AbstractEdit { break; case CREATE: try { - final Optional> readResult = - rwtx.read(LogicalDatastoreType.CONFIGURATION, path).get(); - if (readResult.isPresent()) { + if (rwtx.read(LogicalDatastoreType.CONFIGURATION, path).get().isPresent()) { throw new DocumentedException("Data already exists, cannot execute CREATE operation", ErrorType.PROTOCOL, ErrorTag.DATA_EXISTS, ErrorSeverity.ERROR); } @@ -128,9 +125,7 @@ public final class EditConfig extends AbstractEdit { break; case DELETE: try { - final Optional> readResult = - rwtx.read(LogicalDatastoreType.CONFIGURATION, path).get(); - if (!readResult.isPresent()) { + if (!rwtx.read(LogicalDatastoreType.CONFIGURATION, path).get().isPresent()) { throw new DocumentedException("Data is missing, cannot execute DELETE operation", ErrorType.PROTOCOL, ErrorTag.DATA_MISSING, ErrorSeverity.ERROR); } @@ -147,7 +142,7 @@ public final class EditConfig extends AbstractEdit { } } - private void mergeParentMixin(final DOMDataReadWriteTransaction rwtx, final YangInstanceIdentifier path, + private void mergeParentMixin(final DOMDataTreeReadWriteTransaction rwtx, final YangInstanceIdentifier path, final NormalizedNode change) { final YangInstanceIdentifier parentNodeYid = path.getParent(); if (change instanceof MapEntryNode) { @@ -206,5 +201,4 @@ public final class EditConfig extends AbstractEdit { protected String getOperationName() { return OPERATION_NAME; } - } diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/RuntimeRpc.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/RuntimeRpc.java index 55c1533d57..52449dfcc1 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/RuntimeRpc.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/RuntimeRpc.java @@ -5,25 +5,23 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops; import com.google.common.base.Optional; -import com.google.common.util.concurrent.CheckedFuture; import java.io.IOException; import java.net.URI; import java.util.Collection; import java.util.Collections; import java.util.Map; +import java.util.concurrent.ExecutionException; import javax.annotation.Nullable; import javax.xml.stream.XMLOutputFactory; import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamWriter; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; @@ -156,17 +154,17 @@ public class RuntimeRpc extends AbstractSingletonNetconfOperation { final SchemaPath schemaPath = SchemaPath.create(Collections.singletonList(rpcDefinition.getQName()), true); final NormalizedNode inputNode = rpcToNNode(operationElement, rpcDefinition.getInput()); - final CheckedFuture rpcFuture = rpcService.invokeRpc(schemaPath, inputNode); + final DOMRpcResult result; try { - final DOMRpcResult result = rpcFuture.checkedGet(); - if (result.getResult() == null) { - return XmlUtil.createElement(document, XmlNetconfConstants.OK, - Optional.of(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0)); - } - return (Element) transformNormalizedNode(document, result.getResult(), rpcDefinition.getOutput().getPath()); - } catch (final DOMRpcException e) { + result = rpcService.invokeRpc(schemaPath, inputNode).get(); + } catch (final InterruptedException | ExecutionException e) { throw DocumentedException.wrap(e); } + if (result.getResult() == null) { + return XmlUtil.createElement(document, XmlNetconfConstants.OK, + Optional.of(XmlNetconfConstants.URN_IETF_PARAMS_XML_NS_NETCONF_BASE_1_0)); + } + return (Element) transformNormalizedNode(document, result.getResult(), rpcDefinition.getOutput().getPath()); } @Override diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/Get.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/Get.java index 2bdfcb0694..b7f0b2bf00 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/Get.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/Get.java @@ -5,13 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops.get; import com.google.common.base.Optional; -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.DOMDataReadWriteTransaction; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; @@ -53,10 +52,10 @@ public class Get extends AbstractGet { final YangInstanceIdentifier dataRoot = dataRootOptional.get(); - final DOMDataReadWriteTransaction rwTx = getTransaction(Datastore.running); + final DOMDataTreeReadWriteTransaction rwTx = getTransaction(Datastore.running); try { - final Optional> normalizedNodeOptional = rwTx.read( - LogicalDatastoreType.OPERATIONAL, dataRoot).checkedGet(); + final java.util.Optional> normalizedNodeOptional = rwTx.read( + LogicalDatastoreType.OPERATIONAL, dataRoot).get(); transactionProvider.abortRunningTransaction(rwTx); if (!normalizedNodeOptional.isPresent()) { @@ -64,13 +63,13 @@ public class Get extends AbstractGet { } return serializeNodeWithParentStructure(document, dataRoot, normalizedNodeOptional.get()); - } catch (final ReadFailedException e) { + } catch (final InterruptedException | ExecutionException e) { LOG.warn("Unable to read data: {}", dataRoot, e); throw new IllegalStateException("Unable to read data " + dataRoot, e); } } - private DOMDataReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { + private DOMDataTreeReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { if (datastore == Datastore.candidate) { return transactionProvider.getOrCreateTransaction(); } else if (datastore == Datastore.running) { diff --git a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/GetConfig.java b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/GetConfig.java index ec3da5934a..4cce7ac2c0 100644 --- a/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/GetConfig.java +++ b/netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/ops/get/GetConfig.java @@ -5,14 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops.get; import com.google.common.base.Optional; import com.google.common.base.Preconditions; -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.DOMDataReadWriteTransaction; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.DocumentedException.ErrorSeverity; import org.opendaylight.netconf.api.DocumentedException.ErrorTag; @@ -65,10 +64,10 @@ public class GetConfig extends AbstractGet { // Proper exception should be thrown Preconditions.checkState(getConfigExecution.getDatastore().isPresent(), "Source element missing from request"); - final DOMDataReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore().get()); + final DOMDataTreeReadWriteTransaction rwTx = getTransaction(getConfigExecution.getDatastore().get()); try { - final Optional> normalizedNodeOptional = rwTx.read( - LogicalDatastoreType.CONFIGURATION, dataRoot).checkedGet(); + final java.util.Optional> normalizedNodeOptional = rwTx.read( + LogicalDatastoreType.CONFIGURATION, dataRoot).get(); if (getConfigExecution.getDatastore().get() == Datastore.running) { transactionProvider.abortRunningTransaction(rwTx); } @@ -78,13 +77,13 @@ public class GetConfig extends AbstractGet { } return serializeNodeWithParentStructure(document, dataRoot, normalizedNodeOptional.get()); - } catch (final ReadFailedException e) { + } catch (final InterruptedException | ExecutionException e) { LOG.warn("Unable to read data: {}", dataRoot, e); throw new IllegalStateException("Unable to read data " + dataRoot, e); } } - private DOMDataReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { + private DOMDataTreeReadWriteTransaction getTransaction(final Datastore datastore) throws DocumentedException { if (datastore == Datastore.candidate) { return transactionProvider.getOrCreateTransaction(); } else if (datastore == Datastore.running) { diff --git a/netconf/mdsal-netconf-connector/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-connector.xml b/netconf/mdsal-netconf-connector/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-connector.xml index d4d37cca61..925d854e6e 100644 --- a/netconf/mdsal-netconf-connector/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-connector.xml +++ b/netconf/mdsal-netconf-connector/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-connector.xml @@ -10,8 +10,8 @@ xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0" odl:use-default-for-reference-types="true"> - - + + invokeRpc( - @Nonnull final SchemaPath type, @Nullable final NormalizedNode input) { - return Futures.immediateCheckedFuture(new DefaultDOMRpcResult(null, Collections.emptyList())); + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { + return immediateFluentFuture(new DefaultDOMRpcResult(null, Collections.emptyList())); } - @Nonnull @Override - public ListenerRegistration registerRpcListener( - @Nonnull final T listener) { - return null; + public ListenerRegistration registerRpcListener(final T listener) { + return NoOpListenerRegistration.of(listener); } }; private static final DOMRpcService RPC_SERVICE_FAILED_INVOCATION = new DOMRpcService() { - @Nonnull @Override - public CheckedFuture invokeRpc( - @Nonnull final SchemaPath type, @Nullable final NormalizedNode input) { - return Futures.immediateFailedCheckedFuture(new DOMRpcException("rpc invocation not implemented yet") { + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { + return immediateFailedFluentFuture(new DOMRpcException("rpc invocation not implemented yet") { private static final long serialVersionUID = 1L; }); } - @Nonnull @Override - public ListenerRegistration registerRpcListener( - @Nonnull final T listener) { - return null; + public ListenerRegistration registerRpcListener(final T listener) { + return NoOpListenerRegistration.of(listener); } }; private final DOMRpcService rpcServiceSuccessfulInvocation = new DOMRpcService() { - @Nonnull @Override - public CheckedFuture invokeRpc( - @Nonnull final SchemaPath type, @Nullable final NormalizedNode input) { + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { final Collection> children = (Collection>) input.getValue(); final Module module = schemaContext.findModules(type.getLastComponent().getNamespace()).stream() @@ -135,14 +124,12 @@ public class RuntimeRpcTest { .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(outputSchemaNode.getQName())) .withValue(children).build(); - return Futures.immediateCheckedFuture(new DefaultDOMRpcResult(node)); + return immediateFluentFuture(new DefaultDOMRpcResult(node)); } - @Nonnull @Override - public ListenerRegistration registerRpcListener( - @Nonnull final T lsnr) { - return null; + public ListenerRegistration registerRpcListener(final T lsnr) { + return NoOpListenerRegistration.of(lsnr); } }; @@ -177,8 +164,7 @@ public class RuntimeRpcTest { final SourceIdentifier sId = (SourceIdentifier) invocationOnMock.getArguments()[0]; final YangTextSchemaSource yangTextSchemaSource = YangTextSchemaSource.delegateForByteSource(sId, ByteSource.wrap("module test".getBytes())); - return Futures.immediateCheckedFuture(yangTextSchemaSource); - + return immediateFluentFuture(yangTextSchemaSource); }).when(sourceProvider).getSource(any(SourceIdentifier.class)); this.schemaContext = YangParserTestUtils.parseYangResource("/yang/mdsal-netconf-rpc-test.yang"); diff --git a/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/netconf/mdsal/connector/ops/ValidateTest.java b/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/netconf/mdsal/connector/ops/ValidateTest.java index 8c8aa5b022..a426c76b78 100644 --- a/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/netconf/mdsal/connector/ops/ValidateTest.java +++ b/netconf/mdsal-netconf-connector/src/test/java/org/opendaylight/netconf/mdsal/connector/ops/ValidateTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.mdsal.connector.ops; import static org.junit.Assert.assertEquals; @@ -20,14 +19,14 @@ import static org.opendaylight.netconf.mdsal.connector.ops.AbstractNetconfOperat import static org.opendaylight.netconf.mdsal.connector.ops.AbstractNetconfOperationTest.executeOperation; import static org.opendaylight.netconf.mdsal.connector.ops.AbstractNetconfOperationTest.verifyResponse; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.Futures; -import java.util.Collections; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.mdsal.connector.DOMDataTransactionValidator; import org.opendaylight.netconf.mdsal.connector.DOMDataTransactionValidator.ValidationFailedException; @@ -40,7 +39,7 @@ public class ValidateTest { @Mock private DOMDataTransactionValidator failingValidator; @Mock - private DOMDataReadWriteTransaction readWriteTx; + private DOMDataTreeReadWriteTransaction readWriteTx; @Mock private DOMDataBroker dataBroker; @@ -123,12 +122,12 @@ public class ValidateTest { } private void whenValidatorIsNotDefined() { - doReturn(Collections.emptyMap()).when(dataBroker).getSupportedExtensions(); + doReturn(ImmutableClassToInstanceMap.of()).when(dataBroker).getExtensions(); } private void whenUsingValidator(final DOMDataTransactionValidator validator) { - doReturn(Collections.singletonMap(DOMDataTransactionValidator.class, validator)) - .when(dataBroker).getSupportedExtensions(); + doReturn(ImmutableClassToInstanceMap.of(DOMDataTransactionValidator.class, validator)) + .when(dataBroker).getExtensions(); } private TransactionProvider initCandidateTransaction() { @@ -137,8 +136,7 @@ public class ValidateTest { return transactionProvider; } - private Document validate(final String resource, - final TransactionProvider transactionProvider) throws Exception { + private Document validate(final String resource, final TransactionProvider transactionProvider) throws Exception { final Validate validate = new Validate(SESSION_ID_FOR_REPORTING, transactionProvider); return executeOperation(validate, resource); } diff --git a/netconf/mdsal-netconf-monitoring/pom.xml b/netconf/mdsal-netconf-monitoring/pom.xml index 20df5db8cb..3ffe00f616 100644 --- a/netconf/mdsal-netconf-monitoring/pom.xml +++ b/netconf/mdsal-netconf-monitoring/pom.xml @@ -40,13 +40,13 @@ netconf-util - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api org.opendaylight.controller sal-common-util - + com.google.guava diff --git a/netconf/mdsal-netconf-monitoring/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/monitoring/MonitoringToMdsalWriter.java b/netconf/mdsal-netconf-monitoring/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/monitoring/MonitoringToMdsalWriter.java index 27d0280d26..09aa2d1f26 100644 --- a/netconf/mdsal-netconf-monitoring/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/monitoring/MonitoringToMdsalWriter.java +++ b/netconf/mdsal-netconf-monitoring/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/monitoring/MonitoringToMdsalWriter.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.config.yang.netconf.mdsal.monitoring; import com.google.common.base.Preconditions; @@ -13,10 +12,10 @@ import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; import java.util.Collection; import java.util.function.Consumer; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.api.monitoring.NetconfMonitoringService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.NetconfState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.netconf.state.Capabilities; diff --git a/netconf/mdsal-netconf-monitoring/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-monitoring.xml b/netconf/mdsal-netconf-monitoring/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-monitoring.xml index c1c8c8d0af..d42d9bfea5 100644 --- a/netconf/mdsal-netconf-monitoring/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-monitoring.xml +++ b/netconf/mdsal-netconf-monitoring/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-monitoring.xml @@ -11,7 +11,7 @@ odl:use-default-for-reference-types="true"> netconf-notifications-api - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api org.opendaylight.controller diff --git a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/CapabilityChangeNotificationProducer.java b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/CapabilityChangeNotificationProducer.java index b3c6c97ea7..a7c695cf53 100644 --- a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/CapabilityChangeNotificationProducer.java +++ b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/CapabilityChangeNotificationProducer.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.config.yang.netconf.mdsal.notification; import com.google.common.collect.ImmutableList; @@ -15,9 +14,9 @@ import java.util.Collection; import java.util.Collections; import java.util.Set; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; @@ -31,7 +30,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; - /** * Listens on capabilities changes in data store and publishes them to base * netconf notification stream listener. @@ -54,7 +52,7 @@ public final class CapabilityChangeNotificationProducer extends OperationalDatas } @Override - public void onDataTreeChanged(@Nonnull Collection> changes) { + public void onDataTreeChanged(@Nonnull final Collection> changes) { for (DataTreeModification change : changes) { final DataObjectModification rootNode = change.getRootNode(); final DataObjectModification.ModificationType modificationType = rootNode.getModificationType(); @@ -86,7 +84,7 @@ public final class CapabilityChangeNotificationProducer extends OperationalDatas } - private void publishNotification(Set added, Set removed) { + private void publishNotification(final Set added, final Set removed) { final NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder(); netconfCapabilityChangeBuilder.setChangedBy(new ChangedByBuilder().setServerOrUser(new ServerBuilder() .setServer(true).build()).build()); @@ -100,6 +98,7 @@ public final class CapabilityChangeNotificationProducer extends OperationalDatas /** * Invoked by blueprint. */ + @Override public void close() { if (baseNotificationPublisherRegistration != null) { baseNotificationPublisherRegistration.close(); diff --git a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java index ea447e5117..d19fa0b777 100644 --- a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java +++ b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriter.java @@ -5,16 +5,15 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.config.yang.netconf.mdsal.notification; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.netconf.notifications.NotificationRegistration; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; diff --git a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListener.java b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListener.java index b3c54bde49..3275f29796 100644 --- a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListener.java +++ b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListener.java @@ -7,10 +7,10 @@ */ package org.opendaylight.controller.config.yang.netconf.mdsal.notification; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -29,7 +29,7 @@ abstract class OperationalDatastoreListener implements Dat * * @param instanceIdentifier instance identifier of subtree, on which this instance should listen on changes. */ - OperationalDatastoreListener(InstanceIdentifier instanceIdentifier) { + OperationalDatastoreListener(final InstanceIdentifier instanceIdentifier) { this.instanceIdentifier = instanceIdentifier; } @@ -39,8 +39,8 @@ abstract class OperationalDatastoreListener implements Dat * @param dataBroker data broker * @return listener registration */ - ListenerRegistration> registerOnChanges(DataBroker dataBroker) { - DataTreeIdentifier id = new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); + ListenerRegistration> registerOnChanges(final DataBroker dataBroker) { + DataTreeIdentifier id = DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); return dataBroker.registerDataTreeChangeListener(id, this); } diff --git a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducer.java b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducer.java index 08bd188a97..4bc7d9ff13 100644 --- a/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducer.java +++ b/netconf/mdsal-netconf-notification/src/main/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducer.java @@ -10,9 +10,9 @@ package org.opendaylight.controller.config.yang.netconf.mdsal.notification; import com.google.common.base.Preconditions; import java.util.Collection; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.SessionIdOrZeroType; @@ -52,7 +52,7 @@ public class SessionNotificationProducer extends OperationalDatastoreListener> changes) { + public void onDataTreeChanged(@Nonnull final Collection> changes) { for (DataTreeModification change : changes) { final DataObjectModification rootNode = change.getRootNode(); final DataObjectModification.ModificationType modificationType = rootNode.getModificationType(); @@ -75,7 +75,7 @@ public class SessionNotificationProducer extends OperationalDatastoreListener added, final List deleted) { + private static NetconfCapabilityChange changedCapabilitesFrom(final List added, final List deleted) { NetconfCapabilityChangeBuilder netconfCapabilityChangeBuilder = new NetconfCapabilityChangeBuilder(); netconfCapabilityChangeBuilder.setChangedBy(new ChangedByBuilder().setServerOrUser( new ServerBuilder().setServer(true).build()).build()); diff --git a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriterTest.java b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriterTest.java index d9682163b9..0aec779b2f 100644 --- a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriterTest.java +++ b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/NotificationToMdsalWriterTest.java @@ -19,9 +19,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.netconf.notifications.NotificationRegistration; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; diff --git a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListenerTest.java b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListenerTest.java index 3d3b972ada..bc0a2fa8ff 100644 --- a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListenerTest.java +++ b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/OperationalDatastoreListenerTest.java @@ -20,9 +20,9 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -40,12 +40,12 @@ public class OperationalDatastoreListenerTest { public void testDataStoreListener() { final InstanceIdentifier instanceIdentifier = InstanceIdentifier.create(DataObject.class); final DataTreeIdentifier testId = - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, instanceIdentifier); final OperationalDatastoreListener op = new OperationalDatastoreListener(instanceIdentifier) { @Override - public void onDataTreeChanged(@Nonnull Collection collection) { + public void onDataTreeChanged(@Nonnull final Collection collection) { } }; doReturn(null).when(dataBroker).registerDataTreeChangeListener(any(), any()); diff --git a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducerTest.java b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducerTest.java index b311b3eff0..f0a6317764 100644 --- a/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducerTest.java +++ b/netconf/mdsal-netconf-notification/src/test/java/org/opendaylight/controller/config/yang/netconf/mdsal/notification/SessionNotificationProducerTest.java @@ -21,12 +21,12 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.netconf.notifications.BaseNotificationPublisherRegistration; import org.opendaylight.netconf.notifications.NetconfNotificationCollector; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.HostBuilder; @@ -114,11 +114,11 @@ public class SessionNotificationProducerTest { Assert.assertEquals(session.getUsername(), value.getUsername()); } - private static Session createSession(long id) { + private static Session createSession(final long id) { return createSessionWithInRpcCount(id, 0); } - private static Session createSessionWithInRpcCount(long id, long inRpc) { + private static Session createSessionWithInRpcCount(final long id, final long inRpc) { return new SessionBuilder() .setSessionId(id) .setSourceHost(HostBuilder.getDefaultInstance("0.0.0.0")) @@ -128,7 +128,8 @@ public class SessionNotificationProducerTest { } @SuppressWarnings("unchecked") - private static DataTreeModification getTreeModification(Session session, ModificationType type) { + private static DataTreeModification getTreeModification(final Session session, + final ModificationType type) { final DataTreeModification treeChange = mock(DataTreeModification.class); final DataObjectModification changeObject = mock(DataObjectModification.class); switch (type) { diff --git a/netconf/mdsal-netconf-yang-library/pom.xml b/netconf/mdsal-netconf-yang-library/pom.xml index f88ca7ab30..24494ec0c5 100644 --- a/netconf/mdsal-netconf-yang-library/pom.xml +++ b/netconf/mdsal-netconf-yang-library/pom.xml @@ -24,12 +24,12 @@ - org.opendaylight.controller - sal-core-api + org.opendaylight.mdsal + mdsal-dom-api - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api org.opendaylight.mdsal.binding.model.ietf diff --git a/netconf/mdsal-netconf-yang-library/src/main/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriter.java b/netconf/mdsal-netconf-yang-library/src/main/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriter.java index 5fe60f91ff..8768b487ea 100644 --- a/netconf/mdsal-netconf-yang-library/src/main/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriter.java +++ b/netconf/mdsal-netconf-yang-library/src/main/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriter.java @@ -13,10 +13,10 @@ import java.util.List; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; diff --git a/netconf/mdsal-netconf-yang-library/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-yang-library.xml b/netconf/mdsal-netconf-yang-library/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-yang-library.xml index bc352b51ae..8523ca8762 100755 --- a/netconf/mdsal-netconf-yang-library/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-yang-library.xml +++ b/netconf/mdsal-netconf-yang-library/src/main/resources/org/opendaylight/blueprint/mdsal-netconf-yang-library.xml @@ -11,7 +11,7 @@ odl:use-default-for-reference-types="true"> diff --git a/netconf/mdsal-netconf-yang-library/src/test/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriterTest.java b/netconf/mdsal-netconf-yang-library/src/test/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriterTest.java index 525bd5f86d..94cd1e7257 100644 --- a/netconf/mdsal-netconf-yang-library/src/test/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriterTest.java +++ b/netconf/mdsal-netconf-yang-library/src/test/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriterTest.java @@ -20,9 +20,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistration.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistration.java index 3e6573d243..34a0fb9e9f 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistration.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistration.java @@ -13,8 +13,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventsource.rev141202.EventSourceStatus; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventsource.rev141202.EventSourceStatusNotification; diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSource.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSource.java index 2581ae6924..0d84d9a89a 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSource.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSource.java @@ -18,26 +18,26 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import com.google.common.util.concurrent.ListenableFuture; import java.io.IOException; +import java.time.Instant; import java.util.ArrayList; import java.util.Collection; -import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; +import java.util.concurrent.ExecutionException; import java.util.regex.Pattern; import javax.xml.stream.XMLStreamException; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMEvent; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; import org.opendaylight.controller.messagebus.app.util.TopicDOMNotification; import org.opendaylight.controller.messagebus.app.util.Util; import org.opendaylight.controller.messagebus.spi.EventSource; +import org.opendaylight.mdsal.dom.api.DOMEvent; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.util.NetconfUtil; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.NotificationPattern; @@ -144,8 +144,8 @@ public class NetconfEventSource implements EventSource, DOMNotificationListener try { availableStreams = mount.getAvailableStreams(); streamMap = Maps.uniqueIndex(availableStreams, input -> input.getName().getValue()); - } catch (ReadFailedException e) { - LOG.warn("Can not read streams for node {}", mount.getNodeId()); + } catch (InterruptedException | ExecutionException e) { + LOG.warn("Can not read streams for node {}", mount.getNodeId(), e); } return streamMap; } @@ -213,9 +213,9 @@ public class NetconfEventSource implements EventSource, DOMNotificationListener @Override public void onNotification(final DOMNotification notification) { SchemaPath notificationPath = notification.getType(); - Date notificationEventTime = null; + Instant notificationEventTime = null; if (notification instanceof DOMEvent) { - notificationEventTime = ((DOMEvent) notification).getEventTime(); + notificationEventTime = ((DOMEvent) notification).getEventInstant(); } final String namespace = notification.getType().getLastComponent().getNamespace().toString(); for (NotificationTopicRegistration notifReg : notificationTopicRegistrations.get(namespace)) { diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManager.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManager.java index fe409a8ed0..4877a735b1 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManager.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManager.java @@ -5,22 +5,21 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.messagebus.eventsources.netconf; import com.google.common.base.Preconditions; import java.util.Collection; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; import org.opendaylight.controller.messagebus.spi.EventSourceRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; @@ -73,7 +72,7 @@ public final class NetconfEventSourceManager implements DataTreeChangeListener( + listenerRegistration = dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, NETCONF_DEVICE_PATH), this); LOG.info("NetconfEventSourceManager initialized."); } diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMount.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMount.java index 5ef20aeb54..cad403e5ad 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMount.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMount.java @@ -7,32 +7,31 @@ */ package org.opendaylight.netconf.messagebus.eventsources.netconf; -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 java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Collections; -import java.util.Date; import java.util.List; +import java.util.Optional; +import java.util.concurrent.ExecutionException; import javassist.ClassPool; -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.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.api.DOMService; import org.opendaylight.mdsal.binding.dom.codec.gen.impl.StreamWriterGenerator; import org.opendaylight.mdsal.binding.dom.codec.impl.BindingNormalizedNodeCodecRegistry; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; import org.opendaylight.mdsal.binding.generator.util.BindingRuntimeContext; import org.opendaylight.mdsal.binding.generator.util.JavassistUtils; +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.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInput; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInputBuilder; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf; @@ -110,12 +109,11 @@ class NetconfEventSourceMount { * @param lastEventTime last event time * @return rpc result */ - CheckedFuture invokeCreateSubscription(final Stream stream, - final Optional lastEventTime) { + FluentFuture invokeCreateSubscription(final Stream stream, final Optional lastEventTime) { final CreateSubscriptionInputBuilder inputBuilder = new CreateSubscriptionInputBuilder() .setStream(stream.getName()); if (lastEventTime.isPresent() && stream.isReplaySupport()) { - final ZonedDateTime dateTime = lastEventTime.get().toInstant().atZone(ZoneId.systemDefault()); + final ZonedDateTime dateTime = lastEventTime.get().atZone(ZoneId.systemDefault()); final String formattedDate = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(dateTime); inputBuilder.setStartTime(new DateAndTime(formattedDate)); } @@ -130,21 +128,22 @@ class NetconfEventSourceMount { * @param stream stream * @return rpc result */ - CheckedFuture invokeCreateSubscription(final Stream stream) { - return invokeCreateSubscription(stream, Optional.absent()); + FluentFuture invokeCreateSubscription(final Stream stream) { + return invokeCreateSubscription(stream, Optional.empty()); } /** - * Returns list of streams avaliable on device. + * Returns list of streams available on device. * * @return list of streams - * @throws ReadFailedException if data read fails + * @throws ExecutionException if data read fails + * @throws InterruptedException if data read fails */ - List getAvailableStreams() throws ReadFailedException { - DOMDataReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction(); - CheckedFuture>, ReadFailedException> checkFeature = tx - .read(LogicalDatastoreType.OPERATIONAL, STREAMS_PATH); - Optional> streams = checkFeature.checkedGet(); + List getAvailableStreams() throws InterruptedException, ExecutionException { + DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction(); + FluentFuture>> checkFeature = tx.read(LogicalDatastoreType.OPERATIONAL, + STREAMS_PATH); + Optional> streams = checkFeature.get(); if (streams.isPresent()) { Streams streams1 = (Streams) CODEC_REGISTRY.fromNormalizedNode(STREAMS_PATH, streams.get()).getValue(); return streams1.getStream(); diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceRegistration.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceRegistration.java index 2d1aab54e8..2ae032288b 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceRegistration.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceRegistration.java @@ -7,11 +7,11 @@ */ package org.opendaylight.netconf.messagebus.eventsources.netconf; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.List; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; +import java.util.Optional; import org.opendaylight.controller.messagebus.spi.EventSourceRegistration; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability; @@ -88,7 +88,7 @@ public final class NetconfEventSourceRegistration implements AutoCloseable { } Optional> getEventSourceRegistration() { - return Optional.fromNullable(eventSourceRegistration); + return Optional.ofNullable(eventSourceRegistration); } NetconfNode getNetconfNode() { diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NotificationTopicRegistration.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NotificationTopicRegistration.java index d9b3543167..efd0c0b12c 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NotificationTopicRegistration.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NotificationTopicRegistration.java @@ -7,9 +7,9 @@ */ package org.opendaylight.netconf.messagebus.eventsources.netconf; -import com.google.common.base.Optional; import com.google.common.collect.Sets; -import java.util.Date; +import java.time.Instant; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; @@ -34,7 +34,7 @@ abstract class NotificationTopicRegistration implements AutoCloseable { private final String sourceName; private final String notificationUrnPrefix; private boolean replaySupported; - private Date lastEventTime; + private Instant lastEventTime; protected final ConcurrentHashMap> notificationTopicMap = new ConcurrentHashMap<>(); protected NotificationTopicRegistration(final NotificationSourceType notificationSourceType, @@ -93,11 +93,11 @@ abstract class NotificationTopicRegistration implements AutoCloseable { return nameSpace.startsWith(getNotificationUrnPrefix()); } - Optional getLastEventTime() { - return Optional.fromNullable(lastEventTime); + Optional getLastEventTime() { + return Optional.ofNullable(lastEventTime); } - void setLastEventTime(final Date lastEventTime) { + void setLastEventTime(final Instant lastEventTime) { this.lastEventTime = lastEventTime; } diff --git a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistration.java b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistration.java index 01966c2072..2d70d5f6c2 100644 --- a/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistration.java +++ b/netconf/messagebus-netconf/src/main/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistration.java @@ -7,14 +7,14 @@ */ package org.opendaylight.netconf.messagebus.eventsources.netconf; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import java.util.ArrayList; import java.util.List; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import java.util.concurrent.ExecutionException; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -44,7 +44,7 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration * @param netconfEventSource event source */ StreamNotificationTopicRegistration(final Stream stream, final String notificationPrefix, - NetconfEventSource netconfEventSource) { + final NetconfEventSource netconfEventSource) { super(NotificationSourceType.NetconfDeviceStream, stream.getName().getValue(), notificationPrefix); this.netconfEventSource = netconfEventSource; this.mountPoint = netconfEventSource.getMount(); @@ -58,15 +58,16 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration /** * Subscribes to notification stream associated with this registration. */ + @Override void activateNotificationSource() { if (!isActive()) { LOG.info("Stream {} is not active on node {}. Will subscribe.", this.getStreamName(), this.nodeId); - final CheckedFuture result = mountPoint.invokeCreateSubscription(stream); + final FluentFuture result = mountPoint.invokeCreateSubscription(stream); try { - result.checkedGet(); + result.get(); setActive(true); - } catch (DOMRpcException e) { - LOG.warn("Can not subscribe stream {} on node {}", this.getSourceName(), this.nodeId); + } catch (InterruptedException | ExecutionException e) { + LOG.warn("Can not subscribe stream {} on node {}", this.getSourceName(), this.nodeId, e); setActive(false); } } else { @@ -79,16 +80,16 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration * from last * received event time will be requested. */ + @Override void reActivateNotificationSource() { if (isActive()) { LOG.info("Stream {} is reactivating on node {}.", this.getStreamName(), this.nodeId); - final CheckedFuture result; - result = mountPoint.invokeCreateSubscription(stream, getLastEventTime()); + final FluentFuture result = mountPoint.invokeCreateSubscription(stream, getLastEventTime()); try { - result.checkedGet(); + result.get(); setActive(true); - } catch (DOMRpcException e) { - LOG.warn("Can not resubscribe stream {} on node {}", this.getSourceName(), this.nodeId); + } catch (InterruptedException | ExecutionException e) { + LOG.warn("Can not resubscribe stream {} on node {}", this.getSourceName(), this.nodeId, e); setActive(false); } } @@ -115,7 +116,7 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration } @Override - boolean registerNotificationTopic(SchemaPath notificationPath, TopicId topicId) { + boolean registerNotificationTopic(final SchemaPath notificationPath, final TopicId topicId) { if (!checkNotificationPath(notificationPath)) { LOG.debug("Bad SchemaPath for notification try to register"); return false; @@ -139,7 +140,7 @@ class StreamNotificationTopicRegistration extends NotificationTopicRegistration } @Override - synchronized void unRegisterNotificationTopic(TopicId topicId) { + synchronized void unRegisterNotificationTopic(final TopicId topicId) { List notificationPathToRemove = new ArrayList<>(); for (SchemaPath notifKey : notificationTopicMap.keySet()) { Set topicList = notificationTopicMap.get(notifKey); diff --git a/netconf/messagebus-netconf/src/main/resources/org/opendaylight/blueprint/messagebus-netconf.xml b/netconf/messagebus-netconf/src/main/resources/org/opendaylight/blueprint/messagebus-netconf.xml index 028c20e0f0..c5eb61a3b8 100644 --- a/netconf/messagebus-netconf/src/main/resources/org/opendaylight/blueprint/messagebus-netconf.xml +++ b/netconf/messagebus-netconf/src/main/resources/org/opendaylight/blueprint/messagebus-netconf.xml @@ -11,12 +11,12 @@ odl:use-default-for-reference-types="true"> + interface="org.opendaylight.mdsal.dom.api.DOMMountPointService" /> + interface="org.opendaylight.mdsal.dom.api.DOMNotificationPublishService" /> diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistrationTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistrationTest.java index 5d3669aa05..b6ab7fe86a 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistrationTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/ConnectionNotificationTopicRegistrationTest.java @@ -20,8 +20,8 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventsource.rev141202.EventSourceStatus; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; @@ -84,7 +84,7 @@ public class ConnectionNotificationTopicRegistrationTest { Assert.assertFalse(afterUnregister.contains(topic3)); } - private TopicId registerTopic(String value) { + private TopicId registerTopic(final String value) { final TopicId topic = TopicId.getDefaultInstance(value); registration.registerNotificationTopic(ConnectionNotificationTopicRegistration.EVENT_SOURCE_STATUS_PATH, topic); return topic; @@ -97,7 +97,7 @@ public class ConnectionNotificationTopicRegistrationTest { * @param listener listener * @param status expected value */ - private static void checkStatus(DOMNotificationListener listener, EventSourceStatus status) { + private static void checkStatus(final DOMNotificationListener listener, final EventSourceStatus status) { ArgumentCaptor notificationCaptor = ArgumentCaptor.forClass(DOMNotification.class); verify(listener).onNotification(notificationCaptor.capture()); final DOMNotification value = notificationCaptor.getValue(); diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java index 2cb740eea2..85b6f98dec 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceManagerTest.java @@ -14,31 +14,31 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import com.google.common.base.Optional; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import java.util.Collections; import java.util.HashMap; +import java.util.Optional; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.MountPointService; -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.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.controller.messagebus.spi.EventSource; import org.opendaylight.controller.messagebus.spi.EventSourceRegistry; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.MountPointService; +import org.opendaylight.mdsal.binding.api.RpcProviderService; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.Streams; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus; @@ -55,7 +55,7 @@ public class NetconfEventSourceManagerTest { MountPointService mountPointServiceMock; EventSourceRegistry eventSourceTopologyMock; DataTreeModification dataTreeModificationMock; - RpcProviderRegistry rpcProviderRegistryMock; + RpcProviderService rpcProviderRegistryMock; EventSourceRegistry eventSourceRegistry; @BeforeClass @@ -70,7 +70,7 @@ public class NetconfEventSourceManagerTest { mock(DOMNotificationPublishService.class); domMountPointServiceMock = mock(DOMMountPointService.class); eventSourceTopologyMock = mock(EventSourceRegistry.class); - rpcProviderRegistryMock = mock(RpcProviderRegistry.class); + rpcProviderRegistryMock = mock(RpcProviderService.class); eventSourceRegistry = mock(EventSourceRegistry.class); listenerRegistrationMock = mock(ListenerRegistration.class); @@ -87,7 +87,7 @@ public class NetconfEventSourceManagerTest { doReturn(Optional.of(mock(DOMNotificationService.class))).when(domMountPointMock) .getService(DOMNotificationService.class); - DOMDataReadOnlyTransaction rtx = mock(DOMDataReadOnlyTransaction.class); + DOMDataTreeReadTransaction rtx = mock(DOMDataTreeReadTransaction.class); doReturn(rtx).when(mpDataBroker).newReadOnlyTransaction(); CheckedFuture>, ReadFailedException> checkFeature = Futures .immediateCheckedFuture(Optional.of(NetconfTestUtils.getStreamsNode("stream-1"))); @@ -130,8 +130,8 @@ public class NetconfEventSourceManagerTest { } @SuppressWarnings("unchecked") - private void onDataChangedTestHelper(boolean create, boolean update, boolean isNetconf, String - notificationCapabilityPrefix) throws Exception { + private void onDataChangedTestHelper(final boolean create, final boolean update, final boolean isNetconf, + final String notificationCapabilityPrefix) throws Exception { dataTreeModificationMock = mock(DataTreeModification.class); DataObjectModification mockModification = mock(DataObjectModification.class); doReturn(create ? DataObjectModification.ModificationType.WRITE : @@ -151,7 +151,7 @@ public class NetconfEventSourceManagerTest { doReturn(node01).when(mockModification).getDataAfter(); - doReturn(new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, + doReturn(DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, NetconfTestUtils.getInstanceIdentifier(node01))).when(dataTreeModificationMock).getRootPath(); } diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMountTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMountTest.java index 893d66a8ce..ca6f0bbea5 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMountTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceMountTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.messagebus.eventsources.netconf; import static org.mockito.ArgumentMatchers.eq; @@ -14,13 +13,13 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import com.google.common.base.Function; -import com.google.common.base.Optional; import com.google.common.collect.Lists; import com.google.common.util.concurrent.Futures; +import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; -import java.util.Date; import java.util.List; +import java.util.Optional; import javax.annotation.Nullable; import org.junit.Assert; import org.junit.Before; @@ -28,12 +27,12 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +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.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInput; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.Netconf; @@ -58,7 +57,7 @@ public class NetconfEventSourceMountTest { @Mock DOMRpcService rpcService; @Mock - private DOMDataReadOnlyTransaction tx; + private DOMDataTreeReadTransaction tx; private NetconfEventSourceMount mount; @Before @@ -82,7 +81,7 @@ public class NetconfEventSourceMountTest { Stream stream = new StreamBuilder() .setName(new StreamNameType(STREAM_1)) .build(); - mount.invokeCreateSubscription(stream, Optional.absent()); + mount.invokeCreateSubscription(stream, Optional.empty()); final SchemaPath type = SchemaPath.create(true, QName.create(CreateSubscriptionInput.QNAME, "create-subscription")); ArgumentCaptor captor = ArgumentCaptor.forClass(ContainerNode.class); @@ -96,15 +95,14 @@ public class NetconfEventSourceMountTest { .setName(new StreamNameType(STREAM_1)) .setReplaySupport(true) .build(); - final Date date = new Date(); + final Instant date = Instant.now(); mount.invokeCreateSubscription(stream, Optional.of(date)); final SchemaPath type = SchemaPath.create(true, QName.create(CreateSubscriptionInput.QNAME, "create-subscription")); ArgumentCaptor captor = ArgumentCaptor.forClass(ContainerNode.class); verify(rpcService).invokeRpc(eq(type), captor.capture()); Assert.assertEquals(STREAM_1, getStreamName(captor.getValue())); - final String expDate = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(date.toInstant().atZone(ZoneId - .systemDefault())); + final String expDate = DateTimeFormatter.ISO_OFFSET_DATE_TIME.format(date.atZone(ZoneId.systemDefault())); final Optional actual = (Optional) getDate(captor.getValue()); Assert.assertTrue(actual.isPresent()); String actualDate = (String) actual.get().getValue(); @@ -117,7 +115,7 @@ public class NetconfEventSourceMountTest { .setName(new StreamNameType(STREAM_1)) .setReplaySupport(true) .build(); - mount.invokeCreateSubscription(stream, Optional.absent()); + mount.invokeCreateSubscription(stream, Optional.empty()); final SchemaPath type = SchemaPath.create(true, QName.create(CreateSubscriptionInput.QNAME, "create-subscription")); ArgumentCaptor captor = ArgumentCaptor.forClass(ContainerNode.class); @@ -152,6 +150,6 @@ public class NetconfEventSourceMountTest { private static Optional getDate(final ContainerNode value) { YangInstanceIdentifier.NodeIdentifier startTime = new YangInstanceIdentifier.NodeIdentifier(QName.create(CreateSubscriptionInput.QNAME, "startTime")); - return Optional.fromJavaUtil(value.getChild(startTime)); + return value.getChild(startTime); } } \ No newline at end of file diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceTest.java index 1cd2d80d5e..8b3d6a0eed 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/NetconfEventSourceTest.java @@ -26,9 +26,9 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationPublishService; import org.opendaylight.controller.messagebus.app.util.TopicDOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationPublishService; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.NotificationPattern; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicNotification; diff --git a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistrationTest.java b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistrationTest.java index 5809475f03..98990de0de 100644 --- a/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistrationTest.java +++ b/netconf/messagebus-netconf/src/test/java/org/opendaylight/netconf/messagebus/eventsources/netconf/StreamNotificationTopicRegistrationTest.java @@ -5,25 +5,24 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.messagebus.eventsources.netconf; import static org.hamcrest.CoreMatchers.hasItems; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateNullFluentFuture; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; -import java.util.Date; +import java.time.Instant; +import java.util.Optional; import java.util.Set; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.messagebus.eventaggregator.rev141202.TopicId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netmod.notification.rev080714.netconf.streams.Stream; @@ -60,8 +59,8 @@ public class StreamNotificationTopicRegistrationTest { when(mount.registerNotificationListener(source, ConnectionNotificationTopicRegistration .EVENT_SOURCE_STATUS_PATH)) .thenReturn(listenerRegistration); - when(mount.invokeCreateSubscription(any(), any())).thenReturn(Futures.immediateCheckedFuture(null)); - when(mount.invokeCreateSubscription(any())).thenReturn(Futures.immediateCheckedFuture(null)); + when(mount.invokeCreateSubscription(any(), any())).thenReturn(immediateNullFluentFuture()); + when(mount.invokeCreateSubscription(any())).thenReturn(immediateNullFluentFuture()); when(source.getMount()).thenReturn(mount); stream = new StreamBuilder().setName(StreamNameType.getDefaultInstance(STREAM_NAME)).setReplaySupport(true) @@ -84,12 +83,12 @@ public class StreamNotificationTopicRegistrationTest { registration.reActivateNotificationSource(); Assert.assertTrue(registration.isActive()); - verify(mount).invokeCreateSubscription(stream, Optional.absent()); + verify(mount).invokeCreateSubscription(stream, Optional.empty()); } @Test public void testReActivateNotificationSourceWithReplay() throws Exception { - final Date lastEventTime = new Date(); + final Instant lastEventTime = Instant.now(); registration.setActive(true); registration.setLastEventTime(lastEventTime); registration.reActivateNotificationSource(); @@ -123,7 +122,7 @@ public class StreamNotificationTopicRegistrationTest { Assert.assertFalse(afterUnregister.contains(topic3)); } - private TopicId registerTopic(String value) { + private TopicId registerTopic(final String value) { final TopicId topic = TopicId.getDefaultInstance(value); registration.registerNotificationTopic(ConnectionNotificationTopicRegistration.EVENT_SOURCE_STATUS_PATH, topic); return topic; diff --git a/netconf/netconf-console/pom.xml b/netconf/netconf-console/pom.xml index a4360e23ed..678a3c4374 100644 --- a/netconf/netconf-console/pom.xml +++ b/netconf/netconf-console/pom.xml @@ -44,13 +44,13 @@ and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL yang-test-util - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test test-jar diff --git a/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/impl/NetconfCommandsImpl.java b/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/impl/NetconfCommandsImpl.java index 6c330dc40d..7c698b3162 100644 --- a/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/impl/NetconfCommandsImpl.java +++ b/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/impl/NetconfCommandsImpl.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.console.impl; import com.google.common.base.Strings; @@ -21,10 +20,10 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.console.api.NetconfCommands; import org.opendaylight.netconf.console.utils.NetconfConsoleConstants; import org.opendaylight.netconf.console.utils.NetconfConsoleUtils; diff --git a/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/utils/NetconfConsoleUtils.java b/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/utils/NetconfConsoleUtils.java index 38a2aa2664..4d33921fbd 100644 --- a/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/utils/NetconfConsoleUtils.java +++ b/netconf/netconf-console/src/main/java/org/opendaylight/netconf/console/utils/NetconfConsoleUtils.java @@ -5,18 +5,17 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.console.utils; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Optional; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; @@ -109,7 +108,7 @@ public final class NetconfConsoleUtils { public static D read( final LogicalDatastoreType store, final InstanceIdentifier path, final DataBroker db) { final ListenableFuture> future; - try (ReadOnlyTransaction transaction = db.newReadOnlyTransaction()) { + try (ReadTransaction transaction = db.newReadOnlyTransaction()) { future = transaction.read(store, path); } diff --git a/netconf/netconf-console/src/main/resources/org/opendaylight/blueprint/netconf-command.xml b/netconf/netconf-console/src/main/resources/org/opendaylight/blueprint/netconf-command.xml index 68d319d244..65b1a35e0f 100755 --- a/netconf/netconf-console/src/main/resources/org/opendaylight/blueprint/netconf-command.xml +++ b/netconf/netconf-console/src/main/resources/org/opendaylight/blueprint/netconf-command.xml @@ -11,7 +11,7 @@ odl:use-default-for-reference-types="true"> diff --git a/netconf/netconf-console/src/test/java/org/opendaylight/netconf/console/impl/NetconfCommandsImplTest.java b/netconf/netconf-console/src/test/java/org/opendaylight/netconf/console/impl/NetconfCommandsImplTest.java index d989005604..a70e629b6e 100644 --- a/netconf/netconf-console/src/test/java/org/opendaylight/netconf/console/impl/NetconfCommandsImplTest.java +++ b/netconf/netconf-console/src/test/java/org/opendaylight/netconf/console/impl/NetconfCommandsImplTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.console.impl; import static junit.framework.TestCase.assertFalse; @@ -26,10 +25,10 @@ import java.util.concurrent.TimeoutException; import org.awaitility.Awaitility; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.binding.test.ConcurrentDataBrokerTestCustomizer; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.dom.adapter.test.ConcurrentDataBrokerTestCustomizer; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.console.utils.NetconfConsoleConstants; import org.opendaylight.netconf.console.utils.NetconfConsoleUtils; import org.opendaylight.netconf.console.utils.NetconfIidFactory; diff --git a/netconf/netconf-topology-config/src/main/resources/org/opendaylight/blueprint/netconf-topology.xml b/netconf/netconf-topology-config/src/main/resources/org/opendaylight/blueprint/netconf-topology.xml index 477a90b247..cb22caac6f 100755 --- a/netconf/netconf-topology-config/src/main/resources/org/opendaylight/blueprint/netconf-topology.xml +++ b/netconf/netconf-topology-config/src/main/resources/org/opendaylight/blueprint/netconf-topology.xml @@ -24,9 +24,9 @@ interface="io.netty.util.concurrent.EventExecutor" odl:type="global-event-executor"/> + interface="org.opendaylight.mdsal.binding.api.DataBroker"/> diff --git a/netconf/netconf-topology-singleton/pom.xml b/netconf/netconf-topology-singleton/pom.xml index 998a4f79bf..c1fffc99de 100644 --- a/netconf/netconf-topology-singleton/pom.xml +++ b/netconf/netconf-topology-singleton/pom.xml @@ -81,13 +81,13 @@ test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test test-jar diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java index 8e13f630d8..01b276f738 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import akka.actor.ActorRef; @@ -17,12 +16,12 @@ import akka.util.Timeout; import com.google.common.base.Preconditions; import java.util.List; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManager.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManager.java index 1fdce0c0b8..81cc43e3e6 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManager.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManager.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import akka.actor.ActorRef; @@ -18,12 +17,12 @@ import akka.util.Timeout; import java.util.Collection; import javax.annotation.Nonnull; import javax.annotation.concurrent.GuardedBy; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.api.NetconfTopologySingletonService; import org.opendaylight.netconf.topology.singleton.impl.actors.NetconfNodeActor; @@ -149,7 +148,7 @@ class NetconfNodeManager final InstanceIdentifier path = NetconfTopologyUtils.createTopologyNodeListPath(key, topologyId); LOG.debug("{}: Registering data tree change listener on path {}", id, path); dataChangeListenerRegistration = setup.getDataBroker().registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, path), this); + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, path), this); } private synchronized void handleSlaveMountPoint(final DataObjectModification rootNode) { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java index 99b541b846..7adad35340 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyContext.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import static org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils.DEFAULT_SCHEMA_REPOSITORY; @@ -20,7 +19,7 @@ import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonService; import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java index 9dd0a22da1..f63d4114b6 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManager.java @@ -25,16 +25,16 @@ import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.cluster.ActorSystemProvider; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration; import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; @@ -69,7 +69,7 @@ public class NetconfTopologyManager clusterRegistrations = new ConcurrentHashMap<>(); private final DataBroker dataBroker; - private final RpcProviderRegistry rpcProviderRegistry; + private final DOMRpcProviderService rpcProviderRegistry; private final ClusterSingletonServiceProvider clusterSingletonServiceProvider; private final ScheduledExecutorService keepaliveExecutor; private final ListeningExecutorService processingExecutor; @@ -84,7 +84,7 @@ public class NetconfTopologyManager private String privateKeyPath; private String privateKeyPassphrase; - public NetconfTopologyManager(final DataBroker dataBroker, final RpcProviderRegistry rpcProviderRegistry, + public NetconfTopologyManager(final DataBroker dataBroker, final DOMRpcProviderService rpcProviderRegistry, final ClusterSingletonServiceProvider clusterSingletonServiceProvider, final ScheduledThreadPool keepaliveExecutor, final ThreadPool processingExecutor, final ActorSystemProvider actorSystemProvider, @@ -257,9 +257,8 @@ public class NetconfTopologyManager }, MoreExecutors.directExecutor()); LOG.debug("Registering datastore listener"); - return dataBroker.registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, - NetconfTopologyUtils.createTopologyListPath(topologyId).child(Node.class)), this); + return dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, + NetconfTopologyUtils.createTopologyListPath(topologyId).child(Node.class)), this); } private void initTopology(final WriteTransaction wtx, final LogicalDatastoreType datastoreType) { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBroker.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBroker.java index b4cbdd06d4..3158b4925b 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBroker.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBroker.java @@ -5,22 +5,20 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import akka.actor.ActorRef; import akka.pattern.Patterns; import akka.util.Timeout; -import java.util.Collections; -import java.util.Map; -import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; +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.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.impl.tx.ProxyReadTransaction; import org.opendaylight.netconf.topology.singleton.impl.tx.ProxyReadWriteTransaction; @@ -55,33 +53,32 @@ public class ProxyDOMDataBroker implements DOMDataBroker { @SuppressWarnings("checkstyle:IllegalCatch") @Override - public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + public DOMDataTreeReadTransaction newReadOnlyTransaction() { final Future txActorFuture = Patterns.ask(masterNode, new NewReadTransactionRequest(), askTimeout); return new ProxyReadTransaction(id, txActorFuture, executionContext, askTimeout); } @SuppressWarnings("checkstyle:IllegalCatch") @Override - public DOMDataReadWriteTransaction newReadWriteTransaction() { + public DOMDataTreeReadWriteTransaction newReadWriteTransaction() { final Future txActorFuture = Patterns.ask(masterNode, new NewReadWriteTransactionRequest(), askTimeout); return new ProxyReadWriteTransaction(id, txActorFuture, executionContext, askTimeout); } @SuppressWarnings("checkstyle:IllegalCatch") @Override - public DOMDataWriteTransaction newWriteOnlyTransaction() { + public DOMDataTreeWriteTransaction newWriteOnlyTransaction() { final Future txActorFuture = Patterns.ask(masterNode, new NewWriteTransactionRequest(), askTimeout); return new ProxyReadWriteTransaction(id, txActorFuture, executionContext, askTimeout); } @Override - public DOMTransactionChain createTransactionChain(final TransactionChainListener listener) { + public DOMTransactionChain createTransactionChain(final DOMTransactionChainListener listener) { throw new UnsupportedOperationException(id + ": Transaction chains not supported for netconf mount point"); } - @Nonnull @Override - public Map, DOMDataBrokerExtension> getSupportedExtensions() { - return Collections.emptyMap(); + public ClassToInstanceMap getExtensions() { + return ImmutableClassToInstanceMap.of(); } } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMRpcService.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMRpcService.java index 8056ad79d3..4c9afcae3e 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMRpcService.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMRpcService.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import akka.actor.ActorRef; @@ -14,17 +13,14 @@ import akka.dispatch.OnComplete; import akka.pattern.Patterns; import akka.util.Timeout; import com.google.common.collect.ImmutableList; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.SettableFuture; import java.util.Collection; import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.impl.utils.ClusteringRpcException; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; @@ -33,7 +29,6 @@ import org.opendaylight.netconf.topology.singleton.messages.rpc.InvokeRpcMessage import org.opendaylight.netconf.topology.singleton.messages.rpc.InvokeRpcMessageReply; import org.opendaylight.netconf.topology.singleton.messages.transactions.EmptyResultResponse; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.util.concurrent.ExceptionMapper; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -43,17 +38,8 @@ import org.slf4j.LoggerFactory; import scala.concurrent.Future; public class ProxyDOMRpcService implements DOMRpcService { - private static final Logger LOG = LoggerFactory.getLogger(ProxyDOMRpcService.class); - private final ExceptionMapper domRpcExceptionMapper = - new ExceptionMapper("invokeRpc", DOMRpcException.class) { - @Override - protected DOMRpcException newWithCause(final String message, final Throwable cause) { - return new ClusteringRpcException(id + ": Exception during remote rpc invocation.", cause); - } - }; - private final ActorRef masterActorRef; private final ActorSystem actorSystem; private final RemoteDeviceId id; @@ -67,10 +53,8 @@ public class ProxyDOMRpcService implements DOMRpcService { this.actorResponseWaitTime = actorResponseWaitTime; } - @Nonnull @Override - public CheckedFuture invokeRpc(@Nonnull final SchemaPath type, - @Nullable final NormalizedNode input) { + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { LOG.trace("{}: Rpc operation invoked with schema type: {} and node: {}.", id, type, input); final NormalizedNodeMessage normalizedNodeMessage = input != null @@ -84,7 +68,12 @@ public class ProxyDOMRpcService implements DOMRpcService { @Override public void onComplete(final Throwable failure, final Object response) { if (failure != null) { - settableFuture.setException(failure); + if (failure instanceof ClusteringRpcException) { + settableFuture.setException(failure); + } else { + settableFuture.setException( + new ClusteringRpcException(id + ": Exception during remote rpc invocation.", failure)); + } return; } @@ -106,7 +95,7 @@ public class ProxyDOMRpcService implements DOMRpcService { } }, actorSystem.dispatcher()); - return Futures.makeChecked(settableFuture, domRpcExceptionMapper); + return settableFuture; } @Nonnull diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/SlaveSalFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/SlaveSalFacade.java index d2d8c5f5a4..4fbed61aed 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/SlaveSalFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/SlaveSalFacade.java @@ -5,15 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.util.Timeout; import java.util.concurrent.atomic.AtomicBoolean; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceNotificationService; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceSalProvider; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/NetconfNodeActor.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/NetconfNodeActor.java index a00bbb7f16..3893b22821 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/NetconfNodeActor.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/NetconfNodeActor.java @@ -28,13 +28,13 @@ import org.opendaylight.controller.cluster.common.actor.AbstractUntypedActor; import org.opendaylight.controller.cluster.schema.provider.RemoteYangTextSourceProvider; import org.opendaylight.controller.cluster.schema.provider.impl.RemoteSchemaProvider; import org.opendaylight.controller.cluster.schema.provider.impl.YangTextSchemaSourceSerializationProxy; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +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.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.impl.ProxyDOMRpcService; import org.opendaylight.netconf.topology.singleton.impl.ProxyYangTextSourceProvider; @@ -119,7 +119,7 @@ public class NetconfNodeActor extends AbstractUntypedActor { final CreateInitialMasterActorData masterActorData = (CreateInitialMasterActorData) message; sourceIdentifiers = masterActorData.getSourceIndentifiers(); this.deviceDataBroker = masterActorData.getDeviceDataBroker(); - final DOMDataReadOnlyTransaction tx = deviceDataBroker.newReadOnlyTransaction(); + final DOMDataTreeReadTransaction tx = deviceDataBroker.newReadOnlyTransaction(); readTxActor = context().actorOf(ReadTransactionActor.props(tx)); this.deviceRpc = masterActorData.getDeviceRpc(); @@ -153,7 +153,7 @@ public class NetconfNodeActor extends AbstractUntypedActor { sender().tell(new Success(readTxActor), self()); } else if (message instanceof NewWriteTransactionRequest) { // master try { - final DOMDataWriteTransaction tx = deviceDataBroker.newWriteOnlyTransaction(); + final DOMDataTreeWriteTransaction tx = deviceDataBroker.newWriteOnlyTransaction(); final ActorRef txActor = context().actorOf(WriteTransactionActor.props(tx, writeTxIdleTimeout)); sender().tell(new Success(txActor), self()); } catch (final Exception t) { @@ -162,7 +162,7 @@ public class NetconfNodeActor extends AbstractUntypedActor { } else if (message instanceof NewReadWriteTransactionRequest) { try { - final DOMDataReadWriteTransaction tx = deviceDataBroker.newReadWriteTransaction(); + final DOMDataTreeReadWriteTransaction tx = deviceDataBroker.newReadWriteTransaction(); final ActorRef txActor = context().actorOf(ReadWriteTransactionActor.props(tx, writeTxIdleTimeout)); sender().tell(new Success(txActor), self()); } catch (final Exception t) { @@ -291,7 +291,7 @@ public class NetconfNodeActor extends AbstractUntypedActor { } private void resolveSchemaContext(final SchemaContextFactory schemaContextFactory, - final SlaveSalFacade localSlaveSalManager, final ActorRef masterReference, int tries) { + final SlaveSalFacade localSlaveSalManager, final ActorRef masterReference, final int tries) { final ListenableFuture schemaContextFuture = schemaContextFactory.createSchemaContext(sourceIdentifiers); Futures.addCallback(schemaContextFuture, new FutureCallback() { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadAdapter.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadAdapter.java index abce08922b..30ed843e08 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadAdapter.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadAdapter.java @@ -9,13 +9,12 @@ package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.ActorRef; import akka.actor.Status.Failure; -import com.google.common.base.Optional; import com.google.common.util.concurrent.FutureCallback; -import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; +import java.util.Optional; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; 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; @@ -25,9 +24,9 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; class ReadAdapter { - private final DOMDataReadTransaction tx; + private final DOMDataTreeReadTransaction tx; - ReadAdapter(final DOMDataReadTransaction tx) { + ReadAdapter(final DOMDataTreeReadTransaction tx) { this.tx = tx; } @@ -50,10 +49,9 @@ class ReadAdapter { private void read(final YangInstanceIdentifier path, final LogicalDatastoreType store, final ActorRef sender, final ActorRef self) { - Futures.addCallback(tx.read(store, path), new FutureCallback>>() { - + tx.read(store, path).addCallback(new FutureCallback>>() { @Override - public void onSuccess(@Nonnull final Optional> result) { + public void onSuccess(final Optional> result) { if (!result.isPresent()) { sender.tell(new EmptyReadResponse(), self); return; @@ -70,7 +68,7 @@ class ReadAdapter { private void exists(final YangInstanceIdentifier path, final LogicalDatastoreType store, final ActorRef sender, final ActorRef self) { - Futures.addCallback(tx.exists(store, path), new FutureCallback() { + tx.exists(store, path).addCallback(new FutureCallback() { @Override public void onSuccess(final Boolean result) { if (result == null) { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActor.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActor.java index f96e76bf0b..8ca9675299 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActor.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActor.java @@ -5,22 +5,21 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.Props; import akka.actor.UntypedAbstractActor; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; import org.opendaylight.netconf.topology.singleton.messages.transactions.ReadActorMessage; /** - * ReadTransactionActor is an interface to device's {@link DOMDataReadOnlyTransaction} for cluster nodes. + * ReadTransactionActor is an interface to device's {@link DOMDataTreeReadTransaction} for cluster nodes. */ public final class ReadTransactionActor extends UntypedAbstractActor { private final ReadAdapter readAdapter; - private ReadTransactionActor(final DOMDataReadOnlyTransaction tx) { + private ReadTransactionActor(final DOMDataTreeReadTransaction tx) { readAdapter = new ReadAdapter(tx); } @@ -30,7 +29,7 @@ public final class ReadTransactionActor extends UntypedAbstractActor { * @param tx delegate device read transaction * @return props */ - static Props props(final DOMDataReadOnlyTransaction tx) { + static Props props(final DOMDataTreeReadTransaction tx) { return Props.create(ReadTransactionActor.class, () -> new ReadTransactionActor(tx)); } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActor.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActor.java index 0220b62642..d0f45b76ba 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActor.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActor.java @@ -5,13 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.Props; import akka.actor.ReceiveTimeout; import akka.actor.UntypedAbstractActor; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import org.opendaylight.netconf.topology.singleton.messages.transactions.ReadActorMessage; import org.opendaylight.netconf.topology.singleton.messages.transactions.WriteActorMessage; import org.slf4j.Logger; @@ -22,12 +21,12 @@ public final class ReadWriteTransactionActor extends UntypedAbstractActor { private static final Logger LOG = LoggerFactory.getLogger(ReadWriteTransactionActor.class); - private final DOMDataReadWriteTransaction tx; + private final DOMDataTreeReadWriteTransaction tx; private final long idleTimeout; private final ReadAdapter readAdapter; private final WriteAdapter writeAdapter; - private ReadWriteTransactionActor(final DOMDataReadWriteTransaction tx, final Duration idleTimeout) { + private ReadWriteTransactionActor(final DOMDataTreeReadWriteTransaction tx, final Duration idleTimeout) { this.tx = tx; this.idleTimeout = idleTimeout.toSeconds(); if (this.idleTimeout > 0) { @@ -44,7 +43,7 @@ public final class ReadWriteTransactionActor extends UntypedAbstractActor { * @param idleTimeout idle time in seconds, after which transaction is closed automatically * @return props */ - static Props props(final DOMDataReadWriteTransaction tx, final Duration idleTimeout) { + static Props props(final DOMDataTreeReadWriteTransaction tx, final Duration idleTimeout) { return Props.create(ReadWriteTransactionActor.class, () -> new ReadWriteTransactionActor(tx, idleTimeout)); } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteAdapter.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteAdapter.java index c798673eef..aaeb0d10b3 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteAdapter.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteAdapter.java @@ -15,8 +15,8 @@ import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; import org.opendaylight.netconf.topology.singleton.messages.transactions.CancelRequest; import org.opendaylight.netconf.topology.singleton.messages.transactions.DeleteRequest; @@ -30,9 +30,9 @@ class WriteAdapter { private static final Logger LOG = LoggerFactory.getLogger(WriteAdapter.class); - private final DOMDataWriteTransaction tx; + private final DOMDataTreeWriteTransaction tx; - WriteAdapter(final DOMDataWriteTransaction tx) { + WriteAdapter(final DOMDataTreeWriteTransaction tx) { this.tx = tx; } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActor.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActor.java index 2a5c7ada48..3014b24e01 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActor.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActor.java @@ -5,31 +5,29 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.Props; import akka.actor.ReceiveTimeout; import akka.actor.UntypedAbstractActor; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.topology.singleton.messages.transactions.WriteActorMessage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import scala.concurrent.duration.Duration; /** - * WriteTransactionActor is an interface to device's {@link DOMDataReadOnlyTransaction} for cluster nodes. + * WriteTransactionActor is an interface to device's {@link DOMDataTreeWriteTransaction} for cluster nodes. */ public final class WriteTransactionActor extends UntypedAbstractActor { private static final Logger LOG = LoggerFactory.getLogger(WriteTransactionActor.class); - private final DOMDataWriteTransaction tx; + private final DOMDataTreeWriteTransaction tx; private final long idleTimeout; private final WriteAdapter writeAdapter; - private WriteTransactionActor(final DOMDataWriteTransaction tx, final Duration idleTimeout) { + private WriteTransactionActor(final DOMDataTreeWriteTransaction tx, final Duration idleTimeout) { this.tx = tx; this.idleTimeout = idleTimeout.toSeconds(); if (this.idleTimeout > 0) { @@ -45,7 +43,7 @@ public final class WriteTransactionActor extends UntypedAbstractActor { * @param idleTimeout idle time in seconds, after which transaction is closed automatically * @return props */ - static Props props(final DOMDataWriteTransaction tx, final Duration idleTimeout) { + static Props props(final DOMDataTreeWriteTransaction tx, final Duration idleTimeout) { return Props.create(WriteTransactionActor.class, () -> new WriteTransactionActor(tx, idleTimeout)); } @@ -62,6 +60,4 @@ public final class WriteTransactionActor extends UntypedAbstractActor { unhandled(message); } } - - } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ActorProxyTransactionFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ActorProxyTransactionFacade.java index 7bf63ce9d2..3a617ff39c 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ActorProxyTransactionFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ActorProxyTransactionFacade.java @@ -12,17 +12,14 @@ import akka.dispatch.OnComplete; import akka.pattern.AskTimeoutException; import akka.pattern.Patterns; import akka.util.Timeout; -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.SettableFuture; import java.util.Objects; -import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.common.api.MappingCheckedFuture; -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.common.api.data.TransactionCommitFailedException; +import java.util.Optional; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.impl.utils.NetconfTopologyUtils; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; @@ -54,8 +51,8 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { private final ExecutionContext executionContext; private final Timeout askTimeout; - ActorProxyTransactionFacade(ActorRef masterTxActor, RemoteDeviceId id, ExecutionContext executionContext, - Timeout askTimeout) { + ActorProxyTransactionFacade(final ActorRef masterTxActor, final RemoteDeviceId id, + final ExecutionContext executionContext, final Timeout askTimeout) { this.masterTxActor = Objects.requireNonNull(masterTxActor); this.id = Objects.requireNonNull(id); this.executionContext = Objects.requireNonNull(executionContext); @@ -89,8 +86,13 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { } @Override - public CheckedFuture>, ReadFailedException> read(LogicalDatastoreType store, - YangInstanceIdentifier path) { + public void close() { + cancel(); + } + + @Override + public FluentFuture>> read(final LogicalDatastoreType store, + final YangInstanceIdentifier path) { LOG.debug("{}: Read {} {} via actor {}", id, store, path, masterTxActor); final Future future = Patterns.ask(masterTxActor, new ReadRequest(store, path), askTimeout); @@ -101,14 +103,21 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { public void onComplete(final Throwable failure, final Object response) { if (failure != null) { LOG.debug("{}: Read {} {} failed", id, store, path, failure); - settableFuture.setException(processFailure(failure)); + + final Throwable processedFailure = processFailure(failure); + if (processedFailure instanceof ReadFailedException) { + settableFuture.setException(processedFailure); + } else { + settableFuture.setException(new ReadFailedException("Read of store " + store + " path " + path + + " failed", processedFailure)); + } return; } LOG.debug("{}: Read {} {} succeeded: {}", id, store, path, response); if (response instanceof EmptyReadResponse) { - settableFuture.set(Optional.absent()); + settableFuture.set(Optional.empty()); return; } @@ -119,11 +128,11 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { } }, executionContext); - return MappingCheckedFuture.create(settableFuture, ReadFailedException.MAPPER); + return settableFuture; } @Override - public CheckedFuture exists(LogicalDatastoreType store, YangInstanceIdentifier path) { + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Exists {} {} via actor {}", id, store, path, masterTxActor); final Future future = Patterns.ask(masterTxActor, new ExistsRequest(store, path), askTimeout); @@ -134,7 +143,14 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { public void onComplete(final Throwable failure, final Object response) { if (failure != null) { LOG.debug("{}: Exists {} {} failed", id, store, path, failure); - settableFuture.setException(processFailure(failure)); + + final Throwable processedFailure = processFailure(failure); + if (processedFailure instanceof ReadFailedException) { + settableFuture.setException(processedFailure); + } else { + settableFuture.setException(new ReadFailedException("Exists of store " + store + " path " + path + + " failed", processedFailure)); + } return; } @@ -144,29 +160,31 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { } }, executionContext); - return MappingCheckedFuture.create(settableFuture, ReadFailedException.MAPPER); + return settableFuture; } @Override - public void delete(LogicalDatastoreType store, YangInstanceIdentifier path) { + public void delete(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Delete {} {} via actor {}", id, store, path, masterTxActor); masterTxActor.tell(new DeleteRequest(store, path), ActorRef.noSender()); } @Override - public void put(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode data) { + public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path, + final NormalizedNode data) { LOG.debug("{}: Put {} {} via actor {}", id, store, path, masterTxActor); masterTxActor.tell(new PutRequest(store, new NormalizedNodeMessage(path, data)), ActorRef.noSender()); } @Override - public void merge(LogicalDatastoreType store, YangInstanceIdentifier path, NormalizedNode data) { + public void merge(final LogicalDatastoreType store, final YangInstanceIdentifier path, + final NormalizedNode data) { LOG.debug("{}: Merge {} {} via actor {}", id, store, path, masterTxActor); masterTxActor.tell(new MergeRequest(store, new NormalizedNodeMessage(path, data)), ActorRef.noSender()); } @Override - public @NonNull FluentFuture commit() { + public FluentFuture commit() { LOG.debug("{}: Commit via actor {}", id, masterTxActor); final Future future = Patterns.ask(masterTxActor, new SubmitRequest(), askTimeout); @@ -195,7 +213,7 @@ class ActorProxyTransactionFacade implements ProxyTransactionFacade { failure); } - private Throwable processFailure(Throwable failure) { + private Throwable processFailure(final Throwable failure) { if (failure instanceof AskTimeoutException) { return NetconfTopologyUtils.createMasterIsDownException(id, (Exception)failure); } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/FailedProxyTransactionFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/FailedProxyTransactionFacade.java index 21e9a096f9..d1bce43e5d 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/FailedProxyTransactionFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/FailedProxyTransactionFacade.java @@ -7,18 +7,16 @@ */ package org.opendaylight.netconf.topology.singleton.impl.tx; -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.Objects; +import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.common.api.data.AsyncWriteTransaction; -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.common.api.data.TransactionCommitFailedException; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; @@ -51,18 +49,23 @@ class FailedProxyTransactionFacade implements ProxyTransactionFacade { } @Override - public CheckedFuture>, ReadFailedException> read(final LogicalDatastoreType store, + public void close() { + // No-op + } + + @Override + public FluentFuture>> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Read {} {} - failure", id, store, path, failure); - return Futures.immediateFailedCheckedFuture(ReadFailedException.MAPPER.apply( + return FluentFutures.immediateFailedFluentFuture(ReadFailedException.MAPPER.apply( failure instanceof Exception ? (Exception)failure : new ReadFailedException("read", failure))); } @Override - public CheckedFuture exists(final LogicalDatastoreType store, + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Exists {} {} - failure", id, store, path, failure); - return Futures.immediateFailedCheckedFuture(ReadFailedException.MAPPER.apply( + return FluentFutures.immediateFailedFluentFuture(ReadFailedException.MAPPER.apply( failure instanceof Exception ? (Exception)failure : new ReadFailedException("read", failure))); } @@ -86,8 +89,12 @@ class FailedProxyTransactionFacade implements ProxyTransactionFacade { @Override public @NonNull FluentFuture commit() { LOG.debug("{}: Commit - failure", id, failure); - return FluentFuture.from(Futures.immediateFailedFuture(failure instanceof Exception - ? AsyncWriteTransaction.SUBMIT_EXCEPTION_MAPPER.apply((Exception)failure) - : new TransactionCommitFailedException("commit", failure))); + final TransactionCommitFailedException txCommitEx; + if (failure instanceof TransactionCommitFailedException) { + txCommitEx = (TransactionCommitFailedException) failure; + } else { + txCommitEx = new TransactionCommitFailedException("commit", failure); + } + return FluentFutures.immediateFailedFluentFuture(txCommitEx); } } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadTransaction.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadTransaction.java index ed972c1d5d..fbe946f3ba 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadTransaction.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadTransaction.java @@ -5,12 +5,10 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.tx; import akka.actor.ActorRef; import akka.util.Timeout; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import scala.concurrent.ExecutionContext; import scala.concurrent.Future; @@ -19,15 +17,10 @@ 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 implements DOMDataReadOnlyTransaction { +public class ProxyReadTransaction extends ProxyReadWriteTransaction { public ProxyReadTransaction(final RemoteDeviceId id, final Future masterTxActorFuture, final ExecutionContext executionContext, final Timeout askTimeout) { super(id, masterTxActorFuture, executionContext, askTimeout); } - - @Override - public void close() { - // noop - } } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransaction.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransaction.java index 8b268e3149..03903bc950 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransaction.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransaction.java @@ -10,24 +10,21 @@ package org.opendaylight.netconf.topology.singleton.impl.tx; import akka.actor.ActorRef; import akka.dispatch.OnComplete; import akka.util.Timeout; -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.ArrayList; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import javax.annotation.concurrent.GuardedBy; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.common.api.MappingCheckedFuture; -import org.opendaylight.controller.md.sal.common.api.data.AsyncWriteTransaction; -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.DOMDataReadWriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; @@ -40,7 +37,7 @@ import scala.concurrent.Future; * ProxyReadWriteTransaction uses provided {@link ActorRef} to delegate method calls to master * {@link org.opendaylight.netconf.topology.singleton.impl.actors.ReadWriteTransactionActor}. */ -public class ProxyReadWriteTransaction implements DOMDataReadWriteTransaction { +public class ProxyReadWriteTransaction implements DOMDataTreeReadWriteTransaction { private static final Logger LOG = LoggerFactory.getLogger(ProxyReadWriteTransaction.class); private final RemoteDeviceId id; @@ -79,28 +76,33 @@ public class ProxyReadWriteTransaction implements DOMDataReadWriteTransaction { return false; } - processTransactionOperation(AsyncWriteTransaction::cancel); + processTransactionOperation(DOMDataTreeWriteTransaction::cancel); return true; } @Override - public CheckedFuture>, ReadFailedException> read(final LogicalDatastoreType store, + public void close() { + cancel(); + } + + @Override + public FluentFuture>> read(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Read {} {}", id, store, path); final SettableFuture>> returnFuture = SettableFuture.create(); processTransactionOperation(facade -> returnFuture.setFuture(facade.read(store, path))); - return MappingCheckedFuture.create(returnFuture, ReadFailedException.MAPPER); + return returnFuture; } @Override - public CheckedFuture exists(final LogicalDatastoreType store, + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { LOG.debug("{}: Exists {} {}", id, store, path); final SettableFuture returnFuture = SettableFuture.create(); processTransactionOperation(facade -> returnFuture.setFuture(facade.exists(store, path))); - return MappingCheckedFuture.create(returnFuture, ReadFailedException.MAPPER); + return returnFuture; } @Override diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyTransactionFacade.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyTransactionFacade.java index babac0dda9..d94752ae9b 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyTransactionFacade.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyTransactionFacade.java @@ -7,12 +7,12 @@ */ package org.opendaylight.netconf.topology.singleton.impl.tx; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; /** * Interfaces with a transaction back-end. * * @author Thomas Pantelis */ -interface ProxyTransactionFacade extends DOMDataReadWriteTransaction { +interface ProxyTransactionFacade extends DOMDataTreeReadWriteTransaction { } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/ClusteringRpcException.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/ClusteringRpcException.java index fc0405b837..7b36dd3ff2 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/ClusteringRpcException.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/ClusteringRpcException.java @@ -5,19 +5,18 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.utils; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; +import org.opendaylight.mdsal.dom.api.DOMRpcException; public class ClusteringRpcException extends DOMRpcException { private static final long serialVersionUID = 1L; - public ClusteringRpcException(String message) { + public ClusteringRpcException(final String message) { super(message); } - public ClusteringRpcException(String message, Throwable cause) { + public ClusteringRpcException(final String message, final Throwable cause) { super(message, cause); } } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologySetup.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologySetup.java index e821f56908..7963d440f0 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologySetup.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/utils/NetconfTopologySetup.java @@ -12,8 +12,8 @@ import com.google.common.util.concurrent.ListeningExecutorService; import io.netty.util.concurrent.EventExecutor; import java.util.concurrent.ScheduledExecutorService; import org.opendaylight.aaa.encrypt.AAAEncryptionService; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice; @@ -24,7 +24,7 @@ import scala.concurrent.duration.Duration; public class NetconfTopologySetup { private final ClusterSingletonServiceProvider clusterSingletonServiceProvider; - private final RpcProviderRegistry rpcProviderRegistry; + private final DOMRpcProviderService rpcProviderRegistry; private final DataBroker dataBroker; private final InstanceIdentifier instanceIdentifier; private final Node node; @@ -63,7 +63,7 @@ public class NetconfTopologySetup { return clusterSingletonServiceProvider; } - public RpcProviderRegistry getRpcProviderRegistry() { + public DOMRpcProviderService getRpcProviderRegistry() { return rpcProviderRegistry; } @@ -126,7 +126,7 @@ public class NetconfTopologySetup { public static class NetconfTopologySetupBuilder { private ClusterSingletonServiceProvider clusterSingletonServiceProvider; - private RpcProviderRegistry rpcProviderRegistry; + private DOMRpcProviderService rpcProviderRegistry; private DataBroker dataBroker; private InstanceIdentifier instanceIdentifier; private Node node; @@ -155,11 +155,11 @@ public class NetconfTopologySetup { return this; } - private RpcProviderRegistry getRpcProviderRegistry() { + private DOMRpcProviderService getRpcProviderRegistry() { return rpcProviderRegistry; } - public NetconfTopologySetupBuilder setRpcProviderRegistry(final RpcProviderRegistry rpcProviderRegistry) { + public NetconfTopologySetupBuilder setRpcProviderRegistry(final DOMRpcProviderService rpcProviderRegistry) { this.rpcProviderRegistry = rpcProviderRegistry; return this; } diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/CreateInitialMasterActorData.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/CreateInitialMasterActorData.java index b9ce540fd6..509ecb0e55 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/CreateInitialMasterActorData.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/CreateInitialMasterActorData.java @@ -5,12 +5,11 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.messages; import java.util.List; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; /** diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/DeleteRequest.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/DeleteRequest.java index 5e46157e40..64c04051e3 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/DeleteRequest.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/DeleteRequest.java @@ -5,10 +5,9 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.messages.transactions; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class DeleteRequest implements WriteActorMessage { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ExistsRequest.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ExistsRequest.java index 9bce961fcd..2518e4bbbe 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ExistsRequest.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ExistsRequest.java @@ -5,10 +5,9 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.messages.transactions; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class ExistsRequest implements ReadActorMessage { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/MergeRequest.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/MergeRequest.java index 536d52172d..5575326568 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/MergeRequest.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/MergeRequest.java @@ -8,7 +8,7 @@ package org.opendaylight.netconf.topology.singleton.messages.transactions; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; public class MergeRequest implements WriteActorMessage { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/PutRequest.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/PutRequest.java index c9084b813e..64d32300af 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/PutRequest.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/PutRequest.java @@ -5,10 +5,9 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.messages.transactions; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; public class PutRequest implements WriteActorMessage { diff --git a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ReadRequest.java b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ReadRequest.java index b64f46cd91..2cc5151374 100644 --- a/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ReadRequest.java +++ b/netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/messages/transactions/ReadRequest.java @@ -5,10 +5,9 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.messages.transactions; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; public class ReadRequest implements ReadActorMessage { diff --git a/netconf/netconf-topology-singleton/src/main/resources/org/opendaylight/blueprint/netconf-topology-singleton.xml b/netconf/netconf-topology-singleton/src/main/resources/org/opendaylight/blueprint/netconf-topology-singleton.xml index ecab8350da..e59cc1952e 100644 --- a/netconf/netconf-topology-singleton/src/main/resources/org/opendaylight/blueprint/netconf-topology-singleton.xml +++ b/netconf/netconf-topology-singleton/src/main/resources/org/opendaylight/blueprint/netconf-topology-singleton.xml @@ -13,9 +13,9 @@ and is available at http://www.eclipse.org/legal/epl-v10.html odl:use-default-for-reference-types="true"> + interface="org.opendaylight.mdsal.binding.api.DataBroker"/> + interface="org.opendaylight.mdsal.dom.api.DOMRpcProviderService"/> NODE_INSTANCE_ID = NetconfTopologyUtils.createTopologyNodeListPath( new NodeKey(NODE_ID), TOPOLOGY_ID); - @Mock private RpcProviderRegistry mockRpcProviderRegistry; + @Mock private DOMRpcProviderService mockRpcProviderRegistry; @Mock private NetconfClientDispatcher mockClientDispatcher; @Mock private AAAEncryptionService mockEncryptionService; @Mock private ThreadPool mockThreadPool; @@ -187,7 +186,7 @@ public class MountPointEndToEndTest { private ActorSystem slaveSystem; private NetconfTopologyManager slaveNetconfTopologyManager; private final SettableFuture slaveNetconfTopologyContextFuture = SettableFuture.create(); - private BindingTransactionChain slaveTxChain; + private TransactionChain slaveTxChain; private final EventExecutor eventExecutor = GlobalEventExecutor.INSTANCE; private final Config config = new ConfigBuilder().setWriteTransactionIdleTimeout(0).build(); @@ -217,7 +216,7 @@ public class MountPointEndToEndTest { putTopRpcSchemaPath = findRpcDefinition("put-top").getPath(); getTopRpcSchemaPath = findRpcDefinition("get-top").getPath(); - deviceRpcService.registerRpcImplementation(topRpcImplementation, + deviceRpcService.getRpcProviderService().registerRpcImplementation(topRpcImplementation, DOMRpcIdentifier.create(putTopRpcSchemaPath), DOMRpcIdentifier.create(getTopRpcSchemaPath)); setupMaster(); @@ -322,12 +321,12 @@ public class MountPointEndToEndTest { slaveTxChain = slaveDataBroker.createTransactionChain(new TransactionChainListener() { @Override - public void onTransactionChainSuccessful(final TransactionChain chain) { + public void onTransactionChainSuccessful(final TransactionChain chain) { } @Override - public void onTransactionChainFailed(final TransactionChain chain, - final AsyncTransaction transaction, final Throwable cause) { + public void onTransactionChainFailed(final TransactionChain chain, final Transaction transaction, + final Throwable cause) { LOG.error("Slave transaction chain failed", cause); } }); @@ -354,7 +353,7 @@ public class MountPointEndToEndTest { final MasterSalFacade masterSalFacade = masterSalFacadeFuture.get(5, TimeUnit.SECONDS); masterSalFacade.onDeviceConnected(deviceSchemaContext, - NetconfSessionPreferences.fromStrings(Collections.emptyList()), deviceRpcService); + NetconfSessionPreferences.fromStrings(Collections.emptyList()), deviceRpcService.getRpcService()); DOMMountPoint masterMountPoint = awaitMountPoint(masterMountPointService); @@ -379,7 +378,7 @@ public class MountPointEndToEndTest { // This is essentially what happens in a clustered environment but we'll use a DTCL here. masterDataBroker.registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.OPERATIONAL, NODE_INSTANCE_ID), changes -> { + DataTreeIdentifier.create(LogicalDatastoreType.OPERATIONAL, NODE_INSTANCE_ID), changes -> { final WriteTransaction slaveTx = slaveTxChain.newWriteOnlyTransaction(); for (DataTreeModification dataTreeModification : changes) { DataObjectModification rootNode = dataTreeModification.getRootNode(); @@ -429,7 +428,7 @@ public class MountPointEndToEndTest { MasterSalFacade masterSalFacade = masterSalFacadeFuture.get(5, TimeUnit.SECONDS); masterSalFacade.onDeviceConnected(deviceSchemaContext, - NetconfSessionPreferences.fromStrings(Collections.emptyList()), deviceRpcService); + NetconfSessionPreferences.fromStrings(Collections.emptyList()), deviceRpcService.getRpcService()); verify(masterMountPointListener, timeout(5000)).onMountPointCreated(yangNodeInstanceId); @@ -448,7 +447,7 @@ public class MountPointEndToEndTest { awaitMountPointNotPresent(masterMountPointService); await().atMost(5, TimeUnit.SECONDS).until(() -> { - try (ReadOnlyTransaction readTx = masterDataBroker.newReadOnlyTransaction()) { + try (ReadTransaction readTx = masterDataBroker.newReadOnlyTransaction()) { Optional node = readTx.read(LogicalDatastoreType.OPERATIONAL, NODE_INSTANCE_ID).get(5, TimeUnit.SECONDS); assertTrue(node.isPresent()); @@ -498,7 +497,9 @@ public class MountPointEndToEndTest { private void testRpc(final DOMRpcService domRpcService, final SchemaPath schemaPath, final NormalizedNode input, final DOMRpcResult result) throws InterruptedException, ExecutionException, TimeoutException { - final DOMRpcResult actual = invokeRpc(domRpcService, schemaPath, input, Futures.immediateCheckedFuture(result)); + final FluentFuture future = result == null ? FluentFutures.immediateNullFluentFuture() + : FluentFutures.immediateFluentFuture(result); + final DOMRpcResult actual = invokeRpc(domRpcService, schemaPath, input, future); if (result == null) { assertNull(actual); return; @@ -525,7 +526,7 @@ public class MountPointEndToEndTest { private void testFailedRpc(final DOMRpcService domRpcService, final SchemaPath schemaPath, final NormalizedNode input) throws InterruptedException, TimeoutException { try { - invokeRpc(domRpcService, schemaPath, input, Futures.immediateFailedCheckedFuture( + invokeRpc(domRpcService, schemaPath, input, FluentFutures.immediateFailedFluentFuture( new ClusteringRpcException("mock"))); fail("Expected exception"); } catch (ExecutionException e) { @@ -535,7 +536,7 @@ public class MountPointEndToEndTest { } private DOMRpcResult invokeRpc(final DOMRpcService domRpcService, final SchemaPath schemaPath, - final NormalizedNode input, final CheckedFuture returnFuture) + final NormalizedNode input, final FluentFuture returnFuture) throws InterruptedException, ExecutionException, TimeoutException { topRpcImplementation.init(returnFuture); final ListenableFuture resultFuture = domRpcService.invokeRpc(schemaPath, input); @@ -548,7 +549,7 @@ public class MountPointEndToEndTest { private static void testDOMDataBrokerOperations(final DOMDataBroker dataBroker) throws InterruptedException, ExecutionException, TimeoutException { - DOMDataWriteTransaction writeTx = dataBroker.newWriteOnlyTransaction(); + DOMDataTreeWriteTransaction writeTx = dataBroker.newWriteOnlyTransaction(); final ContainerNode topNode = Builders.containerBuilder() .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(Top.QNAME)).build(); @@ -570,7 +571,7 @@ public class MountPointEndToEndTest { writeTx.delete(LogicalDatastoreType.CONFIGURATION, topPath); writeTx.commit().get(5, TimeUnit.SECONDS); - DOMDataReadWriteTransaction readTx = dataBroker.newReadWriteTransaction(); + DOMDataTreeReadWriteTransaction readTx = dataBroker.newReadWriteTransaction(); assertFalse(readTx.exists(LogicalDatastoreType.CONFIGURATION, topPath).get(5, TimeUnit.SECONDS)); assertTrue(readTx.cancel()); } @@ -598,7 +599,7 @@ public class MountPointEndToEndTest { writeTx.commit().get(5, TimeUnit.SECONDS); } - private static void verifyDataInStore(final DOMDataReadTransaction readTx, final YangInstanceIdentifier path, + private static void verifyDataInStore(final DOMDataTreeReadTransaction readTx, final YangInstanceIdentifier path, final NormalizedNode expNode) throws InterruptedException, ExecutionException, TimeoutException { final Optional> read = readTx.read(LogicalDatastoreType.CONFIGURATION, path) .get(5, TimeUnit.SECONDS); @@ -611,7 +612,7 @@ public class MountPointEndToEndTest { private static void verifyTopologyNodesCreated(final DataBroker dataBroker) { await().atMost(5, TimeUnit.SECONDS).until(() -> { - try (ReadOnlyTransaction readTx = dataBroker.newReadOnlyTransaction()) { + try (ReadTransaction readTx = dataBroker.newReadOnlyTransaction()) { Optional configTopology = readTx.read(LogicalDatastoreType.CONFIGURATION, NetconfTopologyUtils.createTopologyListPath(TOPOLOGY_ID)).get(3, TimeUnit.SECONDS); Optional operTopology = readTx.read(LogicalDatastoreType.OPERATIONAL, @@ -681,16 +682,16 @@ public class MountPointEndToEndTest { private static class TopDOMRpcImplementation implements DOMRpcImplementation { private volatile SettableFuture>> rpcInvokedFuture; - private volatile CheckedFuture returnFuture; + private volatile FluentFuture returnFuture; @Override - public CheckedFuture invokeRpc(final DOMRpcIdentifier rpc, + public FluentFuture invokeRpc(final DOMRpcIdentifier rpc, final NormalizedNode input) { rpcInvokedFuture.set(new SimpleEntry<>(rpc, input)); return returnFuture; } - void init(final CheckedFuture retFuture) { + void init(final FluentFuture retFuture) { this.returnFuture = retFuture; rpcInvokedFuture = SettableFuture.create(); } diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeActorTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeActorTest.java index 694853e6f7..d726dc3462 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeActorTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeActorTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import static java.nio.charset.StandardCharsets.UTF_8; @@ -58,17 +57,17 @@ import org.junit.rules.ExpectedException; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.opendaylight.controller.cluster.schema.provider.impl.YangTextSchemaSourceSerializationProxy; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +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.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcException; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.impl.actors.NetconfNodeActor; import org.opendaylight.netconf.topology.singleton.impl.utils.ClusteringRpcException; @@ -497,9 +496,9 @@ public class NetconfNodeActorTest { @Test public void testSlaveNewTransactionRequests() { - doReturn(mock(DOMDataReadOnlyTransaction.class)).when(mockDOMDataBroker).newReadOnlyTransaction(); - doReturn(mock(DOMDataReadWriteTransaction.class)).when(mockDOMDataBroker).newReadWriteTransaction(); - doReturn(mock(DOMDataWriteTransaction.class)).when(mockDOMDataBroker).newWriteOnlyTransaction(); + doReturn(mock(DOMDataTreeReadTransaction.class)).when(mockDOMDataBroker).newReadOnlyTransaction(); + doReturn(mock(DOMDataTreeReadWriteTransaction.class)).when(mockDOMDataBroker).newReadWriteTransaction(); + doReturn(mock(DOMDataTreeWriteTransaction.class)).when(mockDOMDataBroker).newWriteOnlyTransaction(); initializeMaster(Collections.emptyList()); registerSlaveMountPoint(); diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManagerTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManagerTest.java index 1557f8cae9..d7bd0de49e 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManagerTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfNodeManagerTest.java @@ -19,9 +19,9 @@ import static org.mockito.Mockito.timeout; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.MockitoAnnotations.initMocks; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.DELETE; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.SUBTREE_MODIFIED; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.WRITE; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.DELETE; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.SUBTREE_MODIFIED; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.WRITE; import akka.actor.ActorSystem; import akka.actor.Props; @@ -49,15 +49,15 @@ import org.junit.After; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemasResolver; import org.opendaylight.netconf.sal.connect.netconf.NetconfDevice; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; @@ -219,7 +219,7 @@ public class NetconfNodeManagerTest { doReturn(node).when(mockDataObjModification).getDataAfter(); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointBuilder, timeout(5000)).register(); @@ -235,7 +235,7 @@ public class NetconfNodeManagerTest { doReturn(null).when(mockDataObjModification).getDataAfter(); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointReg, timeout(5000)).close(); @@ -249,7 +249,7 @@ public class NetconfNodeManagerTest { doReturn(node).when(mockDataObjModification).getDataAfter(); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointBuilder, timeout(5000)).register(); @@ -262,7 +262,7 @@ public class NetconfNodeManagerTest { doReturn(node).when(mockDataObjModification).getDataBefore(); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointReg, timeout(5000)).close(); @@ -283,7 +283,7 @@ public class NetconfNodeManagerTest { doReturn(updatedNode).when(mockDataObjModification).getDataAfter(); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointReg, timeout(5000)).close(); @@ -313,7 +313,7 @@ public class NetconfNodeManagerTest { // First try the registration where the perceived master hasn't been initialized as the master. netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); verify(mockMountPointBuilder, after(1000).never()).register(); @@ -328,7 +328,7 @@ public class NetconfNodeManagerTest { yangTextSchemaSourceRequestFuture); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); yangTextSchemaSourceRequestFuture.get(5, TimeUnit.SECONDS); @@ -344,7 +344,7 @@ public class NetconfNodeManagerTest { askForMasterMountPointFuture); netconfNodeManager.onDataTreeChanged(Collections.singletonList( - new NetconfTopologyManagerTest.CustomTreeModification(new DataTreeIdentifier<>( + new NetconfTopologyManagerTest.CustomTreeModification(DataTreeIdentifier.create( LogicalDatastoreType.OPERATIONAL, nodeListPath), mockDataObjModification))); askForMasterMountPointFuture.get(5, TimeUnit.SECONDS); @@ -390,15 +390,15 @@ public class NetconfNodeManagerTest { private static class TestMasterActor extends NetconfNodeActor { final Map, CompletableFuture> messagesToDrop = new ConcurrentHashMap<>(); - TestMasterActor(NetconfTopologySetup setup, RemoteDeviceId deviceId, Timeout actorResponseWaitTime, - DOMMountPointService mountPointService) { + TestMasterActor(final NetconfTopologySetup setup, final RemoteDeviceId deviceId, + final Timeout actorResponseWaitTime, final DOMMountPointService mountPointService) { super(setup, deviceId, setup.getSchemaResourcesDTO().getSchemaRegistry(), setup.getSchemaResourcesDTO().getSchemaRepository(), actorResponseWaitTime, mountPointService); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Override - public void handleReceive(Object message) { + public void handleReceive(final Object message) { CompletableFuture dropFuture = messagesToDrop.remove(message.getClass()); if (dropFuture != null) { dropFuture.complete(message); diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManagerTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManagerTest.java index c61d1f8e93..f88314ec31 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManagerTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/NetconfTopologyManagerTest.java @@ -20,23 +20,22 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; import static org.mockito.MockitoAnnotations.initMocks; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.DELETE; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.SUBTREE_MODIFIED; -import static org.opendaylight.controller.md.sal.binding.api.DataObjectModification.ModificationType.WRITE; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.DELETE; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.SUBTREE_MODIFIED; +import static org.opendaylight.mdsal.binding.api.DataObjectModification.ModificationType.WRITE; import akka.util.Timeout; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; import io.netty.util.concurrent.EventExecutor; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.TimeUnit; import java.util.function.Function; -import javax.annotation.Nonnull; import org.junit.Before; import org.junit.Test; import org.mockito.ArgumentCaptor; @@ -45,16 +44,16 @@ import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.cluster.ActorSystemProvider; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.binding.test.ConstantSchemaAbstractDataBrokerTest; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTest; import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceRegistration; import org.opendaylight.mdsal.singleton.common.api.ServiceGroupIdentifier; @@ -100,7 +99,7 @@ public class NetconfTopologyManagerTest { public void setUp() throws Exception { initMocks(this); - ConstantSchemaAbstractDataBrokerTest dataBrokerTest = new ConstantSchemaAbstractDataBrokerTest(false) { + AbstractDataBrokerTest dataBrokerTest = new AbstractDataBrokerTest() { @Override protected Set getModuleInfos() throws Exception { return ImmutableSet.of(BindingReflections.getModuleInfo(NetworkTopology.class), @@ -111,7 +110,7 @@ public class NetconfTopologyManagerTest { dataBrokerTest.setup(); dataBroker = spy(dataBrokerTest.getDataBroker()); - final RpcProviderRegistry rpcProviderRegistry = mock(RpcProviderRegistry.class); + final DOMRpcProviderService rpcProviderRegistry = mock(DOMRpcProviderService.class); final ScheduledThreadPool keepaliveExecutor = mock(ScheduledThreadPool.class); final ThreadPool processingThreadPool = mock(ThreadPool.class); final ExecutorService processingService = mock(ExecutorService.class); @@ -146,7 +145,7 @@ public class NetconfTopologyManagerTest { netconfTopologyManager.init(); await().atMost(5, TimeUnit.SECONDS).until(() -> { - ReadOnlyTransaction readTx = dataBroker.newReadOnlyTransaction(); + ReadTransaction readTx = dataBroker.newReadOnlyTransaction(); Optional config = readTx.read(LogicalDatastoreType.CONFIGURATION, NetconfTopologyUtils.createTopologyListPath(TOPOLOGY_ID)).get(3, TimeUnit.SECONDS); Optional oper = readTx.read(LogicalDatastoreType.OPERATIONAL, @@ -157,7 +156,7 @@ public class NetconfTopologyManagerTest { // verify registration is called with right parameters verify(dataBroker).registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, NetconfTopologyUtils + DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, NetconfTopologyUtils .createTopologyListPath(TOPOLOGY_ID).child(Node.class)), netconfTopologyManager); netconfTopologyManager.close(); @@ -232,9 +231,9 @@ public class NetconfTopologyManagerTest { .registerClusterSingletonService(mockContext2); netconfTopologyManager.onDataTreeChanged(Arrays.asList( - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId1), dataObjectModification1), - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId2), dataObjectModification2))); verify(clusterSingletonServiceProvider).registerClusterSingletonService(mockContext1); @@ -261,9 +260,9 @@ public class NetconfTopologyManagerTest { doNothing().when(mockContext2).refresh(any()); netconfTopologyManager.onDataTreeChanged(Arrays.asList( - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId1), dataObjectModification1), - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId2), dataObjectModification2))); ArgumentCaptor mockContext1Setup = ArgumentCaptor.forClass(NetconfTopologySetup.class); @@ -281,7 +280,7 @@ public class NetconfTopologyManagerTest { doReturn(null).when(dataObjectModification1).getDataAfter(); netconfTopologyManager.onDataTreeChanged(Arrays.asList( - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId1), dataObjectModification1))); verify(mockClusterRegistration1).close(); @@ -310,7 +309,7 @@ public class NetconfTopologyManagerTest { }); netconfTopologyManager.onDataTreeChanged(Arrays.asList( - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId1), dataObjectModification1))); verify(clusterSingletonServiceProvider, times(2)).registerClusterSingletonService(newMockContext1); @@ -361,7 +360,7 @@ public class NetconfTopologyManagerTest { netconfTopologyManager.init(); netconfTopologyManager.onDataTreeChanged(Arrays.asList( - new CustomTreeModification(new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, + new CustomTreeModification(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, nodeInstanceId), dataObjectModification))); verify(clusterSingletonServiceProvider, times(3)).registerClusterSingletonService(mockContext); @@ -382,13 +381,11 @@ public class NetconfTopologyManagerTest { this.rootNode = rootNode; } - @Nonnull @Override public DataTreeIdentifier getRootPath() { return rootPath; } - @Nonnull @Override public DataObjectModification getRootNode() { return rootNode; diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBrokerTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBrokerTest.java index 9c5c5f4c23..5384856bd6 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBrokerTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/ProxyDOMDataBrokerTest.java @@ -19,10 +19,10 @@ import java.net.InetSocketAddress; import java.util.concurrent.TimeUnit; import org.junit.AfterClass; import org.junit.Test; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.messages.transactions.DeleteRequest; import org.opendaylight.netconf.topology.singleton.messages.transactions.NewReadTransactionRequest; @@ -53,7 +53,7 @@ public class ProxyDOMDataBrokerTest { @Test public void testNewReadOnlyTransaction() { - final DOMDataReadOnlyTransaction tx = proxy.newReadOnlyTransaction(); + final DOMDataTreeReadTransaction tx = proxy.newReadOnlyTransaction(); masterActor.expectMsgClass(NewReadTransactionRequest.class); masterActor.reply(new Success(masterActor.ref())); @@ -65,7 +65,7 @@ public class ProxyDOMDataBrokerTest { @Test public void testNewWriteOnlyTransaction() { - final DOMDataWriteTransaction tx = proxy.newWriteOnlyTransaction(); + final DOMDataTreeWriteTransaction tx = proxy.newWriteOnlyTransaction(); masterActor.expectMsgClass(NewWriteTransactionRequest.class); masterActor.reply(new Success(masterActor.ref())); @@ -77,7 +77,7 @@ public class ProxyDOMDataBrokerTest { @Test public void testNewReadWriteTransaction() { - final DOMDataReadWriteTransaction tx = proxy.newReadWriteTransaction(); + final DOMDataTreeReadWriteTransaction tx = proxy.newReadWriteTransaction(); masterActor.expectMsgClass(NewReadWriteTransactionRequest.class); masterActor.reply(new Success(masterActor.ref())); @@ -94,6 +94,6 @@ public class ProxyDOMDataBrokerTest { @Test public void testGetSupportedExtensions() { - assertTrue(proxy.getSupportedExtensions().isEmpty()); + assertTrue(proxy.getExtensions().isEmpty()); } } diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java index b179d97261..cdb25907ca 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/RemoteDeviceConnectorImplTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl; import static org.junit.Assert.assertEquals; @@ -31,13 +30,13 @@ import java.util.concurrent.ScheduledExecutorService; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChainListener; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMRpcProviderService; import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.client.NetconfClientSessionListener; @@ -74,7 +73,7 @@ public class RemoteDeviceConnectorImplTest { private DataBroker dataBroker; @Mock - private RpcProviderRegistry rpcProviderRegistry; + private DOMRpcProviderService rpcProviderRegistry; @Mock private ClusterSingletonServiceProvider clusterSingletonServiceProvider; @@ -98,7 +97,7 @@ public class RemoteDeviceConnectorImplTest { private DOMMountPointService mountPointService; @Mock - private BindingTransactionChain txChain; + private TransactionChain txChain; @Mock private WriteTransaction writeTx; diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTest.java index 7dc4faadcb..3352b026bf 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTest.java @@ -15,13 +15,13 @@ import org.junit.AfterClass; import org.junit.Before; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; public class ReadTransactionActorTest extends ReadTransactionActorTestAdapter { private static ActorSystem system = ActorSystem.apply(); @Mock - private DOMDataReadOnlyTransaction mockReadTx; + private DOMDataTreeReadTransaction mockReadTx; @Before public void setUp() { diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTestAdapter.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTestAdapter.java index 456950a9f2..738fd6bd57 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTestAdapter.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadTransactionActorTestAdapter.java @@ -8,21 +8,23 @@ package org.opendaylight.netconf.topology.singleton.impl.actors; import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFailedFluentFuture; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateTrueFluentFuture; import akka.actor.ActorRef; import akka.actor.ActorSystem; import akka.actor.Status.Failure; import akka.testkit.TestProbe; import akka.util.Timeout; -import com.google.common.base.Optional; -import com.google.common.util.concurrent.Futures; +import java.util.Optional; import java.util.concurrent.TimeUnit; import org.junit.Test; -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.DOMDataReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; 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; @@ -44,11 +46,12 @@ public abstract class ReadTransactionActorTestAdapter { static final NormalizedNode NODE = Builders.containerBuilder() .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(QName.create("", "cont"))).build(); - private DOMDataReadTransaction mockReadTx; + private DOMDataTreeReadTransaction mockReadTx; private TestProbe probe; private ActorRef actorRef; - public void init(DOMDataReadTransaction inMockReadTx, ActorSystem system, ActorRef inActorRef) { + public void init(final DOMDataTreeReadTransaction inMockReadTx, final ActorSystem system, + final ActorRef inActorRef) { this.mockReadTx = inMockReadTx; this.probe = TestProbe.apply(system); this.actorRef = inActorRef; @@ -56,7 +59,7 @@ public abstract class ReadTransactionActorTestAdapter { @Test public void testRead() { - when(mockReadTx.read(STORE, PATH)).thenReturn(Futures.immediateCheckedFuture(Optional.of(NODE))); + doReturn(immediateFluentFuture(Optional.of(NODE))).when(mockReadTx).read(STORE, PATH); actorRef.tell(new ReadRequest(STORE, PATH), probe.ref()); verify(mockReadTx).read(STORE, PATH); @@ -66,7 +69,7 @@ public abstract class ReadTransactionActorTestAdapter { @Test public void testReadEmpty() { - when(mockReadTx.read(STORE, PATH)).thenReturn(Futures.immediateCheckedFuture(Optional.absent())); + doReturn(immediateFluentFuture(Optional.empty())).when(mockReadTx).read(STORE, PATH); actorRef.tell(new ReadRequest(STORE, PATH), probe.ref()); verify(mockReadTx).read(STORE, PATH); @@ -76,7 +79,7 @@ public abstract class ReadTransactionActorTestAdapter { @Test public void testReadFailure() { final ReadFailedException cause = new ReadFailedException("fail"); - when(mockReadTx.read(STORE, PATH)).thenReturn(Futures.immediateFailedCheckedFuture(cause)); + doReturn(immediateFailedFluentFuture(cause)).when(mockReadTx).read(STORE, PATH); actorRef.tell(new ReadRequest(STORE, PATH), probe.ref()); verify(mockReadTx).read(STORE, PATH); @@ -86,7 +89,7 @@ public abstract class ReadTransactionActorTestAdapter { @Test public void testExists() { - when(mockReadTx.exists(STORE, PATH)).thenReturn(Futures.immediateCheckedFuture(Boolean.TRUE)); + doReturn(immediateTrueFluentFuture()).when(mockReadTx).exists(STORE, PATH); actorRef.tell(new ExistsRequest(STORE, PATH), probe.ref()); verify(mockReadTx).exists(STORE, PATH); @@ -96,7 +99,7 @@ public abstract class ReadTransactionActorTestAdapter { @Test public void testExistsFailure() { final ReadFailedException cause = new ReadFailedException("fail"); - when(mockReadTx.exists(STORE, PATH)).thenReturn(Futures.immediateFailedCheckedFuture(cause)); + doReturn(immediateFailedFluentFuture(cause)).when(mockReadTx).exists(STORE, PATH); actorRef.tell(new ExistsRequest(STORE, PATH), probe.ref()); verify(mockReadTx).exists(STORE, PATH); diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActorTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActorTest.java index e0dc49542a..9d7216c73e 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActorTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/ReadWriteTransactionActorTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.ActorSystem; @@ -17,14 +16,14 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; import scala.concurrent.duration.Duration; public class ReadWriteTransactionActorTest { private static ActorSystem system = ActorSystem.apply(); @Mock - private DOMDataReadWriteTransaction mockReadWriteTx; + private DOMDataTreeReadWriteTransaction mockReadWriteTx; private final ReadTransactionActorTestAdapter readTestAdapter = new ReadTransactionActorTestAdapter() {}; private final WriteTransactionActorTestAdapter writeTestAdapter = new WriteTransactionActorTestAdapter() {}; diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTest.java index 91a4756c6e..972f5c0885 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.actors; import akka.actor.ActorSystem; @@ -16,14 +15,14 @@ import org.junit.AfterClass; import org.junit.Before; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import scala.concurrent.duration.Duration; public class WriteTransactionActorTest extends WriteTransactionActorTestAdapter { private static ActorSystem system = ActorSystem.apply(); @Mock - private DOMDataWriteTransaction mockWriteTx; + private DOMDataTreeWriteTransaction mockWriteTx; @Before public void setUp() { diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTestAdapter.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTestAdapter.java index 020887378a..06e7465631 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTestAdapter.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/actors/WriteTransactionActorTestAdapter.java @@ -24,8 +24,8 @@ import akka.actor.Status.Failure; import akka.actor.Status.Success; import akka.testkit.TestProbe; import org.junit.Test; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; import org.opendaylight.netconf.topology.singleton.messages.transactions.CancelRequest; import org.opendaylight.netconf.topology.singleton.messages.transactions.DeleteRequest; @@ -42,12 +42,13 @@ import org.opendaylight.yangtools.yang.common.RpcResultBuilder; * @author Thomas Pantelis */ public abstract class WriteTransactionActorTestAdapter { - private DOMDataWriteTransaction mockWriteTx; + private DOMDataTreeWriteTransaction mockWriteTx; private TestProbe probe; private ActorRef actorRef; private ActorSystem system; - public void init(DOMDataWriteTransaction inMockWriteTx, ActorSystem inSystem, ActorRef inActorRef) { + public void init(final DOMDataTreeWriteTransaction inMockWriteTx, final ActorSystem inSystem, + final ActorRef inActorRef) { this.mockWriteTx = inMockWriteTx; this.probe = TestProbe.apply(inSystem); this.actorRef = inActorRef; diff --git a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransactionTest.java b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransactionTest.java index 1d82be370f..60cf7fab8e 100644 --- a/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransactionTest.java +++ b/netconf/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/tx/ProxyReadWriteTransactionTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.topology.singleton.impl.tx; import static org.junit.Assert.assertEquals; @@ -21,18 +20,18 @@ import akka.pattern.AskTimeoutException; import akka.testkit.TestProbe; import akka.testkit.javadsl.TestKit; import akka.util.Timeout; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.net.InetSocketAddress; +import java.util.Optional; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.junit.AfterClass; import org.junit.Before; import org.junit.Test; -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.common.api.data.TransactionCommitFailedException; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.ReadFailedException; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.netconf.topology.singleton.messages.NormalizedNodeMessage; @@ -81,7 +80,7 @@ public class ProxyReadWriteTransactionTest { return newSuccessfulProxyTx(Timeout.apply(5, TimeUnit.SECONDS)); } - private ProxyReadWriteTransaction newSuccessfulProxyTx(Timeout timeout) { + private ProxyReadWriteTransaction newSuccessfulProxyTx(final Timeout timeout) { return new ProxyReadWriteTransaction(DEVICE_ID, Futures.successful(masterActor.ref()), system.dispatcher(), timeout); } @@ -192,7 +191,7 @@ public class ProxyReadWriteTransactionTest { } } - private void commit(ProxyReadWriteTransaction tx) + private void commit(final ProxyReadWriteTransaction tx) throws InterruptedException, ExecutionException, TimeoutException { final ListenableFuture submit = tx.commit(); masterActor.expectMsgClass(SubmitRequest.class); @@ -398,7 +397,7 @@ public class ProxyReadWriteTransactionTest { } } - private static void verifyDocumentedException(Throwable cause) { + private static void verifyDocumentedException(final Throwable cause) { assertTrue("Unexpected cause " + cause, cause instanceof DocumentedException); final DocumentedException de = (DocumentedException) cause; assertEquals(DocumentedException.ErrorSeverity.WARNING, de.getErrorSeverity()); diff --git a/netconf/netconf-topology/pom.xml b/netconf/netconf-topology/pom.xml index 3ea0f04a0a..c3e7d43fde 100644 --- a/netconf/netconf-topology/pom.xml +++ b/netconf/netconf-topology/pom.xml @@ -29,12 +29,12 @@ - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api - org.opendaylight.controller - sal-core-api + org.opendaylight.mdsal + mdsal-dom-api org.opendaylight.controller @@ -49,13 +49,8 @@ sal-netconf-connector - org.opendaylight.controller - sal-common-api - - - org.mockito - mockito-core - test + org.opendaylight.mdsal + mdsal-common-api org.opendaylight.yangtools diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java index 66eea5692b..ad31153cb8 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/AbstractNetconfTopology.java @@ -41,8 +41,8 @@ import javax.net.ssl.TrustManagerFactory; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.client.NetconfClientSessionListener; diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfConnectorFactory.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfConnectorFactory.java index 0f99262b70..7a1560c91b 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfConnectorFactory.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/api/NetconfConnectorFactory.java @@ -7,7 +7,7 @@ */ package org.opendaylight.netconf.topology.api; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfConnectorFactoryImpl.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfConnectorFactoryImpl.java index 996f7c91ca..10d41ff6e9 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfConnectorFactoryImpl.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfConnectorFactoryImpl.java @@ -10,10 +10,10 @@ package org.opendaylight.netconf.topology.impl; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.topology.api.NetconfConnectorFactory; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.HostBuilder; diff --git a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java index 4a27320634..5d88e18f11 100644 --- a/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java +++ b/netconf/netconf-topology/src/main/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImpl.java @@ -15,15 +15,15 @@ import javax.annotation.Nonnull; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; @@ -111,10 +111,9 @@ public class NetconfTopologyImpl extends AbstractNetconfTopology }, MoreExecutors.directExecutor()); LOG.debug("Registering datastore listener"); - datastoreListenerRegistration = - dataBroker.registerDataTreeChangeListener( - new DataTreeIdentifier<>(LogicalDatastoreType.CONFIGURATION, - TopologyUtil.createTopologyListPath(topologyId).child(Node.class)), this); + datastoreListenerRegistration = dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create( + LogicalDatastoreType.CONFIGURATION, TopologyUtil.createTopologyListPath(topologyId).child(Node.class)), + this); } @Override diff --git a/netconf/netconf-topology/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java b/netconf/netconf-topology/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java index e5d79fb3b0..343c70eb80 100644 --- a/netconf/netconf-topology/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java +++ b/netconf/netconf-topology/src/test/java/org/opendaylight/netconf/topology/impl/NetconfTopologyImplTest.java @@ -34,12 +34,12 @@ import org.mockito.MockitoAnnotations; import org.opendaylight.aaa.encrypt.AAAEncryptionService; import org.opendaylight.controller.config.threadpool.ScheduledThreadPool; import org.opendaylight.controller.config.threadpool.ThreadPool; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.client.NetconfClientDispatcher; import org.opendaylight.netconf.client.NetconfClientSessionListener; import org.opendaylight.netconf.client.conf.NetconfClientConfiguration; diff --git a/netconf/sal-netconf-connector/pom.xml b/netconf/sal-netconf-connector/pom.xml index f285c84f48..0d0c13d1ac 100644 --- a/netconf/sal-netconf-connector/pom.xml +++ b/netconf/sal-netconf-connector/pom.xml @@ -52,8 +52,8 @@ netconf-notifications-api - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api org.opendaylight.mdsal @@ -124,21 +124,16 @@ test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test - org.opendaylight.controller - sal-binding-broker-impl + org.opendaylight.mdsal + mdsal-binding-dom-adapter test-jar test - - org.mockito - mockito-core - test - org.hamcrest hamcrest-core diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/DeviceActionFactory.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/DeviceActionFactory.java index e8df4d4dc8..2c505e87cb 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/DeviceActionFactory.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/DeviceActionFactory.java @@ -7,7 +7,7 @@ */ package org.opendaylight.netconf.sal.connect.api; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMActionService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -21,8 +21,8 @@ public interface DeviceActionFactory { * @param schemaContext - schema context of device * @return {@link DOMActionService} of specific device */ - default DOMActionService createDeviceAction(MessageTransformer messageTransformer, - RemoteDeviceCommunicator listener, SchemaContext schemaContext) { + default DOMActionService createDeviceAction(final MessageTransformer messageTransformer, + final RemoteDeviceCommunicator listener, final SchemaContext schemaContext) { return null; } } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/MessageTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/MessageTransformer.java index 0cbc2fd556..c51eb73dd1 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/MessageTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/MessageTransformer.java @@ -7,10 +7,10 @@ */ package org.opendaylight.netconf.sal.connect.api; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.dom.api.DOMActionResult; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -30,8 +30,8 @@ public interface MessageTransformer { * @param payload - input of action * @return message */ - default M toActionRequest(SchemaPath action, DOMDataTreeIdentifier domDataTreeIdentifier, NormalizedNode payload) { + default M toActionRequest(final SchemaPath action, final DOMDataTreeIdentifier domDataTreeIdentifier, + final NormalizedNode payload) { throw new UnsupportedOperationException(); } @@ -42,7 +42,7 @@ public interface MessageTransformer { * @param message - message to parsing * @return {@link DOMActionResult} */ - default DOMActionResult toActionResult(SchemaPath action, M message) { + default DOMActionResult toActionResult(final SchemaPath action, final M message) { throw new UnsupportedOperationException(); } } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceCommunicator.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceCommunicator.java index 3c887cfa4b..65cf0ad9c6 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceCommunicator.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceCommunicator.java @@ -7,13 +7,14 @@ */ package org.opendaylight.netconf.sal.connect.api; -import com.google.common.util.concurrent.ListenableFuture; +import com.google.common.util.concurrent.FluentFuture; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; public interface RemoteDeviceCommunicator extends AutoCloseable { - ListenableFuture> sendRequest(M message, QName rpc); + FluentFuture> sendRequest(M message, QName rpc); + @Override void close(); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceHandler.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceHandler.java index 5db885e77e..f762b889a9 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceHandler.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/api/RemoteDeviceHandler.java @@ -7,9 +7,9 @@ */ package org.opendaylight.netconf.sal.connect.api; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.yangtools.yang.model.api.SchemaContext; public interface RemoteDeviceHandler extends AutoCloseable { @@ -21,8 +21,8 @@ public interface RemoteDeviceHandler extends AutoCloseable { * @param netconfSessionPreferences - session of device * @param deviceRpc - {@link DOMRpcService} of device */ - default void onDeviceConnected(SchemaContext remoteSchemaContext, PREF netconfSessionPreferences, - DOMRpcService deviceRpc) { + default void onDeviceConnected(final SchemaContext remoteSchemaContext, final PREF netconfSessionPreferences, + final DOMRpcService deviceRpc) { // DO NOTHING } @@ -34,8 +34,8 @@ public interface RemoteDeviceHandler extends AutoCloseable { * @param deviceRpc - {@link DOMRpcService} of device * @param deviceAction - {@link DOMActionService} of device */ - default void onDeviceConnected(SchemaContext remoteSchemaContext, PREF netconfSessionPreferences, - DOMRpcService deviceRpc, DOMActionService deviceAction) { + default void onDeviceConnected(final SchemaContext remoteSchemaContext, final PREF netconfSessionPreferences, + final DOMRpcService deviceRpc, final DOMActionService deviceAction) { // DO NOTHING } @@ -45,5 +45,6 @@ public interface RemoteDeviceHandler extends AutoCloseable { void onNotification(DOMNotification domNotification); + @Override void close(); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java index e67e6c51e3..9b0b0f268c 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/LibraryModulesSchemas.java @@ -41,8 +41,8 @@ import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemas; import org.opendaylight.netconf.sal.connect.netconf.sal.NetconfDeviceRpc; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java index fbe80b373d..d7cddeb365 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java @@ -9,13 +9,12 @@ package org.opendaylight.netconf.sal.connect.netconf; import static java.util.Objects.requireNonNull; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; 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.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -26,16 +25,16 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.Optional; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import javax.annotation.Nonnull; import javax.annotation.concurrent.GuardedBy; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.sal.connect.api.DeviceActionFactory; import org.opendaylight.netconf.sal.connect.api.MessageTransformer; @@ -187,7 +186,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 CheckedFuture rpcResultListenableFuture = deviceRpc.invokeRpc( + final FluentFuture rpcResultListenableFuture = deviceRpc.invokeRpc( NetconfMessageTransformUtil.toPath(NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_QNAME), NetconfMessageTransformUtil.CREATE_SUBSCRIPTION_RPC_CONTENT); @@ -199,7 +198,7 @@ public class NetconfDevice // Only disconnect is enough, // the reconnecting nature of the connector will take care of reconnecting listener.disconnect(); - return Optional.absent(); + return Optional.empty(); } return Optional.of(notification); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java index f56b4ab5fc..bec05994ef 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemas.java @@ -22,8 +22,8 @@ import java.util.HashSet; import java.util.Optional; import java.util.Set; import java.util.concurrent.ExecutionException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemas; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseSchema; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java index dd43dad938..089869899a 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasResolverImpl.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf; import org.opendaylight.netconf.sal.connect.api.NetconfDeviceSchemas; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NotificationHandler.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NotificationHandler.java index 5e9b33efab..cf8d0aefb1 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NotificationHandler.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NotificationHandler.java @@ -7,11 +7,11 @@ */ package org.opendaylight.netconf.sal.connect.netconf; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.LinkedList; import java.util.List; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; +import java.util.Optional; +import org.opendaylight.mdsal.dom.api.DOMNotification; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.api.MessageTransformer; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java index 408cd478df..7373b819cb 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/listener/NetconfDeviceCommunicator.java @@ -10,7 +10,7 @@ package org.opendaylight.netconf.sal.connect.netconf.listener; import com.google.common.base.Optional; import com.google.common.base.Strings; import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.SettableFuture; import io.netty.util.concurrent.Future; @@ -38,6 +38,7 @@ import org.opendaylight.netconf.sal.connect.api.RemoteDevice; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcError; import org.opendaylight.yangtools.yang.common.RpcResult; @@ -343,13 +344,13 @@ public class NetconfDeviceCommunicator } @Override - public ListenableFuture> sendRequest(final NetconfMessage message, final QName rpc) { + public FluentFuture> sendRequest(final NetconfMessage message, final QName rpc) { sessionLock.lock(); try { if (semaphore != null && !semaphore.tryAcquire()) { LOG.warn("Limit of concurrent rpc messages was reached (limit: {}). Rpc reply message is needed. " + "Discarding request of Netconf device with id {}", concurentRpcMsgs, id.getName()); - return Futures.immediateFailedFuture(new NetconfDocumentedException( + return FluentFutures.immediateFailedFluentFuture(new NetconfDocumentedException( "Limit of rpc messages was reached (Limit :" + concurentRpcMsgs + ") waiting for emptying the queue of Netconf device with id" + id.getName())); } @@ -360,7 +361,7 @@ public class NetconfDeviceCommunicator } } - private ListenableFuture> sendRequestWithLock(final NetconfMessage message, + private FluentFuture> sendRequestWithLock(final NetconfMessage message, final QName rpc) { if (LOG.isTraceEnabled()) { LOG.trace("{}: Sending message {}", id, msgToS(message)); @@ -369,7 +370,7 @@ public class NetconfDeviceCommunicator if (currentSession == null) { LOG.warn("{}: Session is disconnected, failing RPC request {}", id, message); - return Futures.immediateFuture(createSessionDownRpcResult()); + return FluentFutures.immediateFluentFuture(createSessionDownRpcResult()); } final Request req = new Request(new UncancellableFuture<>(true), message); diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java index 0b1edfddca..76fb631a09 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacade.java @@ -13,7 +13,7 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_RUNNING_QNAME; 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.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.MoreExecutors; @@ -24,12 +24,12 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.eclipse.jdt.annotation.NonNull; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; @@ -264,9 +264,9 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler rpcResultFuture; + private final FluentFuture rpcResultFuture; - RequestTimeoutTask(final CheckedFuture rpcResultFuture) { + RequestTimeoutTask(final FluentFuture rpcResultFuture) { this.rpcResultFuture = rpcResultFuture; } @@ -303,9 +303,9 @@ public final class KeepaliveSalFacade implements RemoteDeviceHandler invokeRpc(@Nonnull final SchemaPath type, + public @NonNull FluentFuture invokeRpc(@Nonnull final SchemaPath type, final NormalizedNode input) { - final CheckedFuture domRpcResultDOMRpcExceptionCheckedFuture = + final FluentFuture domRpcResultDOMRpcExceptionCheckedFuture = deviceRpc.invokeRpc(type, input); Futures.addCallback(domRpcResultDOMRpcExceptionCheckedFuture, resetKeepaliveTask, MoreExecutors.directExecutor()); diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java index c124e4f596..afb76dcfe4 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBroker.java @@ -5,20 +5,19 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal; import com.google.common.base.Preconditions; -import java.util.Collections; -import java.util.Map; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; +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.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; 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; @@ -53,17 +52,17 @@ public final class NetconfDeviceDataBroker implements DOMDataBroker { } @Override - public DOMDataReadOnlyTransaction newReadOnlyTransaction() { + public DOMDataTreeReadTransaction newReadOnlyTransaction() { return new ReadOnlyTx(netconfOps, id); } @Override - public DOMDataReadWriteTransaction newReadWriteTransaction() { + public DOMDataTreeReadWriteTransaction newReadWriteTransaction() { return new ReadWriteTx(newReadOnlyTransaction(), newWriteOnlyTransaction()); } @Override - public DOMDataWriteTransaction newWriteOnlyTransaction() { + public DOMDataTreeWriteTransaction newWriteOnlyTransaction() { if (candidateSupported) { if (runningWritable) { return new WriteCandidateRunningTx(id, netconfOps, rollbackSupport); @@ -76,13 +75,12 @@ public final class NetconfDeviceDataBroker implements DOMDataBroker { } @Override - public DOMTransactionChain createTransactionChain(final TransactionChainListener listener) { + public DOMTransactionChain createTransactionChain(final DOMTransactionChainListener listener) { return new TxChain(this, listener); } @Override - public Map, DOMDataBrokerExtension> getSupportedExtensions() { - return Collections.emptyMap(); + public ClassToInstanceMap getExtensions() { + return ImmutableClassToInstanceMap.of(); } - } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationService.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationService.java index 44d088dc46..2da8ae5355 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationService.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationService.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal; import com.google.common.collect.HashMultimap; @@ -13,9 +12,9 @@ import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import java.util.Collection; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; import org.opendaylight.yangtools.concepts.AbstractListenerRegistration; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.model.api.SchemaPath; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java index 0d880f2dc5..ddb1aa89b4 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpc.java @@ -10,19 +10,17 @@ 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.CheckedFuture; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; +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.SettableFuture; import javax.annotation.Nonnull; -import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; +import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.sal.connect.api.MessageTransformer; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; @@ -50,25 +48,26 @@ public final class NetconfDeviceRpc implements DOMRpcService { this.schemaContext = requireNonNull(schemaContext); } - @Nonnull @Override - public CheckedFuture invokeRpc(@Nonnull final SchemaPath type, - @Nullable final NormalizedNode input) { - final NetconfMessage message = transformer.toRpcRequest(type, input); - final ListenableFuture> delegateFutureWithPureResult = - communicator.sendRequest(message, type.getLastComponent()); + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { + final FluentFuture> delegateFuture = communicator.sendRequest( + transformer.toRpcRequest(type, input), type.getLastComponent()); + + final SettableFuture ret = SettableFuture.create(); + delegateFuture.addCallback(new FutureCallback>() { + @Override + public void onSuccess(RpcResult result) { + ret.set(result.isSuccessful() ? transformer.toRpcResult(result.getResult(), type) + : new DefaultDOMRpcResult(result.getErrors())); + } - final ListenableFuture transformed = - Futures.transform(delegateFutureWithPureResult, input1 -> { - if (input1.isSuccessful()) { - return transformer.toRpcResult(input1.getResult(), type); - } else { - return new DefaultDOMRpcResult(input1.getErrors()); - } - }, MoreExecutors.directExecutor()); + @Override + public void onFailure(Throwable cause) { + ret.setException(new DOMRpcImplementationNotAvailableException(cause, "Unable to invoke rpc %s", type)); + } - return Futures.makeChecked(transformed, exception -> - new DOMRpcImplementationNotAvailableException(exception, "Unable to invoke rpc %s", type)); + }, MoreExecutors.directExecutor()); + return ret; } @Nonnull diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacade.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacade.java index 41e282ff88..4f050d6140 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacade.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacade.java @@ -10,12 +10,12 @@ package org.opendaylight.netconf.sal.connect.netconf.sal; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.Lists; import java.util.List; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; @@ -52,7 +52,7 @@ public final class NetconfDeviceSalFacade implements AutoCloseable, RemoteDevice @Override public synchronized void onDeviceConnected(final SchemaContext schemaContext, final NetconfSessionPreferences netconfSessionPreferences, - final DOMRpcService deviceRpc, DOMActionService deviceAction) { + final DOMRpcService deviceRpc, final DOMActionService deviceAction) { final DOMDataBroker domBroker = new NetconfDeviceDataBroker(id, schemaContext, deviceRpc, netconfSessionPreferences); diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProvider.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProvider.java index ca84151ae9..7b578a35dc 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProvider.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProvider.java @@ -8,18 +8,17 @@ package org.opendaylight.netconf.sal.connect.netconf.sal; import com.google.common.base.Preconditions; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChain; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.Transaction; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChainListener; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -36,12 +35,12 @@ public class NetconfDeviceSalProvider implements AutoCloseable { private volatile NetconfDeviceTopologyAdapter topologyDatastoreAdapter; - private BindingTransactionChain txChain; + private TransactionChain txChain; private final TransactionChainListener transactionChainListener = new TransactionChainListener() { @Override - public void onTransactionChainFailed(final TransactionChain chain, - final AsyncTransaction transaction, final Throwable cause) { + public void onTransactionChainFailed(final TransactionChain chain, final Transaction transaction, + final Throwable cause) { LOG.error("{}: TransactionChain({}) {} FAILED!", id, chain, transaction.getIdentifier(), cause); chain.close(); resetTransactionChainForAdapaters(); @@ -49,7 +48,7 @@ public class NetconfDeviceSalProvider implements AutoCloseable { } @Override - public void onTransactionChainSuccessful(final TransactionChain chain) { + public void onTransactionChainSuccessful(final TransactionChain chain) { LOG.trace("{}: TransactionChain({}) SUCCESSFUL", id, chain); } }; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapter.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapter.java index 62e7341ca8..1e65ec83df 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapter.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapter.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal; import com.google.common.base.Preconditions; @@ -16,10 +15,10 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber; @@ -55,13 +54,13 @@ public class NetconfDeviceTopologyAdapter implements AutoCloseable { private static final Logger LOG = LoggerFactory.getLogger(NetconfDeviceTopologyAdapter.class); private final RemoteDeviceId id; - private BindingTransactionChain txChain; + private TransactionChain txChain; private final InstanceIdentifier networkTopologyPath; private final KeyedInstanceIdentifier topologyListPath; private static final String UNKNOWN_REASON = "Unknown reason"; - NetconfDeviceTopologyAdapter(final RemoteDeviceId id, final BindingTransactionChain txChain) { + NetconfDeviceTopologyAdapter(final RemoteDeviceId id, final TransactionChain txChain) { this.id = id; this.txChain = Preconditions.checkNotNull(txChain); @@ -256,7 +255,7 @@ public class NetconfDeviceTopologyAdapter implements AutoCloseable { removeDeviceConfiguration(); } - public void setTxChain(final BindingTransactionChain txChain) { + public void setTxChain(final TransactionChain txChain) { this.txChain = Preconditions.checkNotNull(txChain); } } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapter.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapter.java index 19577f4f24..f9cd899092 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapter.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapter.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal; import java.io.ByteArrayInputStream; @@ -28,12 +27,12 @@ import java.util.List; import java.util.Map; import java.util.Optional; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.ClusteredDataTreeChangeListener; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.Keystore; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017._private.keys.PrivateKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.keystore.entry.KeyCredential; @@ -57,8 +56,8 @@ public class NetconfKeystoreAdapter implements ClusteredDataTreeChangeListener(LogicalDatastoreType.CONFIGURATION, keystoreIid), this); + dataBroker.registerDataTreeChangeListener(DataTreeIdentifier.create(LogicalDatastoreType.CONFIGURATION, + keystoreIid), this); } public Optional getKeypairFromId(final String keyId) { diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/SchemalessNetconfDeviceRpc.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/SchemalessNetconfDeviceRpc.java index 79482c564c..0cfe7b5b71 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/SchemalessNetconfDeviceRpc.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/SchemalessNetconfDeviceRpc.java @@ -7,18 +7,17 @@ */ package org.opendaylight.netconf.sal.connect.netconf.sal; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; -import com.google.common.util.concurrent.ListenableFuture; +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.SettableFuture; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.sal.connect.api.MessageTransformer; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; @@ -27,6 +26,7 @@ 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,40 +52,42 @@ public final class SchemalessNetconfDeviceRpc implements DOMRpcService { this.schemalessTransformer = messageTransformer; } - @Nonnull @Override - public CheckedFuture invokeRpc(@Nonnull final SchemaPath type, - @Nullable final NormalizedNode input) { + public FluentFuture invokeRpc(final SchemaPath type, final NormalizedNode input) { final MessageTransformer transformer; if (input instanceof AnyXmlNode) { transformer = schemalessTransformer; } else if (isBaseRpc(type)) { transformer = baseRpcTransformer; } else { - return Futures.immediateFailedCheckedFuture( - new DOMRpcImplementationNotAvailableException("Unable to invoke rpc %s", type)); + return FluentFutures.immediateFailedFluentFuture(new DOMRpcImplementationNotAvailableException( + "Unable to invoke rpc %s", type)); } return handleRpc(type, input, transformer); } - private CheckedFuture handleRpc( + private FluentFuture handleRpc( @Nonnull final SchemaPath type, @Nullable final NormalizedNode input, final MessageTransformer transformer) { - final NetconfMessage netconfMessage = transformer.toRpcRequest(type, input); - final ListenableFuture> rpcResultListenableFuture = - listener.sendRequest(netconfMessage, type.getLastComponent()); + final FluentFuture> delegateFuture = listener.sendRequest( + transformer.toRpcRequest(type, input), type.getLastComponent()); - final ListenableFuture transformed = - Futures.transform(rpcResultListenableFuture, input1 -> { - if (input1.isSuccessful()) { - return transformer.toRpcResult(input1.getResult(), type); - } + final SettableFuture ret = SettableFuture.create(); + delegateFuture.addCallback(new FutureCallback>() { + @Override + public void onSuccess(RpcResult result) { + ret.set(result.isSuccessful() ? transformer.toRpcResult(result.getResult(), type) + : new DefaultDOMRpcResult(result.getErrors())); + } - return new DefaultDOMRpcResult(input1.getErrors()); - }, MoreExecutors.directExecutor()); + @Override + public void onFailure(Throwable cause) { + ret.setException(new DOMRpcImplementationNotAvailableException(cause, + "Unable to invoke rpc %s on device %s", type, deviceId)); + } - return Futures.makeChecked(transformed, e -> new DOMRpcImplementationNotAvailableException(e, - "Unable to invoke rpc %s on device %s", type, deviceId)); + }, MoreExecutors.directExecutor()); + return ret; } private static boolean isBaseRpc(final SchemaPath type) { diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/AbstractWriteTx.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/AbstractWriteTx.java index 835b0506ba..1d1c125ff7 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/AbstractWriteTx.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/AbstractWriteTx.java @@ -8,7 +8,6 @@ package org.opendaylight.netconf.sal.connect.netconf.sal.tx; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.collect.Lists; import com.google.common.util.concurrent.FluentFuture; @@ -19,14 +18,15 @@ import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import java.util.Collection; import java.util.List; +import java.util.Optional; import java.util.concurrent.CopyOnWriteArrayList; import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.NetconfDocumentedException; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; @@ -42,7 +42,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public abstract class AbstractWriteTx implements DOMDataWriteTransaction { +public abstract class AbstractWriteTx implements DOMDataTreeWriteTransaction { private static final Logger LOG = LoggerFactory.getLogger(AbstractWriteTx.class); @@ -106,10 +106,9 @@ public abstract class AbstractWriteTx implements DOMDataWriteTransaction { return; } - final DataContainerChild editStructure = - netOps.createEditConfigStrcture(Optional.fromNullable(data), + final DataContainerChild editStructure = netOps.createEditConfigStrcture(Optional.ofNullable(data), Optional.of(ModifyAction.REPLACE), path); - editConfig(path, Optional.fromNullable(data), editStructure, Optional.absent(), "put"); + editConfig(path, Optional.ofNullable(data), editStructure, Optional.empty(), "put"); } @Override @@ -124,10 +123,9 @@ public abstract class AbstractWriteTx implements DOMDataWriteTransaction { return; } - final DataContainerChild editStructure = - netOps.createEditConfigStrcture(Optional.fromNullable(data), - Optional.absent(), path); - editConfig(path, Optional.fromNullable(data), editStructure, Optional.absent(), "merge"); + final DataContainerChild editStructure = netOps.createEditConfigStrcture(Optional.ofNullable(data), + Optional.empty(), path); + editConfig(path, Optional.ofNullable(data), editStructure, Optional.empty(), "merge"); } /** @@ -143,11 +141,9 @@ public abstract class AbstractWriteTx implements DOMDataWriteTransaction { @Override public synchronized void delete(final LogicalDatastoreType store, final YangInstanceIdentifier path) { checkEditable(store); - final DataContainerChild editStructure = - netOps.createEditConfigStrcture(Optional.absent(), + final DataContainerChild editStructure = netOps.createEditConfigStrcture(Optional.empty(), Optional.of(ModifyAction.DELETE), path); - editConfig(path, Optional.absent(), - editStructure, Optional.of(ModifyAction.NONE), "delete"); + editConfig(path, Optional.empty(), editStructure, Optional.of(ModifyAction.NONE), "delete"); } @Override @@ -155,7 +151,7 @@ public abstract class AbstractWriteTx implements DOMDataWriteTransaction { final SettableFuture resultFuture = SettableFuture.create(); Futures.addCallback(commitConfiguration(), new FutureCallback>() { @Override - public void onSuccess(RpcResult result) { + public void onSuccess(final RpcResult result) { if (!result.isSuccessful()) { final Collection errors = result.getErrors(); resultFuture.setException(new TransactionCommitFailedException( @@ -168,7 +164,7 @@ public abstract class AbstractWriteTx implements DOMDataWriteTransaction { } @Override - public void onFailure(Throwable failure) { + public void onFailure(final Throwable failure) { resultFuture.setException(new TransactionCommitFailedException( String.format("Commit of transaction %s failed", getIdentifier()), failure)); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTx.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTx.java index 870e815ee0..ee166ecd0a 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTx.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTx.java @@ -7,15 +7,14 @@ */ package org.opendaylight.netconf.sal.connect.netconf.sal.tx; -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.ListenableFuture; +import com.google.common.util.concurrent.FluentFuture; +import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.MoreExecutors; -import org.opendaylight.controller.md.sal.common.api.MappingCheckedFuture; -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; +import com.google.common.util.concurrent.SettableFuture; +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.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; @@ -24,7 +23,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public final class ReadOnlyTx implements DOMDataReadOnlyTransaction { +public final class ReadOnlyTx implements DOMDataTreeReadTransaction { private static final Logger LOG = LoggerFactory.getLogger(ReadOnlyTx.class); @@ -36,20 +35,34 @@ public final class ReadOnlyTx implements DOMDataReadOnlyTransaction { this.id = id; } - private CheckedFuture>, ReadFailedException> readConfigurationData( + private FluentFuture>> readConfigurationData( final YangInstanceIdentifier path) { - final ListenableFuture>> configRunning = netconfOps.getConfigRunningData( - new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path)); - - return MappingCheckedFuture.create(configRunning, ReadFailedException.MAPPER); + return remapException(netconfOps.getConfigRunningData( + new NetconfRpcFutureCallback("Data read", id), Optional.ofNullable(path))); } - private CheckedFuture>, ReadFailedException> readOperationalData( + private FluentFuture>> readOperationalData( final YangInstanceIdentifier path) { - final ListenableFuture>> configCandidate = netconfOps.getData( - new NetconfRpcFutureCallback("Data read", id), Optional.fromNullable(path)); + return remapException(netconfOps.getData( + new NetconfRpcFutureCallback("Data read", id), Optional.ofNullable(path))); + } + + private static FluentFuture remapException(FluentFuture input) { + final SettableFuture ret = SettableFuture.create(); + input.addCallback(new FutureCallback() { - return MappingCheckedFuture.create(configCandidate, ReadFailedException.MAPPER); + @Override + public void onSuccess(T result) { + ret.set(result); + } + + @Override + public void onFailure(Throwable cause) { + ret.setException(cause instanceof ReadFailedException ? cause + : new ReadFailedException("NETCONF operation failed", cause)); + } + }, MoreExecutors.directExecutor()); + return ret; } @Override @@ -58,8 +71,8 @@ public final class ReadOnlyTx implements DOMDataReadOnlyTransaction { } @Override - public CheckedFuture>, ReadFailedException> read( - final LogicalDatastoreType store, final YangInstanceIdentifier path) { + public FluentFuture>> read(final LogicalDatastoreType store, + final YangInstanceIdentifier path) { switch (store) { case CONFIGURATION: return readConfigurationData(path); @@ -70,15 +83,12 @@ public final class ReadOnlyTx implements DOMDataReadOnlyTransaction { throw new IllegalArgumentException(String.format( "%s, Cannot read data %s for %s datastore, unknown datastore type", id, path, store)); } - } @Override - public CheckedFuture exists(final LogicalDatastoreType store, - final YangInstanceIdentifier path) { - final ListenableFuture result = Futures.transform(read(store, path), - optionalNode -> optionalNode != null && optionalNode.isPresent(), MoreExecutors.directExecutor()); - return MappingCheckedFuture.create(result, ReadFailedException.MAPPER); + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { + return read(store, path).transform(optionalNode -> optionalNode != null && optionalNode.isPresent(), + MoreExecutors.directExecutor()); } @Override diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTx.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTx.java index 893b85991f..bf98c56e47 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTx.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTx.java @@ -8,25 +8,24 @@ package org.opendaylight.netconf.sal.connect.netconf.sal.tx; -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.eclipse.jdt.annotation.NonNull; -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.DOMDataReadTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; 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.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -public class ReadWriteTx implements DOMDataReadWriteTransaction { +public class ReadWriteTx implements DOMDataTreeReadWriteTransaction { - private final DOMDataReadTransaction delegateReadTx; - private final DOMDataWriteTransaction delegateWriteTx; + private final DOMDataTreeReadTransaction delegateReadTx; + private final DOMDataTreeWriteTransaction delegateWriteTx; - public ReadWriteTx(final DOMDataReadTransaction delegateReadTx, final DOMDataWriteTransaction delegateWriteTx) { + public ReadWriteTx(final DOMDataTreeReadTransaction delegateReadTx, + final DOMDataTreeWriteTransaction delegateWriteTx) { this.delegateReadTx = delegateReadTx; this.delegateWriteTx = delegateWriteTx; } @@ -36,6 +35,11 @@ public class ReadWriteTx implements DOMDataReadWriteTransaction { return delegateWriteTx.cancel(); } + @Override + public void close() { + cancel(); + } + @Override public void put(final LogicalDatastoreType store, final YangInstanceIdentifier path, final NormalizedNode data) { @@ -54,19 +58,18 @@ public class ReadWriteTx implements DOMDataReadWriteTransaction { } @Override - public @NonNull FluentFuture commit() { + public FluentFuture commit() { return delegateWriteTx.commit(); } @Override - public CheckedFuture>, ReadFailedException> read( - final LogicalDatastoreType store, final YangInstanceIdentifier path) { + public FluentFuture>> read(final LogicalDatastoreType store, + final YangInstanceIdentifier path) { return delegateReadTx.read(store, path); } - @Override public CheckedFuture exists( - final LogicalDatastoreType store, - final YangInstanceIdentifier path) { + @Override + public FluentFuture exists(final LogicalDatastoreType store, final YangInstanceIdentifier path) { return delegateReadTx.exists(store, path); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChain.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChain.java index 2547d7013c..482552adf5 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChain.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChain.java @@ -5,19 +5,18 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import com.google.common.base.Preconditions; import java.util.HashMap; import java.util.Map; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +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.DOMTransactionChainClosedException; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,11 +28,11 @@ public class TxChain implements DOMTransactionChain, TxListener { private static final Logger LOG = LoggerFactory.getLogger(TxChain.class); private final DOMDataBroker dataBroker; - private final TransactionChainListener listener; + private final DOMTransactionChainListener listener; /** * Submitted transactions that haven't completed yet. */ - private final Map pendingTransactions = new HashMap<>(); + private final Map pendingTransactions = new HashMap<>(); /** * Transaction created by this chain that hasn't been submitted or cancelled yet. @@ -42,13 +41,13 @@ public class TxChain implements DOMTransactionChain, TxListener { private boolean closed = false; private boolean successful = true; - public TxChain(final DOMDataBroker dataBroker, final TransactionChainListener listener) { + public TxChain(final DOMDataBroker dataBroker, final DOMTransactionChainListener listener) { this.dataBroker = dataBroker; this.listener = listener; } @Override - public synchronized DOMDataReadOnlyTransaction newReadOnlyTransaction() { + public synchronized DOMDataTreeReadTransaction newReadOnlyTransaction() { checkOperationPermitted(); return dataBroker.newReadOnlyTransaction(); } @@ -56,7 +55,7 @@ public class TxChain implements DOMTransactionChain, TxListener { @Override public synchronized AbstractWriteTx newWriteOnlyTransaction() { checkOperationPermitted(); - final DOMDataWriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction(); + final DOMDataTreeWriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction(); Preconditions.checkState(writeTransaction instanceof AbstractWriteTx); final AbstractWriteTx pendingWriteTx = (AbstractWriteTx) writeTransaction; pendingTransactions.put(pendingWriteTx, pendingWriteTx.addListener(this)); @@ -65,7 +64,7 @@ public class TxChain implements DOMTransactionChain, TxListener { } @Override - public synchronized DOMDataReadWriteTransaction newReadWriteTransaction() { + public synchronized DOMDataTreeReadWriteTransaction newReadWriteTransaction() { return new ReadWriteTx(dataBroker.newReadOnlyTransaction(), newWriteOnlyTransaction()); } @@ -118,7 +117,7 @@ public class TxChain implements DOMTransactionChain, TxListener { */ private void checkOperationPermitted() { if (closed) { - throw new TransactionChainClosedException("Transaction chain was closed"); + throw new DOMTransactionChainClosedException("Transaction chain was closed"); } Preconditions.checkState(currentTransaction == null, "Last write transaction has not finished yet"); } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTx.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTx.java index 23652e767b..f99e765436 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTx.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTx.java @@ -8,14 +8,14 @@ package org.opendaylight.netconf.sal.connect.netconf.sal.tx; -import com.google.common.base.Optional; 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.Optional; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTx.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTx.java index f843340b25..c9809e0262 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTx.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTx.java @@ -5,14 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; -import com.google.common.base.Optional; import com.google.common.util.concurrent.ListenableFuture; import java.util.ArrayList; import java.util.List; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import java.util.Optional; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfRpcFutureCallback; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java index 18953a34e7..4098eed230 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProvider.java @@ -21,7 +21,7 @@ import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.util.Optional; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.rev101004.Yang; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformer.java index b4d27f0b0c..bd5f3b75f6 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformer.java @@ -13,9 +13,9 @@ import java.util.Map; import javax.xml.stream.XMLStreamException; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlElement; import org.opendaylight.netconf.api.xml.XmlUtil; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java index 2bd1ce4b4a..0df0e1aa74 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformer.java @@ -20,22 +20,21 @@ import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; import java.io.IOException; import java.net.URISyntaxException; +import java.time.Instant; import java.util.Collection; import java.util.Collections; -import java.util.Date; import java.util.Map; import java.util.Set; -import javax.annotation.Nonnull; import javax.xml.parsers.ParserConfigurationException; import javax.xml.stream.XMLStreamException; import javax.xml.transform.dom.DOMResult; import javax.xml.transform.dom.DOMSource; -import org.opendaylight.controller.md.sal.dom.api.DOMEvent; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.mdsal.dom.api.DOMActionResult; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; +import org.opendaylight.mdsal.dom.api.DOMEvent; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.mdsal.dom.spi.SimpleDOMActionResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.MissingNameSpaceException; @@ -110,7 +109,7 @@ public class NetconfMessageTransformer implements MessageTransformer builder) { + private void findAction(final DataSchemaNode dataSchemaNode, final Builder builder) { if (dataSchemaNode instanceof ActionNodeContainer) { final ActionNodeContainer containerSchemaNode = (ActionNodeContainer) dataSchemaNode; for (ActionDefinition actionDefinition : containerSchemaNode.getActions()) { @@ -126,7 +125,7 @@ public class NetconfMessageTransformer implements MessageTransformer stripped = NetconfMessageTransformUtil.stripNotification(message); + final Map.Entry stripped = NetconfMessageTransformUtil.stripNotification(message); final QName notificationNoRev; try { notificationNoRev = QName.create( @@ -212,7 +211,7 @@ public class NetconfMessageTransformer implements MessageTransformer payload) { ActionDefinition actionDefinition = null; SchemaPath schemaPath = action; @@ -307,7 +306,7 @@ public class NetconfMessageTransformer implements MessageTransformer stripped = NetconfMessageTransformUtil.stripNotification(message); + final Map.Entry stripped = NetconfMessageTransformUtil.stripNotification(message); final QName notificationNoRev; try { notificationNoRev = diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOps.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOps.java index 0b70f4635a..391c8921e0 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOps.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOps.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.util; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.EDIT_CONTENT_NODEID; @@ -33,15 +32,14 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toFilterStructure; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toId; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.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 org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import java.util.Optional; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.sal.KeepaliveSalFacade.KeepaliveDOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.sal.SchemalessNetconfDeviceRpc; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.base._1._0.rev110601.copy.config.input.target.ConfigTarget; @@ -83,110 +81,110 @@ public final class NetconfBaseOps { } } - public ListenableFuture lock(final FutureCallback callback, final QName datastore) { + public FluentFuture lock(final FutureCallback callback, final QName datastore) { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(datastore); - final ListenableFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(datastore)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + final FluentFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(datastore)); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture lockCandidate(final FutureCallback callback) { - final ListenableFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, + public FluentFuture lockCandidate(final FutureCallback callback) { + final FluentFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(NETCONF_CANDIDATE_QNAME)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture lockRunning(final FutureCallback callback) { - final ListenableFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, + public FluentFuture lockRunning(final FutureCallback callback) { + final FluentFuture future = rpc.invokeRpc(NETCONF_LOCK_PATH, getLockContent(NETCONF_RUNNING_QNAME)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture unlock(final FutureCallback callback, final QName datastore) { + public FluentFuture unlock(final FutureCallback callback, final QName datastore) { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(datastore); - final ListenableFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(datastore)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + final FluentFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(datastore)); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture unlockRunning(final FutureCallback callback) { - final ListenableFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, + public FluentFuture unlockRunning(final FutureCallback callback) { + final FluentFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(NETCONF_RUNNING_QNAME)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture unlockCandidate(final FutureCallback callback) { - final ListenableFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, + public FluentFuture unlockCandidate(final FutureCallback callback) { + final FluentFuture future = rpc.invokeRpc(NETCONF_UNLOCK_PATH, getUnLockContent(NETCONF_CANDIDATE_QNAME)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture discardChanges(final FutureCallback callback) { + public FluentFuture discardChanges(final FutureCallback callback) { Preconditions.checkNotNull(callback); - final ListenableFuture future = rpc.invokeRpc(NETCONF_DISCARD_CHANGES_PATH, null); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + final FluentFuture future = rpc.invokeRpc(NETCONF_DISCARD_CHANGES_PATH, null); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture commit(final FutureCallback callback) { + public FluentFuture commit(final FutureCallback callback) { Preconditions.checkNotNull(callback); - final ListenableFuture future = rpc.invokeRpc( - NetconfMessageTransformUtil.NETCONF_COMMIT_PATH, NetconfMessageTransformUtil.COMMIT_RPC_CONTENT); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + final FluentFuture future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_COMMIT_PATH, + NetconfMessageTransformUtil.COMMIT_RPC_CONTENT); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture validate(final FutureCallback callback, final QName datastore) { + public FluentFuture validate(final FutureCallback callback, final QName datastore) { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(datastore); - final ListenableFuture future = rpc.invokeRpc( - NetconfMessageTransformUtil.NETCONF_VALIDATE_PATH, getValidateContent(datastore)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + final FluentFuture future = rpc.invokeRpc(NetconfMessageTransformUtil.NETCONF_VALIDATE_PATH, + getValidateContent(datastore)); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture validateCandidate(final FutureCallback callback) { + public FluentFuture validateCandidate(final FutureCallback callback) { return validate(callback, NETCONF_CANDIDATE_QNAME); } - public ListenableFuture validateRunning(final FutureCallback callback) { + public FluentFuture validateRunning(final FutureCallback callback) { return validate(callback, NETCONF_RUNNING_QNAME); } - public ListenableFuture copyConfig(final FutureCallback callback, + public FluentFuture copyConfig(final FutureCallback callback, final QName source, final QName target) { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(source); Preconditions.checkNotNull(target); - final ListenableFuture future = rpc.invokeRpc(NETCONF_COPY_CONFIG_PATH, + final FluentFuture future = rpc.invokeRpc(NETCONF_COPY_CONFIG_PATH, getCopyConfigContent(source, target)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture copyRunningToCandidate(final FutureCallback callback) { + public FluentFuture copyRunningToCandidate(final FutureCallback callback) { return copyConfig(callback, NETCONF_RUNNING_QNAME, NETCONF_CANDIDATE_QNAME); } - public ListenableFuture getConfig(final FutureCallback callback, final QName datastore, + public FluentFuture getConfig(final FutureCallback callback, final QName datastore, final Optional filterPath) { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(datastore); - final ListenableFuture future; + final FluentFuture future; if (isFilterPresent(filterPath)) { final DataContainerChild node = transformer.toFilterStructure(filterPath.get()); future = rpc.invokeRpc(NETCONF_GET_CONFIG_PATH, @@ -196,27 +194,27 @@ public final class NetconfBaseOps { NetconfMessageTransformUtil.wrap(NETCONF_GET_CONFIG_NODEID, getSourceNode(datastore))); } - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } - public ListenableFuture>> getConfigRunningData( + public FluentFuture>> getConfigRunningData( final FutureCallback callback, final Optional filterPath) { - final ListenableFuture configRunning = getConfigRunning(callback, filterPath); + final FluentFuture configRunning = getConfigRunning(callback, filterPath); return extractData(filterPath, configRunning); } - public ListenableFuture>> getData(final FutureCallback callback, + public FluentFuture>> getData(final FutureCallback callback, final Optional filterPath) { - final ListenableFuture configRunning = get(callback, filterPath); + final FluentFuture configRunning = get(callback, filterPath); return extractData(filterPath, configRunning); } - private ListenableFuture>> extractData( - final Optional path, final ListenableFuture configRunning) { - return Futures.transform(configRunning, result -> { - Preconditions.checkArgument( - result.getErrors().isEmpty(), "Unable to read data: %s, errors: %s", path, result.getErrors()); + private FluentFuture>> extractData( + final Optional path, final FluentFuture configRunning) { + return configRunning.transform(result -> { + Preconditions.checkArgument(result.getErrors().isEmpty(), "Unable to read data: %s, errors: %s", path, + result.getErrors()); final DataContainerChild dataNode = ((ContainerNode) result.getResult()).getChild(NetconfMessageTransformUtil.NETCONF_DATA_NODEID) .get(); @@ -224,24 +222,24 @@ public final class NetconfBaseOps { }, MoreExecutors.directExecutor()); } - public ListenableFuture getConfigRunning(final FutureCallback callback, + public FluentFuture getConfigRunning(final FutureCallback callback, final Optional filterPath) { return getConfig(callback, NETCONF_RUNNING_QNAME, filterPath); } - public ListenableFuture getConfigCandidate(final FutureCallback callback, + public FluentFuture getConfigCandidate(final FutureCallback callback, final Optional filterPath) { return getConfig(callback, NETCONF_CANDIDATE_QNAME, filterPath); } - public ListenableFuture get(final FutureCallback callback, + public FluentFuture get(final FutureCallback callback, final Optional filterPath) { Preconditions.checkNotNull(callback); - final ListenableFuture future = rpc.invokeRpc(NETCONF_GET_PATH, isFilterPresent(filterPath) + final FluentFuture future = rpc.invokeRpc(NETCONF_GET_PATH, isFilterPresent(filterPath) ? NetconfMessageTransformUtil.wrap(NETCONF_GET_NODEID, toFilterStructure(filterPath.get(), schemaContext)) : NetconfMessageTransformUtil.GET_RPC_CONTENT); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } @@ -249,31 +247,31 @@ public final class NetconfBaseOps { return filterPath.isPresent() && !filterPath.get().isEmpty(); } - public ListenableFuture editConfigCandidate(final FutureCallback callback, + public FluentFuture editConfigCandidate(final FutureCallback callback, final DataContainerChild editStructure, final ModifyAction modifyAction, final boolean rollback) { return editConfig(callback, NETCONF_CANDIDATE_QNAME, editStructure, Optional.of(modifyAction), rollback); } - public ListenableFuture editConfigCandidate(final FutureCallback callback, + public FluentFuture editConfigCandidate(final FutureCallback callback, final DataContainerChild editStructure, final boolean rollback) { - return editConfig(callback, NETCONF_CANDIDATE_QNAME, editStructure, Optional.absent(), rollback); + return editConfig(callback, NETCONF_CANDIDATE_QNAME, editStructure, Optional.empty(), rollback); } - public ListenableFuture editConfigRunning(final FutureCallback callback, + public FluentFuture editConfigRunning(final FutureCallback callback, final DataContainerChild editStructure, final ModifyAction modifyAction, final boolean rollback) { return editConfig(callback, NETCONF_RUNNING_QNAME, editStructure, Optional.of(modifyAction), rollback); } - public ListenableFuture editConfigRunning(final FutureCallback callback, + public FluentFuture editConfigRunning(final FutureCallback callback, final DataContainerChild editStructure, final boolean rollback) { - return editConfig(callback, NETCONF_RUNNING_QNAME, editStructure, Optional.absent(), rollback); + return editConfig(callback, NETCONF_RUNNING_QNAME, editStructure, Optional.empty(), rollback); } - public ListenableFuture editConfig( + public FluentFuture editConfig( final FutureCallback callback, final QName datastore, final DataContainerChild editStructure, final Optional modifyAction, final boolean rollback) { @@ -281,10 +279,10 @@ public final class NetconfBaseOps { Preconditions.checkNotNull(callback); Preconditions.checkNotNull(datastore); - final ListenableFuture future = rpc.invokeRpc(NETCONF_EDIT_CONFIG_PATH, + final FluentFuture future = rpc.invokeRpc(NETCONF_EDIT_CONFIG_PATH, getEditConfigContent(datastore, editStructure, modifyAction, rollback)); - Futures.addCallback(future, callback, MoreExecutors.directExecutor()); + future.addCallback(callback, MoreExecutors.directExecutor()); return future; } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfMessageTransformUtil.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfMessageTransformUtil.java index d1ed75bb0f..ef4c254bdc 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfMessageTransformUtil.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfMessageTransformUtil.java @@ -13,10 +13,11 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import java.io.IOException; import java.net.URI; +import java.time.Instant; import java.time.format.DateTimeParseException; import java.util.AbstractMap; +import java.util.AbstractMap.SimpleEntry; import java.util.Collection; -import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -336,8 +337,9 @@ public final class NetconfMessageTransformUtil { } public static AnyXmlNode createEditConfigAnyxml( - final SchemaContext ctx, final YangInstanceIdentifier dataPath, final Optional operation, - final Optional> lastChildOverride) { + final SchemaContext ctx, final YangInstanceIdentifier dataPath, + final java.util.Optional operation, + final java.util.Optional> lastChildOverride) { final NormalizedNode configContent; if (dataPath.isEmpty()) { @@ -350,7 +352,7 @@ public final class NetconfMessageTransformUtil { } else { final Entry modifyOperation = operation.isPresent() ? new AbstractMap.SimpleEntry<>(NETCONF_OPERATION_QNAME, operation.get()) : null; - configContent = ImmutableNodes.fromInstanceId(ctx, dataPath, lastChildOverride.toJavaUtil(), + configContent = ImmutableNodes.fromInstanceId(ctx, dataPath, lastChildOverride, java.util.Optional.ofNullable(modifyOperation)); } @@ -366,9 +368,9 @@ public final class NetconfMessageTransformUtil { .build(); } - public static DataContainerChild createEditConfigStructure( - final SchemaContext ctx, final YangInstanceIdentifier dataPath, final Optional operation, - final Optional> lastChildOverride) { + public static DataContainerChild createEditConfigStructure(final SchemaContext ctx, + final YangInstanceIdentifier dataPath, final java.util.Optional operation, + final java.util.Optional> lastChildOverride) { return Builders.choiceBuilder().withNodeIdentifier(EDIT_CONTENT_NODEID) .withChild(createEditConfigAnyxml(ctx, dataPath, operation, lastChildOverride)).build(); } @@ -377,7 +379,7 @@ public final class NetconfMessageTransformUtil { return SchemaPath.ROOT.createChild(rpc); } - public static Map.Entry stripNotification(final NetconfMessage message) { + public static Map.Entry stripNotification(final NetconfMessage message) { final XmlElement xmlElement = XmlElement.fromDomDocument(message.getDocument()); final List childElements = xmlElement.getChildElements(); Preconditions.checkArgument(childElements.size() == 2, "Unable to parse notification %s, unexpected format." @@ -397,8 +399,8 @@ public final class NetconfMessageTransformUtil { } try { - return new AbstractMap.SimpleEntry<>( - NetconfNotification.RFC3339_DATE_PARSER.apply(eventTimeElement.getTextContent()), + return new SimpleEntry<>( + NetconfNotification.RFC3339_DATE_PARSER.apply(eventTimeElement.getTextContent()).toInstant(), notificationElement); } catch (final DocumentedException e) { throw new IllegalArgumentException("Notification payload does not contain " + EVENT_TIME + " " + message, @@ -406,7 +408,8 @@ public final class NetconfMessageTransformUtil { } catch (final DateTimeParseException e) { LOG.warn("Unable to parse event time from {}. Setting time to {}", eventTimeElement, NetconfNotification.UNKNOWN_EVENT_TIME, e); - return new AbstractMap.SimpleEntry<>(NetconfNotification.UNKNOWN_EVENT_TIME, notificationElement); + return new SimpleEntry<>(NetconfNotification.UNKNOWN_EVENT_TIME.toInstant(), + notificationElement); } } diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcFutureCallback.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcFutureCallback.java index 7e45856e5b..3259e9d004 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcFutureCallback.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcFutureCallback.java @@ -5,12 +5,11 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.util; import com.google.common.util.concurrent.FutureCallback; import javax.annotation.Nonnull; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java index 47e6d9eba2..c71a57370a 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfRpcStructureTransformer.java @@ -7,7 +7,7 @@ */ package org.opendaylight.netconf.sal.connect.netconf.util; -import com.google.common.base.Optional; +import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.ModifyAction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode; @@ -31,7 +31,7 @@ class NetconfRpcStructureTransformer implements RpcStructureTransformer { public Optional> selectFromDataStructure( final DataContainerChild data, final YangInstanceIdentifier path) { - return Optional.fromJavaUtil(NormalizedNodes.findNode(data, path.getPathArguments())); + return NormalizedNodes.findNode(data, path.getPathArguments()); } @Override diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/RpcStructureTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/RpcStructureTransformer.java index 90e9c8b06e..7f15604395 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/RpcStructureTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/RpcStructureTransformer.java @@ -7,7 +7,7 @@ */ package org.opendaylight.netconf.sal.connect.netconf.util; -import com.google.common.base.Optional; +import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.ModifyAction; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformer.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformer.java index 429cdf52ec..e509fe5389 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformer.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformer.java @@ -12,13 +12,13 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_DATA_NODEID; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_DATA_QNAME; -import com.google.common.base.Optional; import com.google.common.base.Preconditions; import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Map.Entry; +import java.util.Optional; import javax.xml.transform.dom.DOMSource; import org.opendaylight.netconf.api.DocumentedException; import org.opendaylight.netconf.api.xml.XmlElement; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfSalKeystoreService.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfSalKeystoreService.java index b625d749c7..55b72d3a68 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfSalKeystoreService.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfSalKeystoreService.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.util; import com.google.common.util.concurrent.FutureCallback; @@ -16,10 +15,10 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; import org.opendaylight.aaa.encrypt.AAAEncryptionService; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.AddKeystoreEntryInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.AddKeystoreEntryOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.AddKeystoreEntryOutputBuilder; diff --git a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfTopologyRPCProvider.java b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfTopologyRPCProvider.java index 3609e8cf22..6499f54dd0 100644 --- a/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfTopologyRPCProvider.java +++ b/netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/util/NetconfTopologyRPCProvider.java @@ -14,10 +14,10 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.SettableFuture; import org.opendaylight.aaa.encrypt.AAAEncryptionService; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.CreateDeviceInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.CreateDeviceOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.CreateDeviceOutputBuilder; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDeviceTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDeviceTest.java index 47e38a7a2d..e5f2830d12 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDeviceTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDeviceTest.java @@ -40,11 +40,11 @@ import java.util.concurrent.Executors; import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.dom.api.DOMActionService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMActionService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.netconf.api.xml.XmlUtil; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java index 7a744692ae..e8cf38e1ff 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfStateSchemasTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf; import static org.hamcrest.CoreMatchers.hasItem; @@ -17,9 +16,10 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.NETCONF_GET_QNAME; import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toPath; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFailedFluentFuture; +import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.ListenableFuture; import java.net.InetSocketAddress; import java.util.Collections; @@ -33,12 +33,10 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcImplementationNotAvailableException; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseSchema; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; @@ -122,7 +120,7 @@ public class NetconfStateSchemasTest { .withChild(data) .build(); when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())) - .thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcReply))); + .thenReturn(immediateFluentFuture(new DefaultDOMRpcResult(rpcReply))); final NetconfStateSchemas stateSchemas = NetconfStateSchemas.create(rpc, CAPS, deviceId); final Set availableYangSchemasQNames = stateSchemas.getAvailableYangSchemasQNames(); assertEquals(numberOfLegalSchemas, availableYangSchemasQNames.size()); @@ -141,9 +139,8 @@ public class NetconfStateSchemasTest { @Test public void testCreateFail() throws Exception { - final CheckedFuture resultFuture = - Futures.immediateFailedCheckedFuture(new DOMRpcImplementationNotAvailableException("not available")); - when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn(resultFuture); + when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn( + immediateFailedFluentFuture(new DOMRpcImplementationNotAvailableException("not available"))); final NetconfStateSchemas stateSchemas = NetconfStateSchemas.create(rpc, CAPS, deviceId); final Set availableYangSchemasQNames = stateSchemas.getAvailableYangSchemasQNames(); Assert.assertTrue(availableYangSchemasQNames.isEmpty()); @@ -153,7 +150,7 @@ public class NetconfStateSchemasTest { public void testCreateRpcError() throws Exception { final RpcError rpcError = RpcResultBuilder.newError(RpcError.ErrorType.RPC, "fail", "fail"); when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())) - .thenReturn(Futures.immediateCheckedFuture(new DefaultDOMRpcResult(rpcError))); + .thenReturn(immediateFluentFuture(new DefaultDOMRpcResult(rpcError))); final NetconfStateSchemas stateSchemas = NetconfStateSchemas.create(rpc, CAPS, deviceId); final Set availableYangSchemasQNames = stateSchemas.getAvailableYangSchemasQNames(); Assert.assertTrue(availableYangSchemasQNames.isEmpty()); @@ -164,11 +161,11 @@ public class NetconfStateSchemasTest { public void testCreateInterrupted() throws Throwable { //NetconfStateSchemas.create calls Thread.currentThread().interrupt(), so it must run in its own thread final Future testFuture = Executors.newSingleThreadExecutor().submit(() -> { - final ListenableFuture interruptedFuture = mock(ListenableFuture.class); + final ListenableFuture interruptedFuture = mock(ListenableFuture.class); try { when(interruptedFuture.get()).thenThrow(new InterruptedException("interrupted")); - final CheckedFuture checkedFuture = Futures.makeChecked(interruptedFuture, ReadFailedException.MAPPER); - when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn(checkedFuture); + when(rpc.invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any())).thenReturn( + FluentFuture.from(interruptedFuture)); NetconfStateSchemas.create(rpc, CAPS, deviceId); } catch (final InterruptedException | ExecutionException e) { LOG.info("Operation failed.", e); diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfToNotificationTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfToNotificationTest.java index d9525a07f3..b03b66c631 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfToNotificationTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/NetconfToNotificationTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf; import static org.junit.Assert.assertEquals; @@ -17,8 +16,8 @@ import java.io.InputStream; import java.util.Set; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.dom.api.DOMEvent; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMEvent; +import org.opendaylight.mdsal.dom.api.DOMNotification; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.notifications.NetconfNotification; @@ -77,7 +76,7 @@ public class NetconfToNotificationTest { assertNotNull(root); assertEquals(6, Iterables.size(root.getValue())); assertEquals("user-visited-page", root.getNodeType().getLocalName()); - assertEquals(NetconfNotification.RFC3339_DATE_PARSER.apply("2015-10-23T09:42:27.67175+00:00"), - ((DOMEvent) domNotification).getEventTime()); + assertEquals(NetconfNotification.RFC3339_DATE_PARSER.apply("2015-10-23T09:42:27.67175+00:00").toInstant(), + ((DOMEvent) domNotification).getEventInstant()); } } diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDeviceTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDeviceTest.java index 3466294510..0b719f823b 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDeviceTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/SchemalessNetconfDeviceTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf; import static org.mockito.ArgumentMatchers.any; @@ -20,8 +19,8 @@ import java.util.ArrayList; import java.util.Collection; import org.junit.Test; import org.mockito.Mockito; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlNetconfConstants; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java index 316cac37f3..ef2ae71c3c 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/KeepaliveSalFacadeTest.java @@ -28,9 +28,9 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceHandler; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCommunicator; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/MountInstanceTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/MountInstanceTest.java index b990dd68f4..0d65125d25 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/MountInstanceTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/MountInstanceTest.java @@ -19,13 +19,13 @@ import org.junit.BeforeClass; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPoint; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationService; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMMountPoint; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.concepts.ObjectRegistration; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java index dbab02f545..60a7b3b711 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceDataBrokerTest.java @@ -15,7 +15,6 @@ import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTr import static org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil.toPath; import com.google.common.collect.Lists; -import com.google.common.util.concurrent.Futures; import java.net.InetSocketAddress; import java.util.Arrays; import org.junit.Assert; @@ -23,13 +22,13 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadWriteTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadWriteTransaction; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.AbstractWriteTx; import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteCandidateRunningTx; @@ -38,6 +37,7 @@ import org.opendaylight.netconf.sal.connect.netconf.sal.tx.WriteRunningTx; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.monitoring.extension.rev131210.$YangModuleInfoImpl; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -61,21 +61,21 @@ public class NetconfDeviceDataBrokerTest { schemaContext = moduleInfoBackedContext.tryToCreateSchemaContext().get(); DOMRpcResult result = new DefaultDOMRpcResult(); when(rpcService.invokeRpc(any(SchemaPath.class), any(NormalizedNode.class))) - .thenReturn(Futures.immediateCheckedFuture(result)); + .thenReturn(FluentFutures.immediateFluentFuture(result)); dataBroker = getDataBroker(NetconfMessageTransformUtil.NETCONF_CANDIDATE_URI.toString()); } @Test public void testNewReadOnlyTransaction() throws Exception { - final DOMDataReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction(); + final DOMDataTreeReadTransaction tx = dataBroker.newReadOnlyTransaction(); tx.read(LogicalDatastoreType.OPERATIONAL, null); verify(rpcService).invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any(ContainerNode.class)); } @Test public void testNewReadWriteTransaction() throws Exception { - final DOMDataReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); + final DOMDataTreeReadWriteTransaction tx = dataBroker.newReadWriteTransaction(); tx.read(LogicalDatastoreType.OPERATIONAL, null); verify(rpcService).invokeRpc(eq(toPath(NETCONF_GET_QNAME)), any(ContainerNode.class)); } @@ -97,12 +97,13 @@ public class NetconfDeviceDataBrokerTest { testWriteTransaction(WriteRunningTx.class, NetconfMessageTransformUtil.NETCONF_RUNNING_WRITABLE_URI.toString()); } - private void testWriteTransaction(Class transaction, String... capabilities) { + private void testWriteTransaction(final Class transaction, + final String... capabilities) { NetconfDeviceDataBroker db = getDataBroker(capabilities); Assert.assertEquals(transaction, db.newWriteOnlyTransaction().getClass()); } - private NetconfDeviceDataBroker getDataBroker(String... caps) { + private NetconfDeviceDataBroker getDataBroker(final String... caps) { NetconfSessionPreferences prefs = NetconfSessionPreferences.fromStrings(Arrays.asList(caps)); final RemoteDeviceId id = new RemoteDeviceId("device-1", InetSocketAddress.createUnresolved("localhost", 17830)); diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationServiceTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationServiceTest.java index 2324bceb87..94694b42a1 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationServiceTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceNotificationServiceTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal; import static org.mockito.Mockito.doReturn; @@ -19,8 +18,8 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMNotificationListener; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMNotificationListener; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java index 2fff64bf0f..8dc629e8fc 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceRpcTest.java @@ -11,7 +11,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.verify; -import com.google.common.util.concurrent.CheckedFuture; +import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.Futures; import java.util.Collection; import java.util.Collections; @@ -22,11 +22,10 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcAvailabilityListener; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; +import org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener; +import org.opendaylight.mdsal.dom.api.DOMRpcIdentifier; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.api.RemoteDeviceCommunicator; @@ -79,8 +78,8 @@ 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 CheckedFuture future = rpc.invokeRpc(path, input); - final DOMRpcResult result = future.checkedGet(); + final FluentFuture future = rpc.invokeRpc(path, input); + final DOMRpcResult result = future.get(); Assert.assertEquals(expectedReply, result); } @@ -101,7 +100,7 @@ public class NetconfDeviceRpcTest { } } - private static ContainerNode createNode(String namespace, String date, String localName) { + private static ContainerNode createNode(final String namespace, final String date, final String localName) { return Builders.containerBuilder().withNodeIdentifier( new YangInstanceIdentifier.NodeIdentifier(QName.create(namespace, date, localName))).build(); } diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacadeTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacadeTest.java index d93e24e158..7ff31fbd9e 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacadeTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalFacadeTest.java @@ -24,9 +24,9 @@ import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfSessionPreferences; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProviderTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProviderTest.java index 6cadc6fa26..cfc5274829 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProviderTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceSalProviderTest.java @@ -22,12 +22,12 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMMountPointService; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChainListener; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMMountPointService; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; public class NetconfDeviceSalProviderTest { @@ -39,7 +39,7 @@ public class NetconfDeviceSalProviderTest { @Mock private DataBroker dataBroker; @Mock - private BindingTransactionChain chain; + private TransactionChain chain; @Mock private DOMMountPointService mountPointService; @Mock diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapterTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapterTest.java index 7461a14849..1c5f6428fb 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapterTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfDeviceTopologyAdapterTest.java @@ -15,24 +15,23 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.opendaylight.mdsal.common.api.CommitInfo.emptyFluentFuture; -import com.google.common.base.Optional; import java.net.InetSocketAddress; +import java.util.Optional; import java.util.concurrent.TimeUnit; import org.awaitility.Awaitility; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.BindingTransactionChain; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.binding.test.ConcurrentDataBrokerTestCustomizer; -import org.opendaylight.controller.md.sal.common.api.data.AsyncTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChain; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.Transaction; +import org.opendaylight.mdsal.binding.api.TransactionChain; +import org.opendaylight.mdsal.binding.api.TransactionChainListener; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.binding.dom.adapter.test.ConcurrentDataBrokerTestCustomizer; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.netconf.sal.connect.netconf.listener.NetconfDeviceCapabilities; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode; @@ -55,7 +54,7 @@ public class NetconfDeviceTopologyAdapterTest { @Mock private WriteTransaction writeTx; @Mock - private BindingTransactionChain txChain; + private TransactionChain txChain; @Mock private NetconfNode data; @@ -64,7 +63,7 @@ public class NetconfDeviceTopologyAdapterTest { private SchemaContext schemaContext = null; private final String sessionIdForReporting = "netconf-test-session1"; - private BindingTransactionChain transactionChain; + private TransactionChain transactionChain; private DataBroker dataBroker; @@ -94,13 +93,13 @@ public class NetconfDeviceTopologyAdapterTest { transactionChain = dataBroker.createTransactionChain(new TransactionChainListener() { @Override - public void onTransactionChainFailed(final TransactionChain chain, - final AsyncTransaction transaction, final Throwable cause) { + public void onTransactionChainFailed(final TransactionChain chain, final Transaction transaction, + final Throwable cause) { } @Override - public void onTransactionChainSuccessful(final TransactionChain chain) { + public void onTransactionChainSuccessful(final TransactionChain chain) { } }); @@ -125,7 +124,7 @@ public class NetconfDeviceTopologyAdapterTest { Awaitility.await().atMost(5, TimeUnit.SECONDS).until(() -> { Optional netconfNode = dataBroker.newReadWriteTransaction() .read(LogicalDatastoreType.OPERATIONAL, id.getTopologyBindingPath().augmentation(NetconfNode.class)) - .checkedGet(5, TimeUnit.SECONDS); + .get(5, TimeUnit.SECONDS); return netconfNode.isPresent() && netconfNode.get().getConnectionStatus() == NetconfNodeConnectionStatus.ConnectionStatus.UnableToConnect; }); @@ -165,7 +164,7 @@ public class NetconfDeviceTopologyAdapterTest { NormalizedNode augmentNode = ImmutableLeafNodeBuilder.create().withValue(dataTestId) .withNodeIdentifier(new YangInstanceIdentifier.NodeIdentifier(netconfTestLeafQname)).build(); - DOMDataWriteTransaction wtx = domDataBroker.newWriteOnlyTransaction(); + DOMDataTreeWriteTransaction wtx = domDataBroker.newWriteOnlyTransaction(); wtx.put(LogicalDatastoreType.OPERATIONAL, pathToAugmentedLeaf, augmentNode); wtx.commit().get(5, TimeUnit.SECONDS); diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapterTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapterTest.java index 97bd9d905c..6cd05413d6 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapterTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/NetconfKeystoreAdapterTest.java @@ -22,10 +22,10 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.DataObjectModification; -import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; -import org.opendaylight.controller.md.sal.binding.api.DataTreeModification; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataObjectModification; +import org.opendaylight.mdsal.binding.api.DataTreeIdentifier; +import org.opendaylight.mdsal.binding.api.DataTreeModification; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.Keystore; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017._private.keys.PrivateKey; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java index 95e177a1f1..2fef6f4f02 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/NetconfDeviceWriteOnlyTxTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import static org.junit.Assert.fail; @@ -34,9 +33,9 @@ import org.mockito.ArgumentCaptor; import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.schema.mapping.BaseSchema; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTxTest.java index b5d6395808..1430fbcaf2 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadOnlyTxTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import static org.mockito.ArgumentMatchers.any; @@ -21,10 +20,10 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.impl.util.compat.DataNormalizationException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTxTest.java index f9d882ea90..4cbf3804d3 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/ReadWriteTxTest.java @@ -5,32 +5,31 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.google.common.util.concurrent.CheckedFuture; -import com.google.common.util.concurrent.Futures; -import org.junit.Assert; +import com.google.common.util.concurrent.FluentFuture; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -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.DOMDataReadTransaction; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; +import org.opendaylight.yangtools.util.concurrent.FluentFutures; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.LeafNode; public class ReadWriteTxTest { @Mock - private DOMDataReadTransaction delegateReadTx; + private DOMDataTreeReadTransaction delegateReadTx; @Mock - private DOMDataWriteTransaction delegateWriteTx; + private DOMDataTreeWriteTransaction delegateWriteTx; private ReadWriteTx tx; @Before @@ -70,17 +69,15 @@ public class ReadWriteTxTest { @Test public void exists() throws Exception { final YangInstanceIdentifier id = TxTestUtils.getContainerId(); - final CheckedFuture resultFuture = - Futures.immediateCheckedFuture(true); - when(delegateReadTx.exists(LogicalDatastoreType.CONFIGURATION, id)).thenReturn(resultFuture); - final CheckedFuture exists = tx.exists(LogicalDatastoreType.CONFIGURATION, id); - Assert.assertTrue(exists.get()); + when(delegateReadTx.exists(LogicalDatastoreType.CONFIGURATION, id)).thenReturn( + FluentFutures.immediateTrueFluentFuture()); + final FluentFuture exists = tx.exists(LogicalDatastoreType.CONFIGURATION, id); + assertTrue(exists.get()); } @Test public void getIdentifier() throws Exception { final ReadWriteTx tx2 = new ReadWriteTx(null, null); - Assert.assertNotEquals(tx.getIdentifier(), tx2.getIdentifier()); + assertNotEquals(tx.getIdentifier(), tx2.getIdentifier()); } - } diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChainTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChainTest.java index 02fef9792b..d2efa8226b 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChainTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/TxChainTest.java @@ -18,20 +18,20 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainClosedException; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataReadOnlyTransaction; +import org.opendaylight.mdsal.common.api.TransactionCommitFailedException; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeReadTransaction; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainClosedException; +import org.opendaylight.mdsal.dom.api.DOMTransactionChainListener; public class TxChainTest { @Mock private DOMDataBroker broker; @Mock - private TransactionChainListener listener; + private DOMTransactionChainListener listener; @Mock - private DOMDataReadOnlyTransaction readOnlyTx; + private DOMDataTreeReadTransaction readOnlyTx; @Mock private AbstractWriteTx writeOnlyTx1; @Mock @@ -101,7 +101,7 @@ public class TxChainTest { chain.newWriteOnlyTransaction(); } - @Test(expected = TransactionChainClosedException.class) + @Test(expected = DOMTransactionChainClosedException.class) public void testCloseAfterFinished() throws Exception { chain.close(); verify(listener).onTransactionChainSuccessful(chain); diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateRunningTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateRunningTxTest.java index d088eeaa54..15825234aa 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateRunningTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateRunningTxTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import static org.mockito.ArgumentMatchers.any; @@ -24,9 +23,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTxTest.java index 83b596a2a6..00d2539727 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteCandidateTxTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import static org.mockito.ArgumentMatchers.any; @@ -20,9 +19,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTxTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTxTest.java index 7c139d1dc9..eccc442913 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTxTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/sal/tx/WriteRunningTxTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.sal.tx; import static org.mockito.ArgumentMatchers.any; @@ -21,9 +20,9 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfBaseOps; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java index c4433818b9..f43f016bb5 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/NetconfRemoteSchemaYangSourceProviderTest.java @@ -22,10 +22,10 @@ import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcException; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; -import org.opendaylight.controller.md.sal.dom.spi.DefaultDOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcException; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.spi.DefaultDOMRpcResult; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; import org.opendaylight.netconf.sal.connect.util.RemoteDeviceId; import org.opendaylight.yangtools.util.xml.UntrustedXML; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformerTest.java index fe73bb6198..60c894c5c1 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/BaseRpcSchemalessTransformerTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.schema.mapping; import java.io.InputStream; @@ -16,7 +15,7 @@ import org.custommonkey.xmlunit.XMLUnit; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java index 5214d8f77b..140b0837b1 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/NetconfMessageTransformerTest.java @@ -48,10 +48,10 @@ import org.custommonkey.xmlunit.XMLUnit; import org.hamcrest.CoreMatchers; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; import org.opendaylight.mdsal.binding.generator.impl.ModuleInfoBackedContext; import org.opendaylight.mdsal.dom.api.DOMActionResult; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.netconf.schema.NetconfRemoteSchemaYangSourceProvider; @@ -308,7 +308,7 @@ public class NetconfMessageTransformerTest { .nodeWithKey(Schema.QNAME, keys).build(); final DataContainerChild editConfigStructure = createEditConfigStructure(BaseSchema.BASE_NETCONF_CTX_WITH_NOTIFICATIONS.getSchemaContext(), id, - com.google.common.base.Optional.absent(), com.google.common.base.Optional.fromNullable(schemaNode)); + Optional.empty(), Optional.ofNullable(schemaNode)); final DataContainerChild target = NetconfBaseOps.getTargetNode(NETCONF_CANDIDATE_QNAME); diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/SchemalessMessageTransformerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/SchemalessMessageTransformerTest.java index 6810ca7bec..dba6204402 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/SchemalessMessageTransformerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/schema/mapping/SchemalessMessageTransformerTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.schema.mapping; import javax.xml.transform.dom.DOMSource; @@ -14,8 +13,8 @@ import org.custommonkey.xmlunit.XMLUnit; import org.junit.Assert; import org.junit.Before; import org.junit.Test; -import org.opendaylight.controller.md.sal.dom.api.DOMNotification; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.mdsal.dom.api.DOMNotification; +import org.opendaylight.mdsal.dom.api.DOMRpcResult; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.netconf.util.NetconfMessageTransformUtil; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOpsTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOpsTest.java index 47e12ca608..7973f928d8 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOpsTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfBaseOpsTest.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.sal.connect.netconf.util; import static org.mockito.ArgumentMatchers.any; @@ -14,12 +13,13 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.google.common.base.Optional; +import com.google.common.util.concurrent.FluentFuture; import java.io.IOException; import java.io.InputStream; import java.net.InetSocketAddress; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Assert; @@ -28,7 +28,7 @@ import org.junit.Test; import org.mockito.ArgumentMatcher; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.mdsal.dom.api.DOMRpcService; import org.opendaylight.netconf.api.NetconfMessage; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.api.MessageTransformer; @@ -73,23 +73,23 @@ public class NetconfBaseOpsTest { final NetconfMessage ok = new NetconfMessage(XmlUtil.readXmlToDocument(okStream)); final NetconfMessage data = new NetconfMessage(XmlUtil.readXmlToDocument(dataStream)); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_GET_CONFIG_QNAME))) - .thenReturn(RpcResultBuilder.success(data).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(data).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_GET_QNAME))) - .thenReturn(RpcResultBuilder.success(data).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(data).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_EDIT_CONFIG_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_COPY_CONFIG_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_DISCARD_CHANGES_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_VALIDATE_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_LOCK_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_UNLOCK_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); when(listener.sendRequest(any(), eq(NetconfMessageTransformUtil.NETCONF_COMMIT_QNAME))) - .thenReturn(RpcResultBuilder.success(ok).buildFuture()); + .thenReturn(FluentFuture.from(RpcResultBuilder.success(ok).buildFuture())); final SchemaContext schemaContext = YangParserTestUtils.parseYangResource("/schemas/test-module.yang"); final MessageTransformer transformer = new NetconfMessageTransformer(schemaContext, true); @@ -193,13 +193,13 @@ public class NetconfBaseOpsTest { @Test public void testGetConfigRunning() throws Exception { - baseOps.getConfigRunning(callback, Optional.absent()); + baseOps.getConfigRunning(callback, Optional.empty()); verifyMessageSent("getConfig", NetconfMessageTransformUtil.NETCONF_GET_CONFIG_QNAME); } @Test public void testGetConfigCandidate() throws Exception { - baseOps.getConfigCandidate(callback, Optional.absent()); + baseOps.getConfigCandidate(callback, Optional.empty()); verifyMessageSent("getConfig_candidate", NetconfMessageTransformUtil.NETCONF_GET_CONFIG_QNAME); } @@ -214,7 +214,7 @@ public class NetconfBaseOpsTest { @Test public void testGet() throws Exception { - baseOps.get(callback, Optional.absent()); + baseOps.get(callback, Optional.empty()); verifyMessageSent("get", NetconfMessageTransformUtil.NETCONF_GET_QNAME); } diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfSalKeystoreServiceTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfSalKeystoreServiceTest.java index 5999a054a1..b015c672fd 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfSalKeystoreServiceTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfSalKeystoreServiceTest.java @@ -21,9 +21,9 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.aaa.encrypt.AAAEncryptionService; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netconf.api.xml.XmlUtil; import org.opendaylight.netconf.sal.connect.util.NetconfSalKeystoreService; import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.keystore.rev171017.AddPrivateKeyInput; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfTopologyRPCProviderTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfTopologyRPCProviderTest.java index 7dd88b7453..06b5bb78c4 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfTopologyRPCProviderTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/NetconfTopologyRPCProviderTest.java @@ -16,7 +16,7 @@ import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.opendaylight.aaa.encrypt.AAAEncryptionService; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.DataBroker; import org.opendaylight.netconf.sal.connect.util.NetconfTopologyRPCProvider; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Host; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress; diff --git a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformerTest.java b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformerTest.java index 99849cf174..d59a1b0302 100644 --- a/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformerTest.java +++ b/netconf/sal-netconf-connector/src/test/java/org/opendaylight/netconf/sal/connect/netconf/util/SchemalessRpcStructureTransformerTest.java @@ -7,7 +7,6 @@ */ package org.opendaylight.netconf.sal.connect.netconf.util; -import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import java.io.IOException; import java.net.URISyntaxException; @@ -16,6 +15,7 @@ import java.nio.file.Paths; import java.util.Arrays; import java.util.Collection; import java.util.Map; +import java.util.Optional; import javax.xml.transform.dom.DOMSource; import org.custommonkey.xmlunit.Diff; import org.custommonkey.xmlunit.XMLUnit; @@ -56,8 +56,8 @@ public class SchemalessRpcStructureTransformerTest { private final String testDataset; public SchemalessRpcStructureTransformerTest( - YangInstanceIdentifier path, String testDataset, - Class expectedException) throws IOException, SAXException, URISyntaxException { + final YangInstanceIdentifier path, final String testDataset, + final Class expectedException) throws IOException, SAXException, URISyntaxException { this.path = path; this.testDataset = testDataset; this.expectedException = expectedException; @@ -141,18 +141,18 @@ public class SchemalessRpcStructureTransformerTest { Assert.assertTrue(String.format("Input %s: %s", testDataset, diff.toString()), diff.similar()); } - private static YangInstanceIdentifier.NodeIdentifier createNodeId(String name) { + private static YangInstanceIdentifier.NodeIdentifier createNodeId(final String name) { return new YangInstanceIdentifier.NodeIdentifier(QName.create(NAMESPACE, name)); } private static YangInstanceIdentifier.NodeIdentifierWithPredicates createListNodeId( - String nodeName, String keyName, String id) { + final String nodeName, final String keyName, final String id) { return new YangInstanceIdentifier .NodeIdentifierWithPredicates(QName.create(NAMESPACE, nodeName), QName.create(NAMESPACE, keyName), id); } private static YangInstanceIdentifier.NodeIdentifierWithPredicates createListNodeId( - String nodeName, Map keys) { + final String nodeName, final Map keys) { return new YangInstanceIdentifier.NodeIdentifierWithPredicates(QName.create(NAMESPACE, nodeName), keys); } } diff --git a/netconf/tools/netconf-testtool/pom.xml b/netconf/tools/netconf-testtool/pom.xml index 9b659c328a..7872771f3e 100644 --- a/netconf/tools/netconf-testtool/pom.xml +++ b/netconf/tools/netconf-testtool/pom.xml @@ -118,8 +118,8 @@ netconf-ssh - org.opendaylight.controller - sal-inmemory-datastore + org.opendaylight.mdsal + mdsal-dom-inmemory-datastore org.opendaylight.netconf diff --git a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java index eb2f93f1ac..11c009c34f 100644 --- a/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java +++ b/netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/MdsalOperationProvider.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.netconf.test.tool; import com.google.common.collect.ClassToInstanceMap; @@ -19,14 +18,14 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataWriteTransaction; -import org.opendaylight.controller.md.sal.dom.broker.impl.SerializedDOMDataBroker; -import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStoreFactory; -import org.opendaylight.controller.sal.core.spi.data.DOMStore; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataTreeWriteTransaction; import org.opendaylight.mdsal.dom.api.DOMSchemaService; import org.opendaylight.mdsal.dom.api.DOMSchemaServiceExtension; +import org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker; +import org.opendaylight.mdsal.dom.spi.store.DOMStore; +import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStoreFactory; import org.opendaylight.netconf.api.capability.Capability; import org.opendaylight.netconf.api.monitoring.CapabilityListener; import org.opendaylight.netconf.impl.SessionIdProvider; @@ -135,7 +134,7 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { YangInstanceIdentifier yangInstanceIdentifier = YangInstanceIdentifier.builder().node(NetconfState.QNAME) .build(); - final DOMDataWriteTransaction tx = dataBroker.newWriteOnlyTransaction(); + final DOMDataTreeWriteTransaction tx = dataBroker.newWriteOnlyTransaction(); tx.put(LogicalDatastoreType.OPERATIONAL, yangInstanceIdentifier, netconf); try { @@ -213,10 +212,8 @@ class MdsalOperationProvider implements NetconfOperationServiceFactory { private static DOMDataBroker createDataStore(final DOMSchemaService schemaService, final long sessionId) { LOG.debug("Session {}: Creating data stores for simulated device", sessionId); - final DOMStore operStore = InMemoryDOMDataStoreFactory - .create("DOM-OPER", schemaService); - final DOMStore configStore = InMemoryDOMDataStoreFactory - .create("DOM-CFG", schemaService); + final DOMStore operStore = InMemoryDOMDataStoreFactory.create("DOM-OPER", schemaService); + final DOMStore configStore = InMemoryDOMDataStoreFactory.create("DOM-CFG", schemaService); ExecutorService listenableFutureExecutor = SpecialExecutors.newBlockingBoundedCachedThreadPool( 16, 16, "CommitFutures", MdsalOperationProvider.class); diff --git a/netconf/yanglib/pom.xml b/netconf/yanglib/pom.xml index 4daffcdf45..dcde35f1cc 100644 --- a/netconf/yanglib/pom.xml +++ b/netconf/yanglib/pom.xml @@ -39,8 +39,8 @@ - org.opendaylight.controller - sal-binding-api + org.opendaylight.mdsal + mdsal-binding-api com.google.guava diff --git a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java index 5e381cdc5f..48bd4403d5 100644 --- a/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java +++ b/netconf/yanglib/src/main/java/org/opendaylight/yanglib/impl/YangLibProvider.java @@ -17,10 +17,10 @@ import java.io.File; import java.util.ArrayList; import java.util.List; import javax.annotation.Nullable; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; import org.opendaylight.mdsal.common.api.CommitInfo; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesStateBuilder; diff --git a/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml b/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml index f4d9c1968b..b67a438e59 100644 --- a/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml +++ b/netconf/yanglib/src/main/resources/org/opendaylight/blueprint/yanglib.xml @@ -13,7 +13,7 @@ - + diff --git a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java index 7d5fcd19fc..97536d29f5 100644 --- a/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java +++ b/netconf/yanglib/src/test/java/org/opendaylight/yanglib/impl/YangLibProviderTest.java @@ -31,9 +31,9 @@ import org.junit.Test; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.WriteTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Uri; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesState; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160621.ModulesStateBuilder; -- 2.36.6