From: Tony Tkacik Date: Mon, 27 Oct 2014 09:39:53 +0000 (+0000) Subject: Merge "Bug 2117: Inner grouping used in outer grouping's choice case" X-Git-Tag: release/lithium~448 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=bb8484fc4c99caa4c86457ade2609b236e67418e;hp=4df0ae784db0482c9ed3199c65cd7bfa8d7d1f0d;p=yangtools.git Merge "Bug 2117: Inner grouping used in outer grouping's choice case" --- diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java index 57ed8fdd1d..83a7061336 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SchemaContextUtil.java @@ -274,7 +274,8 @@ public final class SchemaContextUtil { return null; } - private static SchemaNode findNodeInGrouping(final GroupingDefinition grouping, final Iterable path) { + private static SchemaNode findNodeInGrouping( + final GroupingDefinition grouping, final Iterable path) { final QName current = Iterables.getFirst(path, null); if (current == null) { LOG.debug("Found grouping {}", grouping); @@ -283,12 +284,17 @@ public final class SchemaContextUtil { LOG.trace("Looking for path {} in grouping {}", path, grouping); final DataSchemaNode node = grouping.getDataChildByName(current); - if (node == null) { - LOG.debug("No node matching {} found in grouping {}", current, grouping); - return null; + + if (node != null) + return findNode(node, nextLevel(path)); + + for (GroupingDefinition groupingDefinition : grouping.getGroupings()) { + if (groupingDefinition.getQName().equals(current)) + return findNodeInGrouping(groupingDefinition, nextLevel(path)); } - return findNode(node, nextLevel(path)); + LOG.debug("No node matching {} found in grouping {}", current, grouping); + return null; } private static SchemaNode findNodeInRpc(final RpcDefinition rpc, final Iterable path) {