X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fdom%2Fapi%2FDOMRpcAvailabilityListener.java;h=93db2a0962f283c2ca1669b94d1a1756fbcc945c;hp=35c58feb163e1e90d60caa6ab64b48b2cd52d687;hb=aaea3e9a92ae9d6fac04c4a065db4b35cbca9ed0;hpb=dc76c5f86830b541fe9c4f2a011e199486558779 diff --git a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMRpcAvailabilityListener.java b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMRpcAvailabilityListener.java index 35c58feb16..93db2a0962 100644 --- a/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMRpcAvailabilityListener.java +++ b/opendaylight/md-sal/sal-dom-api/src/main/java/org/opendaylight/controller/md/sal/dom/api/DOMRpcAvailabilityListener.java @@ -9,26 +9,62 @@ package org.opendaylight.controller.md.sal.dom.api; import java.util.Collection; import java.util.EventListener; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; /** - * An {@link EventListener} used to track RPC implementations becoming (un)available - * to a {@link DOMRpcService}. + * An {@link EventListener} used to track RPC implementations becoming (un)available a {@link DOMRpcService}. Note that + * the reported {@link DOMRpcIdentifier}s form an identifier space shared between RFC7950 actions and RFC6020 RPCs, + * the former being also known as 'Routed RPCs'. + * + *

+ * Interpretation of DOMRpcIdentifiers has to be evaluated in the context of one of these types, which need to be + * determined by matching {@link DOMRpcIdentifier#getType()} against a + * {@link org.opendaylight.yangtools.yang.model.api.SchemaContext}, which determines actual semantics of + * {@link DOMRpcIdentifier#getContextReference()}. Corresponding SchemaNode is required to be a known sub-interface + * of {@link org.opendaylight.yangtools.yang.model.api.OperationDefinition}. + * + *

+ * For RFC6020 RPCs, reported context reference is always non-null and empty. It indicates an RPC implementation has + * been registered and invocations can be reasonably (with obvious distributed system caveats coming from asynchronous + * events) expected to succeed. + * + *

+ * For RFC7950 actions with a non-empty context-reference, the indication is the same as for RFC6020 RPCs. + * + *

+ * For RFC7950 actions with an empty context-reference, the indication is that the corresponding actions are + * potentially available, but are subject to dynamic lifecycle of their context references. This includes two primary + * use cases: + *

+ * First use case will provide further availability events with non-empty context references as they become available, + * which can be safely ignored if the listener is interested in pure invocation-type integration. + * + *

+ * Second use case will not be providing further events, but rather will attempt to map any incoming invocation onto + * some other RPC or action, or similar, which can separately fail. If a sub-request fails, such implementations are + * required do report {@link DOMRpcImplementationNotAvailableException} as the invocation result, with the underlying + * failure being linked as a cause. + * + * @deprecated Use {@link org.opendaylight.mdsal.dom.api.DOMRpcAvailabilityListener} instead. */ +@Deprecated(forRemoval = true) public interface DOMRpcAvailabilityListener extends EventListener { /** * Method invoked whenever an RPC type becomes available. * * @param rpcs RPC types newly available */ - void onRpcAvailable(@Nonnull Collection rpcs); + void onRpcAvailable(@NonNull Collection rpcs); /** * Method invoked whenever an RPC type becomes unavailable. * * @param rpcs RPC types which became unavailable */ - void onRpcUnavailable(@Nonnull Collection rpcs); + void onRpcUnavailable(@NonNull Collection rpcs); /** * Implementation filtering method. This method is useful for forwarding RPC implementations,