Bug4231 - Yang tools failing to parse Augmentations under "uses" clause.
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / builder / impl / BuilderUtils.java
index 3a17fdeda56e49ee25578e699d86b2491aa6f58c..1c202f61004c5d7ac84a57532571897da679cf80 100644 (file)
@@ -344,6 +344,41 @@ public final class BuilderUtils {
         }
     }
 
+    /**
+     * Find builder of schema node under parent builder (including under
+     * AugmentationSchemaBuilder).
+     *
+     * @param path
+     *            - path of target schema node builder
+     * @param parent
+     *            - base data node container builder under which the target
+     *            schema node builder should be found
+     * @return builder of schema node
+     */
+    public static SchemaNodeBuilder findTargetNode(final Iterable<QName> path,
+            final DataNodeContainerBuilder parent) {
+
+        Preconditions.checkNotNull(parent);
+        Preconditions.checkNotNull(path);
+
+        SchemaNodeBuilder foundNode = null;
+
+        final Iterator<QName> pathIterator = path.iterator();
+        if (pathIterator.hasNext()) {
+            String name = pathIterator.next().getLocalName();
+            foundNode = parent.getDataChildByName(name);
+            if (foundNode == null) {
+                foundNode = findUnknownNode(name, parent);
+            }
+        }
+
+        if (pathIterator.hasNext() && foundNode != null) {
+            return findSchemaNode(Iterables.skip(path, 1), foundNode);
+        } else {
+            return foundNode;
+        }
+    }
+
     public static SchemaNodeBuilder findSchemaNode(final Iterable<QName> path, final SchemaNodeBuilder parentNode) {
         SchemaNodeBuilder node = null;
         SchemaNodeBuilder parent = parentNode;