Teach YANG parser to retain DeclarationReference
[yangtools.git] / yang / rfc6643-parser-support / src / main / java / org / opendaylight / yangtools / rfc6643 / parser / AliasStatementSupport.java
index bc28c0d10e44d026a7e3a5e74b0b84043542d61f..0d642de549794391a3c4d1689adaa9dbcc294911 100644 (file)
@@ -15,13 +15,15 @@ import org.opendaylight.yangtools.rfc6643.model.api.IetfYangSmiv2ExtensionsMappi
 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.parser.rfc7950.stmt.BaseStringStatementSupport;
+import org.opendaylight.yangtools.yang.model.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 +31,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 +44,12 @@ public final class AliasStatementSupport
     @Override
     protected AliasStatement createDeclared(final StmtContext<String, AliasStatement, ?> ctx,
             final ImmutableList<? extends DeclaredStatement<?>> substatements) {
-        return new AliasStatementImpl(ctx.coerceRawStatementArgument(), substatements);
-    }
-
-    @Override
-    protected AliasStatement createEmptyDeclared(final StmtContext<String, AliasStatement, ?> ctx) {
-        return createDeclared(ctx, ImmutableList.of());
+        return new AliasStatementImpl(ctx.getRawArgument(), substatements);
     }
 
     @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);
     }
 }