Bug-6346: Allow over-ride of non-module capabilities
[netconf.git] / netconf / sal-netconf-connector / src / main / java / org / opendaylight / netconf / sal / connect / netconf / listener / NetconfDeviceCommunicator.java
index a3a6b60228f6bc8686ff658a6656f9209d2b0acd..260beaf59a3b4cc50ffbc05455cd276d38c498ca 100644 (file)
@@ -108,16 +108,20 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
             LOG.trace("{}: Session advertised capabilities: {}", id,
                     netconfSessionPreferences);
 
-            if(overrideNetconfCapabilities.isPresent()) {
-                netconfSessionPreferences = overrideNetconfCapabilities.get().isOverride() ?
-                        netconfSessionPreferences.replaceModuleCaps(overrideNetconfCapabilities.get().getSessionPreferences()) :
-                        netconfSessionPreferences.addModuleCaps(overrideNetconfCapabilities.get().getSessionPreferences());
-                LOG.debug(
-                        "{}: Session capabilities overridden, capabilities that will be used: {}",
-                        id, netconfSessionPreferences);
+            if (overrideNetconfCapabilities.isPresent()) {
+                final NetconfSessionPreferences sessionPreferences = overrideNetconfCapabilities
+                        .get().getSessionPreferences();
+                netconfSessionPreferences = overrideNetconfCapabilities.get().moduleBasedCapsOverrided()
+                        ? netconfSessionPreferences.replaceModuleCaps(sessionPreferences)
+                        : netconfSessionPreferences.addModuleCaps(sessionPreferences);
+
+                netconfSessionPreferences = overrideNetconfCapabilities.get().nonModuleBasedCapsOverrided()
+                        ? netconfSessionPreferences.replaceNonModuleCaps(sessionPreferences)
+                        : netconfSessionPreferences.addNonModuleCaps(sessionPreferences);
+                LOG.debug("{}: Session capabilities overridden, capabilities that will be used: {}", id,
+                        netconfSessionPreferences);
             }
 
-
             remoteDevice.onRemoteSessionUp(netconfSessionPreferences, this);
             if (!firstConnectionFuture.isDone()) {
                 firstConnectionFuture.set(netconfSessionPreferences.getNetconfDeviceCapabilities());
@@ -361,8 +365,7 @@ public class NetconfDeviceCommunicator implements NetconfClientSessionListener,
             return Futures.immediateFuture( createSessionDownRpcResult() );
         }
 
-        final Request req = new Request( new UncancellableFuture<RpcResult<NetconfMessage>>(true),
-                                         message );
+        final Request req = new Request(new UncancellableFuture<>(true), message);
         requests.add(req);
 
         session.sendMessage(req.request).addListener(new FutureListener<Void>() {