LegacyDOMRpcImplementationAdapter is generic 63/103363/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 24 Nov 2022 18:13:55 +0000 (19:13 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 24 Nov 2022 18:13:55 +0000 (19:13 +0100)
We are bridging to a well-defined RpcService subclass, hence this
should be captured in the field type -- making the class generic.

Change-Id: I46019e6e821a798474f639737c6fefe199bae8ee
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcProviderServiceAdapter.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/LegacyDOMRpcImplementationAdapter.java
binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/LegacyDOMRpcImplementationAdapterTest.java

index 1cbaa454c114ccba858f9c458c82784d079af5e5..07483d2cf6d7ee0e4cd098bee9cd70fbb55b0c67 100644 (file)
@@ -114,7 +114,7 @@ public class BindingDOMRpcProviderServiceAdapter extends AbstractBindingAdapter<
         final var rpcs = serializer.getRpcMethodToQName(type).inverse();
 
         return new BindingRpcAdapterRegistration<>(implementation, getDelegate().registerRpcImplementation(
-            new LegacyDOMRpcImplementationAdapter(adapterContext(), type, rpcs, implementation),
+            new LegacyDOMRpcImplementationAdapter<>(adapterContext(), type, rpcs, implementation),
             createDomRpcIdentifiers(rpcs.keySet(), rpcContextPaths)));
     }
 
index 1e90b646e95dd080667203d0d23f0ea0b44c7d85..77ae2529ab75e75f0dc4167834947ab161680d10 100644 (file)
@@ -30,16 +30,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Absolute;
 
 @Deprecated(since = "11.0.0", forRemoval = true)
-final class LegacyDOMRpcImplementationAdapter extends AbstractDOMRpcImplementationAdapter {
+final class LegacyDOMRpcImplementationAdapter<T extends RpcService> extends AbstractDOMRpcImplementationAdapter {
     private static final Cache<Class<?>, RpcServiceInvoker> SERVICE_INVOKERS = CacheBuilder.newBuilder().weakKeys()
             .build();
 
     private final RpcServiceInvoker invoker;
-    private final RpcService delegate;
+    private final T delegate;
     private final QName inputQname;
 
-    <T extends RpcService> LegacyDOMRpcImplementationAdapter(final AdapterContext adapterContext,
-            final Class<T> type, final Map<QName, Method> localNameToMethod, final T delegate) {
+    LegacyDOMRpcImplementationAdapter(final AdapterContext adapterContext, final Class<T> type,
+            final Map<QName, Method> localNameToMethod, final T delegate) {
         super(adapterContext);
 
         try {
index 62bf308523955fa0a82d62e8aa925ed1a49d573b..6bc42bf048af485db42efe17d282fc5e70eeeb88 100644 (file)
@@ -10,26 +10,22 @@ package org.opendaylight.mdsal.binding.dom.adapter;
 import static org.junit.Assert.assertNotNull;
 import static org.mockito.Mockito.mock;
 
-import com.google.common.collect.ImmutableMap;
-import java.lang.reflect.Method;
+import java.util.Map;
 import org.junit.Test;
 import org.opendaylight.mdsal.binding.dom.codec.spi.BindingDOMCodecServices;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.XMLNamespace;
 
 @Deprecated(since = "11.0.0", forRemoval = true)
-
 public class LegacyDOMRpcImplementationAdapterTest {
     @Test
     public void basicTest() throws Exception {
-        final BindingDOMCodecServices registry = mock(BindingDOMCodecServices.class);
-        final Method testMethod = getClass().getDeclaredMethod("testMethod");
-        final QName rpcType = QName.create(QNameModule.create(XMLNamespace.of("tst")), "test");
-        final LegacyDOMRpcImplementationAdapter adapter = new LegacyDOMRpcImplementationAdapter(
-            new ConstantAdapterContext(registry), OpendaylightTestRpcServiceService.class,
-            ImmutableMap.of(rpcType, testMethod), mock(OpendaylightTestRpcServiceService.class));
+        final var codecServices = mock(BindingDOMCodecServices.class);
+        final var testMethod = getClass().getDeclaredMethod("testMethod");
+        final var rpcType = QName.create("tst", "test");
+        final var adapter = new LegacyDOMRpcImplementationAdapter<>(new ConstantAdapterContext(codecServices),
+            OpendaylightTestRpcServiceService.class, Map.of(rpcType, testMethod),
+            mock(OpendaylightTestRpcServiceService.class));
         assertNotNull(adapter);
     }