X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-model-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Futil%2FSchemaNodeUtils.java;h=eaa6b9d92019e14644e34830fb368e7c96bfd0ec;hb=37962d89fbd4032653b3918921181377c855b598;hp=f00a5555167cd71aa8be43ba19f902efff851810;hpb=64c1b674165e6d60b0992f9184094c3107521ba3;p=yangtools.git diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaNodeUtils.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaNodeUtils.java index f00a555516..eaa6b9d920 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaNodeUtils.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaNodeUtils.java @@ -7,11 +7,16 @@ */ package org.opendaylight.yangtools.yang.model.util; +import com.google.common.base.Optional; +import com.google.common.base.Preconditions; +import javax.annotation.Nonnull; +import javax.annotation.Nullable; +import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; +import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; -import com.google.common.base.Optional; - public class SchemaNodeUtils { private SchemaNodeUtils() { @@ -36,4 +41,24 @@ public class SchemaNodeUtils { } return previous.orNull(); } + + /** + * Returns RPC input or output schema based on supplied QName + * + * @param rpc RPC Definition + * @param qname input or output QName with namespace same as RPC + * @return input or output schema. Returns null if RPC does not have input/output specified. + */ + @Nullable public static ContainerSchemaNode getRpcDataSchema(@Nonnull final RpcDefinition rpc, @Nonnull final QName qname) { + Preconditions.checkNotNull(rpc, "Rpc Schema must not be null"); + Preconditions.checkNotNull(qname,"QName must not be null"); + switch (qname.getLocalName()) { + case "input": + return rpc.getInput(); + case "output": + return rpc.getOutput(); + default: + throw new IllegalArgumentException("Supplied qname " + qname + " does not represent rpc input or output."); + } + } }