Do no implement invokeNetconf() as a default method 92/110392/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 28 Feb 2024 07:15:36 +0000 (08:15 +0100)
committerRobert Varga <nite@hq.sk>
Wed, 28 Feb 2024 10:08:58 +0000 (10:08 +0000)
We need to split the invokeRpc() and invokeNetconf() implementations,
this takes the first step.

JIRA: NETCONF-806
Change-Id: I4b6af534dcdf733c29e6dfc03e379a040e72aa8b
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
apps/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/actors/NetconfNodeActor.java
apps/netconf-topology-singleton/src/test/java/org/opendaylight/netconf/topology/singleton/impl/MountPointEndToEndTest.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/api/RemoteDeviceServices.java
plugins/netconf-client-mdsal/src/main/java/org/opendaylight/netconf/client/mdsal/spi/NetconfDeviceRpc.java

index 12b8350372e04764b880f7f89fe71d2d1b855410..c58716c2aa6e100ae11bb50b846a487602b26f70 100644 (file)
@@ -333,7 +333,18 @@ public class NetconfNodeActor extends AbstractUntypedActor {
                         final var rpcProxy = new ProxyDOMRpcService(actorSystem, masterReference, id,
                             actorResponseWaitTime);
                         slaveSalManager.registerSlaveMountPoint(result, masterReference, new RemoteDeviceServices(
-                            (Rpcs.Normalized) () -> rpcProxy,
+                            new Rpcs.Normalized() {
+                                @Override
+                                public ListenableFuture<? extends DOMRpcResult> invokeNetconf(final QName type,
+                                        final ContainerNode input) {
+                                    return rpcProxy.invokeRpc(type, input);
+                                }
+
+                                @Override
+                                public DOMRpcService domRpcService() {
+                                    return rpcProxy;
+                                }
+                            },
                             new ProxyDOMActionService(actorSystem, masterReference, id, actorResponseWaitTime)));
                     }
                 });
index b3989112f5ba458b757696ecebf3a2a989fed0f1..e49ce7f5a68a7231cd4adec4140c2036f6d6442a 100644 (file)
@@ -255,7 +255,17 @@ public class MountPointEndToEndTest extends AbstractBaseSchemasTest {
                 DOMRpcIdentifier.create(putTopRpcSchemaPath), DOMRpcIdentifier.create(getTopRpcSchemaPath));
 
         final var rpcService = router.rpcService();
-        deviceRpcService = () -> rpcService;
+        deviceRpcService = new Rpcs.Normalized() {
+            @Override
+            public ListenableFuture<? extends DOMRpcResult> invokeNetconf(final QName type, final ContainerNode input) {
+                return rpcService.invokeRpc(type, input);
+            }
+
+            @Override
+            public DOMRpcService domRpcService() {
+                return rpcService;
+            }
+        };
 
         builderFactory = new NetconfClientConfigurationBuilderFactoryImpl(mockEncryptionService, credentialProvider,
             sslHandlerFactoryProvider);
index 64d40aec8f2e580bdc6231ac0a5d78742f77431d..2f16959973bdf27e3e0cf115c910074d18b69945 100644 (file)
@@ -9,14 +9,10 @@ package org.opendaylight.netconf.client.mdsal.api;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.util.concurrent.ListenableFuture;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.mdsal.dom.api.DOMActionService;
-import org.opendaylight.mdsal.dom.api.DOMRpcResult;
 import org.opendaylight.mdsal.dom.api.DOMRpcService;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 
 /**
  * Set of interfaces exposed by a {@link RemoteDevice}.
@@ -35,11 +31,6 @@ public record RemoteDeviceServices(@NonNull Rpcs rpcs, @Nullable Actions actions
          * NETCONF device RPCs operating just as any other {@link DOMRpcService}.
          */
         non-sealed interface Normalized extends Rpcs {
-            @Override
-            default ListenableFuture<? extends DOMRpcResult> invokeNetconf(final QName type,
-                    final ContainerNode input) {
-                return domRpcService().invokeRpc(type, input);
-            }
 
             @NonNull DOMRpcService domRpcService();
         }
index 63e965a05a23efc7f2550f39cfe3a925ada81c9e..c434e2dca375ca178e6ca83846eb79adc0d54b4b 100644 (file)
@@ -7,12 +7,14 @@
  */
 package org.opendaylight.netconf.client.mdsal.spi;
 
+import com.google.common.util.concurrent.ListenableFuture;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.mdsal.dom.api.DOMRpcResult;
 import org.opendaylight.mdsal.dom.api.DOMRpcService;
 import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceCommunicator;
 import org.opendaylight.netconf.client.mdsal.api.RemoteDeviceServices.Rpcs;
 import org.opendaylight.netconf.client.mdsal.api.RpcTransformer;
+import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
@@ -28,6 +30,11 @@ public final class NetconfDeviceRpc implements Rpcs.Normalized {
         domRpcService = new NetconfDeviceDOMRpcService(modelContext, communicator, transformer);
     }
 
+    @Override
+    public ListenableFuture<? extends DOMRpcResult> invokeNetconf(final QName type, final ContainerNode input) {
+        return domRpcService().invokeRpc(type, input);
+    }
+
     @Override
     public DOMRpcService domRpcService() {
         return domRpcService;