From c5a1d2431bc9c13b7537aa75c264035951ac0de0 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 20 Jan 2017 13:15:04 +0100 Subject: [PATCH] BUG-3128: do not open-code routed RPC identification Identification of routed RPCs is available via RpcRoutingStrategy. Use that code to identify routed RPC instead of duplicating same logic in multiple places. Change-Id: I5a12b8fd891cb41f805b2a4e7ae465d4004aca39 Signed-off-by: Robert Varga --- .../dom/broker/impl/DOMRpcRoutingTable.java | 21 ++++++------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRoutingTable.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRoutingTable.java index 22e3305495..a32b5384e6 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRoutingTable.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/md/sal/dom/broker/impl/DOMRpcRoutingTable.java @@ -28,20 +28,16 @@ import org.opendaylight.controller.md.sal.dom.api.DOMRpcIdentifier; import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementation; import org.opendaylight.controller.md.sal.dom.api.DOMRpcImplementationNotAvailableException; import org.opendaylight.controller.md.sal.dom.api.DOMRpcResult; +import org.opendaylight.controller.md.sal.dom.broker.spi.rpc.RpcRoutingStrategy; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; -import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; -import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.RpcDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; final class DOMRpcRoutingTable { - private static final QName CONTEXT_REFERENCE = QName.create("urn:opendaylight:yang:extension:yang-ext", - "2013-07-09", "context-reference").intern(); static final DOMRpcRoutingTable EMPTY = new DOMRpcRoutingTable(ImmutableMap.of(), null); @@ -161,16 +157,11 @@ final class DOMRpcRoutingTable { return new UnknownDOMRpcRoutingTableEntry(key, implementations); } - final ContainerSchemaNode input = rpcDef.getInput(); - if (input != null) { - for (DataSchemaNode c : input.getChildNodes()) { - for (UnknownSchemaNode extension : c.getUnknownSchemaNodes()) { - if (CONTEXT_REFERENCE.equals(extension.getNodeType())) { - final YangInstanceIdentifier keyId = YangInstanceIdentifier.of(c.getQName()); - return new RoutedDOMRpcRoutingTableEntry(rpcDef, keyId, implementations); - } - } - } + final RpcRoutingStrategy strategy = RpcRoutingStrategy.from(rpcDef); + if (strategy.isContextBasedRouted()) { + return new RoutedDOMRpcRoutingTableEntry(rpcDef, YangInstanceIdentifier.of(strategy.getLeaf()), + implementations); + } return new GlobalDOMRpcRoutingTableEntry(rpcDef, implementations); -- 2.36.6