YANGTOOLS-706: reorganize statement definitions
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / list / ListStatementImpl.java
@@ -5,14 +5,12 @@
  * 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.list;
 
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 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.DataDefinitionStatement;
@@ -32,77 +30,11 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypedefStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
 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.ListEffectiveStatementImpl;
-
-public class ListStatementImpl extends AbstractDeclaredStatement<QName> implements ListStatement {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .LIST)
-            .addAny(YangStmtMapping.ANYXML)
-            .addAny(YangStmtMapping.CHOICE)
-            .addOptional(YangStmtMapping.CONFIG)
-            .addAny(YangStmtMapping.CONTAINER)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.GROUPING)
-            .addAny(YangStmtMapping.IF_FEATURE)
-            .addOptional(YangStmtMapping.KEY)
-            .addAny(YangStmtMapping.LEAF)
-            .addAny(YangStmtMapping.LEAF_LIST)
-            .addAny(YangStmtMapping.LIST)
-            .addOptional(YangStmtMapping.MAX_ELEMENTS)
-            .addOptional(YangStmtMapping.MIN_ELEMENTS)
-            .addAny(YangStmtMapping.MUST)
-            .addOptional(YangStmtMapping.ORDERED_BY)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addAny(YangStmtMapping.TYPEDEF)
-            .addAny(YangStmtMapping.UNIQUE)
-            .addAny(YangStmtMapping.USES)
-            .addOptional(YangStmtMapping.WHEN)
-            .build();
-
-    protected ListStatementImpl(final StmtContext<QName, ListStatement, ?> context) {
-        super(context);
-    }
-
-    public static class Definition
-            extends AbstractQNameStatementSupport<ListStatement, EffectiveStatement<QName, ListStatement>> {
-
-        public Definition() {
-            super(YangStmtMapping.LIST);
-        }
-
-        @Override
-        public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-            return StmtContextUtils.qnameFromArgument(ctx, value);
-        }
 
-        @Override
-        public void onStatementAdded(
-                final Mutable<QName, ListStatement, EffectiveStatement<QName, ListStatement>> stmt) {
-            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
-        }
-
-        @Override
-        public ListStatement createDeclared(
-                final StmtContext<QName, ListStatement, ?> ctx) {
-            return new ListStatementImpl(ctx);
-        }
-
-        @Override
-        public EffectiveStatement<QName, ListStatement> createEffective(
-                final StmtContext<QName, ListStatement, EffectiveStatement<QName, ListStatement>> ctx) {
-            return new ListEffectiveStatementImpl(ctx);
-        }
-
-        @Override
-        protected SubstatementValidator getSubstatementValidator() {
-            return SUBSTATEMENT_VALIDATOR;
-        }
+final class ListStatementImpl extends AbstractDeclaredStatement<QName> implements ListStatement {
+    ListStatementImpl(final StmtContext<QName, ListStatement, ?> context) {
+        super(context);
     }
 
     @Nonnull
@@ -203,7 +135,7 @@ public class ListStatementImpl extends AbstractDeclaredStatement<QName> implemen
     }
 
     @Override
-    public final Collection<? extends NotificationStatement> getNotifications() {
+    public Collection<? extends NotificationStatement> getNotifications() {
         return allDeclared(NotificationStatement.class);
     }
 }