YANGTOOLS-706: reorganize statement definitions
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / module / AbstractModuleStatementSupport.java
@@ -5,7 +5,7 @@
  * 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.module;
 
 import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
 
@@ -31,7 +31,6 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
 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.spi.source.ImpPrefixToNamespace;
 import org.opendaylight.yangtools.yang.parser.spi.source.ImportPrefixToModuleCtx;
 import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
@@ -42,63 +41,31 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNamespaceForBelon
 import org.opendaylight.yangtools.yang.parser.spi.source.ModuleQNameToModuleName;
 import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ModuleEffectiveStatementImpl;
 
-public class ModuleStatementSupport extends
+abstract class AbstractModuleStatementSupport extends
         AbstractStatementSupport<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> {
-    private static final SubstatementValidator SUBSTATEMENT_VALIDATOR = SubstatementValidator.builder(YangStmtMapping
-            .MODULE)
-            .addAny(YangStmtMapping.ANYXML)
-            .addAny(YangStmtMapping.AUGMENT)
-            .addAny(YangStmtMapping.CHOICE)
-            .addOptional(YangStmtMapping.CONTACT)
-            .addAny(YangStmtMapping.CONTAINER)
-            .addOptional(YangStmtMapping.DESCRIPTION)
-            .addAny(YangStmtMapping.DEVIATION)
-            .addAny(YangStmtMapping.EXTENSION)
-            .addAny(YangStmtMapping.FEATURE)
-            .addAny(YangStmtMapping.GROUPING)
-            .addAny(YangStmtMapping.IDENTITY)
-            .addAny(YangStmtMapping.IMPORT)
-            .addAny(YangStmtMapping.INCLUDE)
-            .addAny(YangStmtMapping.LEAF)
-            .addAny(YangStmtMapping.LEAF_LIST)
-            .addAny(YangStmtMapping.LIST)
-            .addMandatory(YangStmtMapping.NAMESPACE)
-            .addAny(YangStmtMapping.NOTIFICATION)
-            .addOptional(YangStmtMapping.ORGANIZATION)
-            .addMandatory(YangStmtMapping.PREFIX)
-            .addOptional(YangStmtMapping.REFERENCE)
-            .addAny(YangStmtMapping.REVISION)
-            .addAny(YangStmtMapping.RPC)
-            .addAny(YangStmtMapping.TYPEDEF)
-            .addAny(YangStmtMapping.USES)
-            .addOptional(YangStmtMapping.YANG_VERSION)
-            .addOptional(SupportedExtensionsMapping.OPENCONFIG_VERSION)
-            .build();
-
-    public ModuleStatementSupport() {
+    AbstractModuleStatementSupport() {
         super(YangStmtMapping.MODULE);
     }
 
     @Override
-    public String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+    public final String parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
         return value;
     }
 
     @Override
-    public ModuleStatement createDeclared(final StmtContext<String, ModuleStatement, ?> ctx) {
+    public final ModuleStatement createDeclared(final StmtContext<String, ModuleStatement, ?> ctx) {
         return new ModuleStatementImpl(ctx);
     }
 
     @Override
-    public EffectiveStatement<String, ModuleStatement> createEffective(
+    public final EffectiveStatement<String, ModuleStatement> createEffective(
             final StmtContext<String, ModuleStatement, EffectiveStatement<String, ModuleStatement>> ctx) {
         return new ModuleEffectiveStatementImpl(ctx);
     }
 
     @Override
-    public void onPreLinkageDeclared(final Mutable<String, ModuleStatement,
+    public final void onPreLinkageDeclared(final Mutable<String, ModuleStatement,
             EffectiveStatement<String, ModuleStatement>> stmt) {
         final String moduleName = stmt.getStatementArgument();
 
@@ -122,7 +89,7 @@ public class ModuleStatementSupport extends
     }
 
     @Override
-    public void onLinkageDeclared(final Mutable<String, ModuleStatement,
+    public final void onLinkageDeclared(final Mutable<String, ModuleStatement,
             EffectiveStatement<String, ModuleStatement>> stmt) {
 
         final Optional<URI> moduleNs = Optional.ofNullable(firstAttributeOf(stmt.declaredSubstatements(),
@@ -170,9 +137,4 @@ public class ModuleStatementSupport extends
         final SemVerSourceIdentifier id = SemVerSourceIdentifier.create(moduleName, moduleSemVer);
         stmt.addToNs(SemanticVersionModuleNamespace.class, id, stmt);
     }
-
-    @Override
-    protected SubstatementValidator getSubstatementValidator() {
-        return SUBSTATEMENT_VALIDATOR;
-    }
 }