YANGTOOLS-706: reorganize statement definitions
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / container / ContainerStatementImpl.java
@@ -5,13 +5,11 @@
  * 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;
+package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.container;
 
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
@@ -27,72 +25,11 @@ import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
 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.AbstractQNameStatementSupport;
 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.meta.StmtContextUtils;
-import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEffectiveStatementImpl;
-
-public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .CONTAINER)
-            .addAny(YangStmtMapping.ANYXML)
-            .addAny(YangStmtMapping.CHOICE)
-            .addOptional(YangStmtMapping.CONFIG)
-            .addAny(YangStmtMapping.CONTAINER)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.GROUPING)
-            .addAny(YangStmtMapping.IF_FEATURE)
-            .addAny(YangStmtMapping.LEAF)
-            .addAny(YangStmtMapping.LEAF_LIST)
-            .addAny(YangStmtMapping.LIST)
-            .addAny(YangStmtMapping.MUST)
-            .addOptional(YangStmtMapping.PRESENCE)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addAny(YangStmtMapping.TYPEDEF)
-            .addAny(YangStmtMapping.USES)
-            .addOptional(YangStmtMapping.WHEN)
-            .build();
-
-    protected ContainerStatementImpl(final StmtContext<QName, ContainerStatement,?> context) {
-        super(context);
-    }
 
-    public static class Definition
-            extends AbstractQNameStatementSupport<ContainerStatement, EffectiveStatement<QName, ContainerStatement>> {
-
-        public Definition() {
-            super(YangStmtMapping.CONTAINER);
-        }
-
-        @Override
-        public QName parseArgumentValue(final StmtContext<?,?,?> ctx, final String value) {
-            return StmtContextUtils.qnameFromArgument(ctx,value);
-        }
-
-        @Override
-        public void onStatementAdded(
-                final Mutable<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> stmt) {
-            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
-        }
-
-        @Override
-        public ContainerStatement createDeclared(final StmtContext<QName, ContainerStatement,?> ctx) {
-            return new ContainerStatementImpl(ctx);
-        }
-
-        @Override
-        public EffectiveStatement<QName,ContainerStatement> createEffective(final StmtContext<QName, ContainerStatement,
-                EffectiveStatement<QName,ContainerStatement>> ctx) {
-            return new ContainerEffectiveStatementImpl(ctx);
-        }
-
-        @Override
-        protected SubstatementValidator getSubstatementValidator() {
-            return SUBSTATEMENT_VALIDATOR;
-        }
+final class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
+    ContainerStatementImpl(final StmtContext<QName, ContainerStatement,?> context) {
+        super(context);
     }
 
     @Nonnull
@@ -167,7 +104,7 @@ public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> imp
     }
 
     @Override
-    public final Collection<? extends NotificationStatement> getNotifications() {
+    public Collection<? extends NotificationStatement> getNotifications() {
         return allDeclared(NotificationStatement.class);
     }
 }