All StatementSupports must support DeclarationReference
[yangtools.git] / yang / rfc6643-parser-support / src / main / java / org / opendaylight / yangtools / rfc6643 / parser / AliasStatementSupport.java
index bc28c0d10e44d026a7e3a5e74b0b84043542d61f..b8bb4f8dfb9fc06cded46f435c27108cd01469f0 100644 (file)
@@ -13,15 +13,18 @@ import org.opendaylight.yangtools.rfc6643.model.api.AliasEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.AliasStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.IetfYangSmiv2ExtensionsMapping;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStringStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 
 @Beta
 public final class AliasStatementSupport
-        extends BaseStringStatementSupport<AliasStatement, AliasEffectiveStatement> {
+        extends AbstractStringStatementSupport<AliasStatement, AliasEffectiveStatement> {
     private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
             SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.ALIAS)
                 .add(YangStmtMapping.DESCRIPTION, 0, 1)
@@ -29,14 +32,9 @@ public final class AliasStatementSupport
                 .add(YangStmtMapping.STATUS, 0, 1)
                 .add(IetfYangSmiv2ExtensionsMapping.OBJECT_ID, 0, 1)
                 .build();
-    private static final AliasStatementSupport INSTANCE = new AliasStatementSupport();
 
-    private AliasStatementSupport() {
-        super(IetfYangSmiv2ExtensionsMapping.ALIAS);
-    }
-
-    public static AliasStatementSupport getInstance() {
-        return INSTANCE;
+    public AliasStatementSupport(final YangParserConfiguration config) {
+        super(IetfYangSmiv2ExtensionsMapping.ALIAS, StatementPolicy.contextIndependent(), config);
     }
 
     @Override
@@ -47,24 +45,18 @@ public final class AliasStatementSupport
     @Override
     protected AliasStatement createDeclared(final StmtContext<String, AliasStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new AliasStatementImpl(ctx.coerceRawStatementArgument(), substatements);
+        return new AliasStatementImpl(ctx.getRawArgument(), substatements);
     }
 
     @Override
-    protected AliasStatement createEmptyDeclared(final StmtContext<String, AliasStatement, ?> ctx) {
-        return createDeclared(ctx, ImmutableList.of());
+    protected AliasStatement attachDeclarationReference(final AliasStatement stmt,
+            final DeclarationReference reference) {
+        return new RefAliasStatement(stmt, reference);
     }
 
     @Override
-    protected AliasEffectiveStatement createEffective(
-            final StmtContext<String, AliasStatement, AliasEffectiveStatement> ctx, final AliasStatement declared,
+    protected AliasEffectiveStatement createEffective(final Current<String, AliasStatement> stmt,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
-        return new AliasEffectiveStatementImpl(ctx, substatements);
-    }
-
-    @Override
-    protected AliasEffectiveStatement createEmptyEffective(
-            final StmtContext<String, AliasStatement, AliasEffectiveStatement> ctx, final AliasStatement declared) {
-        return createEffective(ctx, declared, ImmutableList.of());
+        return new AliasEffectiveStatementImpl(stmt, substatements);
     }
 }