Add BindingReflections.getQName(Rpc) 65/102665/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 13 Oct 2022 13:40:34 +0000 (15:40 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 13 Oct 2022 13:41:26 +0000 (15:41 +0200)
Acquiring the QName of an RPC implementation is a well-known operation,
make sure we publish that capability.

JIRA: MDSAL-773
Change-Id: I2d3bd90d41b8da45f7b99a0ffebdfa4e18c0ffcc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/reflect/BindingReflections.java

index 099752bd7c805b586c672e5c282001a9975d14d1..a2e04ca064a99da9fe64556ebd0509fdea9cd041 100644 (file)
@@ -43,10 +43,12 @@ import org.opendaylight.yangtools.yang.binding.Action;
 import org.opendaylight.yangtools.yang.binding.Augmentable;
 import org.opendaylight.yangtools.yang.binding.Augmentation;
 import org.opendaylight.yangtools.yang.binding.BaseIdentity;
+import org.opendaylight.yangtools.yang.binding.BindingContract;
 import org.opendaylight.yangtools.yang.binding.ChildOf;
 import org.opendaylight.yangtools.yang.binding.DataContainer;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.Notification;
+import org.opendaylight.yangtools.yang.binding.Rpc;
 import org.opendaylight.yangtools.yang.binding.RpcService;
 import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
@@ -193,8 +195,16 @@ public final class BindingReflections {
     }
 
     public static @NonNull QName getQName(final BaseIdentity identity) {
-        return CLASS_TO_QNAME.getUnchecked(identity.implementedInterface())
-            .orElseThrow(() -> new IllegalStateException("Failed to resolve QName of " + identity));
+        return getContractQName(identity);
+    }
+
+    public static @NonNull QName getQName(final Rpc<?, ?> rpc) {
+        return getContractQName(rpc);
+    }
+
+    private static @NonNull QName getContractQName(final BindingContract<?> contract) {
+        return CLASS_TO_QNAME.getUnchecked(contract.implementedInterface())
+            .orElseThrow(() -> new IllegalStateException("Failed to resolve QName of " + contract));
     }
 
     /**