YANGTOOLS-706: reorganize statement definitions
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / leaf / LeafStatementImpl.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.leaf;
 
 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.ConfigStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
@@ -26,74 +24,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UnitsStatement;
 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.LeafEffectiveStatementImpl;
 
-public class LeafStatementImpl extends AbstractDeclaredStatement<QName> implements LeafStatement {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .LEAF)
-            .addOptional(YangStmtMapping.CONFIG)
-            .addOptional(YangStmtMapping.DEFAULT)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.IF_FEATURE)
-            .addOptional(YangStmtMapping.MANDATORY)
-            .addAny(YangStmtMapping.MUST)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addOptional(YangStmtMapping.STATUS)
-            .addMandatory(YangStmtMapping.TYPE)
-            .addOptional(YangStmtMapping.UNITS)
-            .addOptional(YangStmtMapping.WHEN)
-            .build();
-
-    protected LeafStatementImpl(final StmtContext<QName, LeafStatement, ?> context) {
+final class LeafStatementImpl extends AbstractDeclaredStatement<QName> implements LeafStatement {
+    LeafStatementImpl(final StmtContext<QName, LeafStatement, ?> context) {
         super(context);
     }
 
-    public static class Definition
-            extends AbstractQNameStatementSupport<LeafStatement, EffectiveStatement<QName, LeafStatement>> {
-
-        public Definition() {
-            super(YangStmtMapping.LEAF);
-        }
-
-        @Override public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
-            return StmtContextUtils.qnameFromArgument(ctx,value);
-        }
-
-        @Override
-        public void onStatementAdded(final Mutable<QName, LeafStatement,
-                EffectiveStatement<QName, LeafStatement>> stmt) {
-            stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt);
-        }
-
-        @Override
-        public LeafStatement createDeclared(final StmtContext<QName, LeafStatement, ?> ctx) {
-            return new LeafStatementImpl(ctx);
-        }
-
-        @Override
-        public EffectiveStatement<QName, LeafStatement> createEffective(
-                final StmtContext<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> ctx) {
-            return new LeafEffectiveStatementImpl(ctx);
-        }
-
-        @Override
-        protected SubstatementValidator getSubstatementValidator() {
-            return SUBSTATEMENT_VALIDATOR;
-        }
-
-        @Override
-        public void onFullDefinitionDeclared(
-                final Mutable<QName, LeafStatement, EffectiveStatement<QName, LeafStatement>> ctx) {
-            super.onFullDefinitionDeclared(ctx);
-            StmtContextUtils.validateIfFeatureAndWhenOnListKeys(ctx);
-        }
-    }
-
     @Nullable
     @Override
     public Collection<? extends MustStatement> getMusts() {