From 078d561c79e3fcf57b2bfd5d6b50c4502288781a Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 18 Jan 2024 07:56:56 +0100 Subject: [PATCH] Override Rpc/Action invoke method Add a plain @Override method for Rpc/Action's invoke method, so that it is manifested in the generated type. JIRA: MDSAL-852 Change-Id: I7db7c9036bdb3051ae48a903b66df933fb338fae Signed-off-by: Robert Varga --- .../mdsal/binding/dom/adapter/RpcAdapter.java | 16 ++++--------- .../reactor/AbstractInvokableGenerator.java | 15 ++++++------ .../impl/reactor/ActionGenerator.java | 24 +++++++++++++++---- .../generator/impl/reactor/RpcGenerator.java | 14 +++++++---- 4 files changed, 42 insertions(+), 27 deletions(-) diff --git a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcAdapter.java b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcAdapter.java index 624d8ffe9a..1903d30116 100644 --- a/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcAdapter.java +++ b/binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcAdapter.java @@ -26,7 +26,6 @@ final class RpcAdapter implements InvocationHandler { private final @NonNull DOMRpcService delegate; private final RpcInvocationStrategy strategy; private final @NonNull Rpc facade; - private final Method invokeMethod; private final String name; > RpcAdapter(final AdapterContext adapterContext, final DOMRpcService delegate, @@ -40,12 +39,6 @@ final class RpcAdapter implements InvocationHandler { throw new IllegalStateException("Failed to find runtime type for " + type); } - try { - invokeMethod = type.getMethod(Naming.RPC_INVOKE_NAME, RpcInput.class); - } catch (NoSuchMethodException e) { - throw new IllegalStateException("Failed to find invoke method in " + type, e); - } - facade = type.cast(Proxy.newProxyInstance(type.getClassLoader(), new Class[] { type }, this)); name = type.getName(); @@ -67,11 +60,12 @@ final class RpcAdapter implements InvocationHandler { @Override public Object invoke(final Object proxy, final Method method, final Object[] args) throws Throwable { - if (invokeMethod.equals(method)) { - return strategy.invoke((RpcInput) requireNonNull(args[0])); - } - switch (method.getName()) { + case Naming.RPC_INVOKE_NAME: + if (method.getParameterCount() == 1) { + return strategy.invoke((RpcInput) requireNonNull(args[0])); + } + break; case "toString": if (method.getReturnType().equals(String.class) && method.getParameterCount() == 0) { return name + "$Adapter{delegate=" + delegate + "}"; diff --git a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractInvokableGenerator.java b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractInvokableGenerator.java index 55313f5bd3..a3851f9279 100644 --- a/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractInvokableGenerator.java +++ b/binding/mdsal-binding-generator/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractInvokableGenerator.java @@ -7,10 +7,9 @@ */ package org.opendaylight.mdsal.binding.generator.impl.reactor; -import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.mdsal.binding.model.api.GeneratedType; import org.opendaylight.mdsal.binding.model.api.JavaTypeName; -import org.opendaylight.mdsal.binding.model.api.ParameterizedType; +import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder; import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase; import org.opendaylight.mdsal.binding.runtime.api.CompositeRuntimeType; import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement; @@ -39,9 +38,11 @@ abstract class AbstractInvokableGenerator