Migrate input/output statements
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / input / AbstractInputStatementSupport.java
index 9a061c6a6d305d457eb57e705ed768e1062c52b9..34b04e7eec8aa2265fa4f0d3112da9b297293257 100644 (file)
@@ -7,19 +7,20 @@
  */
 package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.input;
 
+import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.namespace.ChildSchemaNodeNamespace;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseOperationContainerStatementSupport;
 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;
 
 abstract class AbstractInputStatementSupport
-        extends AbstractQNameStatementSupport<InputStatement, InputEffectiveStatement> {
+        extends BaseOperationContainerStatementSupport<InputStatement, InputEffectiveStatement> {
     AbstractInputStatementSupport() {
         super(YangStmtMapping.INPUT);
     }
@@ -30,18 +31,28 @@ abstract class AbstractInputStatementSupport
     }
 
     @Override
-    public final void onStatementAdded(final Mutable<QName, InputStatement, InputEffectiveStatement> stmt) {
-        stmt.coerceParentContext().addToNs(ChildSchemaNodeNamespace.class, stmt.coerceStatementArgument(), stmt);
+    protected final InputStatement createDeclared(final StmtContext<QName, InputStatement, ?> ctx,
+            final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+        return new RegularInputStatement(ctx.coerceStatementArgument(), substatements);
     }
 
     @Override
-    public final InputStatement createDeclared(final StmtContext<QName, InputStatement, ?> ctx) {
-        return new InputStatementImpl(ctx);
+    protected final InputStatement createEmptyDeclared(final StmtContext<QName, InputStatement, ?> ctx) {
+        return new EmptyInputStatement(ctx.coerceStatementArgument());
     }
 
     @Override
-    public final InputEffectiveStatement createEffective(
-            final StmtContext<QName, InputStatement, InputEffectiveStatement> ctx) {
-        return new InputEffectiveStatementImpl(ctx);
+    protected final InputEffectiveStatement createDeclaredEffective(final int flags,
+            final StmtContext<QName, InputStatement, InputEffectiveStatement> ctx,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
+            final InputStatement declared) {
+        return new DeclaredInputEffectiveStatement(declared, flags, ctx, substatements);
     }
-}
\ No newline at end of file
+
+    @Override
+    protected final InputEffectiveStatement createUndeclaredEffective(final int flags,
+            final StmtContext<QName, InputStatement, InputEffectiveStatement> ctx,
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+        return new UndeclaredInputEffectiveStatement(flags, ctx, substatements);
+    }
+}