Use schemaTreeChild() to lookup input/output
[mdsal.git] / binding / mdsal-binding-runtime-api / src / main / java / org / opendaylight / mdsal / binding / runtime / api / AbstractBindingRuntimeContext.java
index 6b22a84432c9c59ab7178a21cb26970750cedad9..bf0dc18a1de77c4392c859b2b8e247dbd45fdf64 100644 (file)
@@ -105,16 +105,19 @@ public abstract class AbstractBindingRuntimeContext implements BindingRuntimeCon
 
     @Override
     public final Class<? extends RpcInput> getRpcInput(final QName rpcName) {
-        return loadClass(getTypes().findRpcInput(rpcName)
-            .orElseThrow(() -> new IllegalArgumentException("Failed to find RpcInput for " + rpcName)))
-            .asSubclass(RpcInput.class);
+        return loadClass(getRpc(rpcName).input()).asSubclass(RpcInput.class);
     }
 
     @Override
     public final Class<? extends RpcOutput> getRpcOutput(final QName rpcName) {
-        return loadClass(getTypes().findRpcOutput(rpcName)
-            .orElseThrow(() -> new IllegalArgumentException("Failed to find RpcOutput for " + rpcName)))
-            .asSubclass(RpcOutput.class);
+        return loadClass(getRpc(rpcName).output()).asSubclass(RpcOutput.class);
+    }
+
+    private @NonNull RpcRuntimeType getRpc(final QName rpcName) {
+        if (getTypes().schemaTreeChild(rpcName) instanceof RpcRuntimeType rpc) {
+            return rpc;
+        }
+        throw new IllegalArgumentException("Failed to find RPC for " + rpcName);
     }
 
     @Override