X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frestconf%2Fimpl%2FControllerContext.xtend;h=624178569d4e71551507f7733cec7c93bf4b032c;hb=7007ef0c2b418b9b49e56e6c3525e8906fefa522;hp=2b3a3042c2ce9119c9ee9d0176dcf88ed52807cb;hpb=a1b55fb491e235c028e1d451aff4b1d261d5a86c;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.xtend b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.xtend index 2b3a3042c2..624178569d 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.xtend +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/restconf/impl/ControllerContext.xtend @@ -25,6 +25,8 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext import static com.google.common.base.Preconditions.* import org.opendaylight.controller.sal.core.api.model.SchemaServiceListener +import org.opendaylight.yangtools.yang.model.api.RpcDefinition +import java.util.concurrent.ConcurrentHashMap class ControllerContext implements SchemaServiceListener { @@ -37,6 +39,8 @@ class ControllerContext implements SchemaServiceListener { private val BiMap uriToModuleName = HashBiMap.create(); private val Map moduleNameToUri = uriToModuleName.inverse(); + private val Map qnameToRpc = new ConcurrentHashMap(); + private new() { if (INSTANCE != null) { @@ -272,11 +276,27 @@ class ControllerContext implements SchemaServiceListener { } } - public def QName toRpcQName(String name) { + public def QName toQName(String name) { + val module = name.toModuleName; + val node = name.toNodeName; + val namespace = moduleNameToUri.get(module); + return new QName(namespace,null,node); } override onGlobalContextUpdated(SchemaContext context) { this.schemas = context; + for(operation : context.operations) { + val qname = new QName(operation.QName.namespace,null,operation.QName.localName); + qnameToRpc.put(qname,operation); + } + } + + def ContainerSchemaNode getRpcOutputSchema(QName name) { + qnameToRpc.get(name)?.output; + } + + def ContainerSchemaNode getRpcInputSchema(QName name) { + qnameToRpc.get(name)?.input; } }