Introduced ChildSchemaNodes namespace to parser 85/27685/2
authorTony Tkacik <ttkacik@cisco.com>
Wed, 30 Sep 2015 20:00:50 +0000 (22:00 +0200)
committerTony Tkacik <ttkacik@cisco.com>
Wed, 30 Sep 2015 20:32:46 +0000 (22:32 +0200)
Use of purpose-built namespaces in new parser
simplifies code and speed ups search.

Introduced ChildSchemaNodes namespace in order
to speed up search for refines and uses.

Change-Id: Ie716b5798a3cca77dff3e3799383f82649273f97
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
19 files changed:
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/NamespaceBehaviour.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AnyxmlStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/CaseStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChildSchemaNodes.java [new file with mode: 0644]
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChoiceStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ContainerStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/InputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/LeafStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ListStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NotificationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/OutputStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RpcStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/YangInferencePipeline.java

index 735bcb9ae002780284395adf450510f3c7dc4565..6d156b1c837f2eb75f1001bf1439848309030b59 100644 (file)
@@ -104,6 +104,11 @@ public abstract class NamespaceBehaviour<K, V, N extends IdentifierNamespace<K,
         return new StorageSpecific<>(identifier, StorageNodeType.SOURCE_LOCAL_SPECIAL);
     }
 
+    public static <K, V, N extends IdentifierNamespace<K, V>> NamespaceBehaviour<K, V, N> statementLocal(
+           Class<N> identifier) {
+       return new StorageSpecific<>(identifier, StorageNodeType.STATEMENT_LOCAL);
+   }
+
     /**
      *
      * Creates tree-scoped namespace behaviour for supplied namespace type.
index 03ce9c8c5face706af337b47d176e7bbfb95521e..8c883dd26572b680ac0537dc5297d79e1640ffae 100644 (file)
@@ -146,7 +146,7 @@ public class RootStatementContext<A, D extends DeclaredStatement<A>, E extends E
         } else {
             copy.setOriginalCtx(this);
         }
-
+        definition().onStatementAdded(copy);
         return copy;
     }
 
index cd42c25b2de9dd219a720eb11beaa052466e954d..d28dc9a458c472d70c13b7645c7e282779168e6d 100644 (file)
@@ -328,6 +328,7 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
                 if (potential == null) {
                     potential = new SubstatementContext(StatementContextBase.this, this);
                     substatements.put(createIdentifier(), potential);
+                    getDefinition().onStatementAdded(potential);
                 }
                 potential.resetLists();
                 switch (this.getStamementSource().getStatementSource()) {
index 7fd1442691ffb4ee9b412c664381372a495bc5d4..a2a510d13a8424f820401b2453db0283a74b5a73 100644 (file)
@@ -44,6 +44,7 @@ public class StatementDefinitionContext<A,D extends DeclaredStatement<A>,E exten
     }
 
     public boolean onStatementAdded(Mutable<A,D,E> stmt) {
+        support.onStatementAdded(stmt);
         return false;
     }
 
index d0a6967f42392cf4fa6c0854060322981d61107b..4c3be3e9a2e16ad4fb2696d60a8ba9f67d6af180 100644 (file)
@@ -149,6 +149,7 @@ class SubstatementContext<A, D extends DeclaredStatement<A>, E extends Effective
             copy.setOriginalCtx(this);
         }
 
+        definition().onStatementAdded(copy);
         return copy;
     }
 
index 33d753797c375802a92f5b9532e65f32ccad51f8..7cdead359b1c80aac24f0012ee1608c29178ddef 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implements AnyxmlStatement {
 
@@ -43,6 +44,11 @@ public class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> implem
             return Utils.qNameFromArgument(ctx,value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, AnyxmlStatement, EffectiveStatement<QName, AnyxmlStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public AnyxmlStatement createDeclared(StmtContext<QName, AnyxmlStatement,?> ctx) {
             return new AnyxmlStatementImpl(ctx);
index 48881f51fccd2cb80c22a4d473187ccadcc57032..736a198cca0d8e73dead6dea951848991a62c35a 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.CaseEffectiveStatementImpl;
 
@@ -45,6 +46,11 @@ public class CaseStatementImpl extends AbstractDeclaredStatement<QName> implemen
             return Utils.qNameFromArgument(ctx, value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, CaseStatement, EffectiveStatement<QName, CaseStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override public CaseStatement createDeclared(
                 StmtContext<QName, CaseStatement, ?> ctx) {
             return new CaseStatementImpl(ctx);
diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChildSchemaNodes.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/ChildSchemaNodes.java
new file mode 100644 (file)
index 0000000..b9761b1
--- /dev/null
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
+
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace;
+
+/**
+ * Statement local namespace, which holds direct schema node descendants.
+ *
+ * @param <D>
+ * @param <E>
+ */
+public interface ChildSchemaNodes<D extends DeclaredStatement<QName>,E extends EffectiveStatement<QName, D>> extends StatementNamespace<QName, D, E>{
+
+}
index 28c7f52371eb45823912e5b1b4922b4df95aa302..b951ba978f9c2b2b255ab41e3b5b414399b286f4 100644 (file)
@@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -51,6 +52,11 @@ public class ChoiceStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, ChoiceStatement, EffectiveStatement<QName, ChoiceStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public ChoiceStatement createDeclared(
                 StmtContext<QName, ChoiceStatement, ?> ctx) {
index f940f026d3322c75eab8e3899257be4e2b4903aa..e68b8ed12b9155ecb0e69d5a7fce172bce21e868 100644 (file)
@@ -28,6 +28,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
 
@@ -46,6 +47,12 @@ public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> imp
             return Utils.qNameFromArgument(ctx,value);
         }
 
+        @Override
+        public void onStatementAdded(
+                Mutable<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public ContainerStatement createDeclared(StmtContext<QName, ContainerStatement,?> ctx) {
             return new ContainerStatementImpl(ctx);
index 8f970c0c24582b99d7929300127eb48088ea3f2e..4aa7aa2d0ea0f0421721e17ee664bbce57069775 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class InputStatementImpl extends AbstractDeclaredStatement<QName>
         implements InputStatement {
@@ -43,6 +44,11 @@ public class InputStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, "input");
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, InputStatement, EffectiveStatement<QName, InputStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public InputStatement createDeclared(
                 StmtContext<QName, InputStatement, ?> ctx) {
index 06de848b2fc32cd8a47a5d21e2ee91d10f0384c5..547e91f59918ed43f6c68287cee13f8e56f89f0d 100644 (file)
@@ -28,6 +28,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -49,6 +50,12 @@ public class LeafListStatementImpl extends AbstractDeclaredStatement<QName>
             super(Rfc6020Mapping.LEAF_LIST);
         }
 
+        @Override
+        public void onStatementAdded(
+                Mutable<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public QName parseArgumentValue(StmtContext<?, ?, ?> ctx, String value)
                 throws SourceException {
index 9a9b88297b3afd10178d5a2dd43024f3d85201e4..a9fb5f0f62c61d8025fd66669c8cf1fd1474cfac 100644 (file)
@@ -27,6 +27,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -49,6 +50,11 @@ public class LeafStatementImpl extends AbstractDeclaredStatement<QName> implemen
             return Utils.qNameFromArgument(ctx,value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override public LeafStatement createDeclared(
                 StmtContext<QName, LeafStatement, ?> ctx) {
             return new LeafStatementImpl(ctx);
index f7249730393fa2ae9e14f00f4e65f054bd61fecc..9fb93b761c1a2fbd0e500b09b2e06b20ff8b984b 100644 (file)
@@ -31,6 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
@@ -57,6 +58,11 @@ public class ListStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, ListStatement, EffectiveStatement<QName, ListStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public ListStatement createDeclared(
                 StmtContext<QName, ListStatement, ?> ctx) {
index 31aa579d3398b6060980657565e2db6049f24d1f..ea4abed332184ddafb427c97340ea722ab0fba4e 100644 (file)
@@ -24,6 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
         implements NotificationStatement {
@@ -46,6 +47,12 @@ public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, value);
         }
 
+        @Override
+        public void onStatementAdded(
+                Mutable<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public NotificationStatement createDeclared(
                 StmtContext<QName, NotificationStatement, ?> ctx) {
index a61bee57dff9fb3a7fa8f4f3ffa2928c07fdac61..012bc592a2ec2c8ef0826c70fc52c01067bfa839 100644 (file)
@@ -21,6 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class OutputStatementImpl extends AbstractDeclaredStatement<QName>
         implements OutputStatement {
@@ -43,6 +44,11 @@ public class OutputStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, "output");
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, OutputStatement, EffectiveStatement<QName, OutputStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public OutputStatement createDeclared(
                 StmtContext<QName, OutputStatement, ?> ctx) {
index c5c727dfafd48a4f4f9c4632bf1def0ddb53c743..85235b9e01feee3c93e0d87df99b3d2fc575fad9 100644 (file)
@@ -26,6 +26,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
 
 public class RpcStatementImpl extends AbstractDeclaredStatement<QName>
         implements RpcStatement {
@@ -47,6 +48,11 @@ public class RpcStatementImpl extends AbstractDeclaredStatement<QName>
             return Utils.qNameFromArgument(ctx, value);
         }
 
+        @Override
+        public void onStatementAdded(Mutable<QName, RpcStatement, EffectiveStatement<QName, RpcStatement>> stmt) {
+            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
+        }
+
         @Override
         public RpcStatement createDeclared(
                 StmtContext<QName, RpcStatement, ?> ctx) {
index 894a407ddf6c0b23566c2666e0bfaa0e81a04404..cbeae98ac6ae4762c4d54260ae8b8a04b6f0fa2f 100644 (file)
@@ -295,53 +295,15 @@ public final class Utils {
                 SimpleDateFormatUtil.DEFAULT_DATE_REV) : qNameModule;
     }
 
-    @Nullable
-    public static StatementContextBase<?, ?, ?> findNode(final StatementContextBase<?, ?, ?> rootStmtCtx,
-            final Iterable<QName> path) {
-
-        StatementContextBase<?, ?, ?> parent = rootStmtCtx;
-
-        Iterator<QName> pathIter = path.iterator();
-        while (pathIter.hasNext()) {
-            QName nextPathQName = pathIter.next();
-            StatementContextBase<?, ?, ?> foundSubstatement = getSubstatementByQName(parent, nextPathQName);
-
-            if (foundSubstatement == null) {
-                return null;
-            }
-            if (!pathIter.hasNext()) {
-                return foundSubstatement;
-            }
-
-            parent = foundSubstatement;
-        }
-
-        return null;
-    }
-
-    public static StatementContextBase<?, ?, ?> getSubstatementByQName(final StatementContextBase<?, ?, ?> parent,
-            final QName nextPathQName) {
-
-        Collection<StatementContextBase<?, ?, ?>> declaredSubstatement = parent.declaredSubstatements();
-        Collection<StatementContextBase<?, ?, ?>> effectiveSubstatement = parent.effectiveSubstatements();
-
-        Collection<StatementContextBase<?, ?, ?>> allSubstatements = new LinkedList<>();
-        allSubstatements.addAll(declaredSubstatement);
-        allSubstatements.addAll(effectiveSubstatement);
-
-        for (StatementContextBase<?, ?, ?> substatement : allSubstatements) {
-            if (nextPathQName.equals(substatement.getStatementArgument())) {
-                return substatement;
-            }
-        }
-
-        return null;
-    }
-
     @Nullable
     public static StatementContextBase<?, ?, ?> findNode(final StatementContextBase<?, ?, ?> rootStmtCtx,
             final SchemaNodeIdentifier node) {
-        return findNode(rootStmtCtx, node.getPathFromRoot());
+        StatementContextBase<?, ?, ?> current = rootStmtCtx;
+        Iterator<QName> arguments = node.getPathFromRoot().iterator();
+        while(current != null && arguments.hasNext()) {
+            current = (StatementContextBase<?, ?, ?>) current.getFromNamespace(ChildSchemaNodes.class, arguments.next());
+        }
+        return current;
     }
 
     public static SchemaPath getSchemaPath(final StmtContext<?, ?, ?> ctx) {
index fd990136a0538abe786acd248b047171d767e2e0..4c0c2d8ef3399d0302986feead00e68eb451842e 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
 import static org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.global;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.sourceLocal;
+import static org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.statementLocal;
 import static org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.treeScoped;
 import static org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
 
@@ -85,6 +86,7 @@ public final class YangInferencePipeline {
             .addSupport(new YinElementStatementImpl.Definition())
             .addSupport(new ArgumentStatementImpl.Definition())
             .addSupport(new ExtensionStatementImpl.Definition())
+            .addSupport(global(ChildSchemaNodes.class))
             .addSupport(global(ExtensionNamespace.class))
             .addSupport(new TypedefStatementImpl.Definition())
             .addSupport(treeScoped(TypeNamespace.class))