Catch nulls in RpcServiceAdapter 02/89302/5
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 23 Apr 2020 06:39:32 +0000 (08:39 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 23 Apr 2020 12:24:11 +0000 (14:24 +0200)
Binding/DOM invocation should not tolerate null input, make sure
we stop such attempts early.

JIRA: MDSAL-303
Change-Id: I2ca04b820154768b50b2353b1f99e48c31484035
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java
binding/mdsal-binding-dom-adapter/src/test/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapterTest.java

index 107284fd991be9fba983fa57c36883d83e5f9d2c..108e6e64c6c4137b577c0ba0be14a6e4be85eae6 100644 (file)
@@ -86,7 +86,7 @@ class RpcServiceAdapter implements InvocationHandler {
             if (args.length != 1) {
                 throw new IllegalArgumentException("Input must be provided.");
             }
-            return rpc.invoke((DataObject) args[0]);
+            return rpc.invoke((DataObject) requireNonNull(args[0]));
         }
 
         switch (method.getName()) {
index e7df0124b44895bc57c84b50e5a807cdf6dea87e..2e995ec33a4fb777ae975085b7fc14d7883c2d3f 100644 (file)
@@ -19,6 +19,7 @@ import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingBrokerTestFac
 import org.opendaylight.mdsal.binding.dom.adapter.test.util.BindingTestContext;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.OpendaylightTestRpcServiceService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInput;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.bi.ba.rpcservice.rev140701.RockTheHouseInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.OpendaylightTestRoutedRpcService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.RoutedSimpleRouteInput;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.rpc.routing.rev140701.RoutedSimpleRouteInputBuilder;
@@ -52,7 +53,8 @@ public class RpcServiceAdapterTest {
                 method, new Object[]{ }));
 
         method = OpendaylightTestRpcServiceService.class.getMethod("rockTheHouse", RockTheHouseInput.class);
-        assertNotNull(rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method, new Object[]{ null }));
+        assertNotNull(rpcServiceAdapter.invoke(rpcServiceAdapter.getProxy(), method,
+            new Object[]{ new RockTheHouseInputBuilder().build() }));
 
         rpcServiceAdapter = new RpcServiceAdapter(OpendaylightTestRoutedRpcService.class,
                 bindingTestContext.getCodec(), bindingTestContext.getDomRpcInvoker());
@@ -63,10 +65,13 @@ public class RpcServiceAdapterTest {
 
     private interface TestRpcService extends RpcService {
 
+        @Override
         String toString();
 
+        @Override
         int hashCode();
 
+        @Override
         boolean equals(Object object);
     }
 }
\ No newline at end of file