Bug 4456 - StackOverflowError on recursive extension definition
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / ContainerStatementImpl.java
index 360aee41e3ed5599563382708fad26836834c90f..e68b8ed12b9155ecb0e69d5a7fce172bce21e868 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEffectiveStatementImpl;
+
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.Rfc6020Mapping;
@@ -26,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 {
 
@@ -44,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);
@@ -51,7 +60,7 @@ public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> imp
 
         @Override
         public EffectiveStatement<QName,ContainerStatement> createEffective(StmtContext<QName,ContainerStatement,EffectiveStatement<QName,ContainerStatement>> ctx) {
-           throw new UnsupportedOperationException();
+           return new ContainerEffectiveStatementImpl(ctx);
         }
 
     }