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=30c67c4d780e897d972d60bb79d546b512516f90;hp=f00a5555167cd71aa8be43ba19f902efff851810;hpb=6ad531a01139b12e009d2f89b139be98e96a7545;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."); + } + } }