import org.opendaylight.yangtools.rfc6643.model.api.MaxAccess;
import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessEffectiveStatement;
import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessStatement;
+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.BaseStatementSupport;
+import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+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;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
@Beta
public final class MaxAccessStatementSupport
- extends BaseStatementSupport<MaxAccess, MaxAccessStatement, MaxAccessEffectiveStatement> {
- private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
+ extends AbstractStatementSupport<MaxAccess, MaxAccessStatement, MaxAccessEffectiveStatement> {
+ private static final SubstatementValidator VALIDATOR =
SubstatementValidator.builder(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS).build();
- private static final MaxAccessStatementSupport INSTANCE = new MaxAccessStatementSupport();
- private MaxAccessStatementSupport() {
- super(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS);
- }
-
- public static MaxAccessStatementSupport getInstance() {
- return INSTANCE;
+ public MaxAccessStatementSupport(final YangParserConfiguration config) {
+ super(IetfYangSmiv2ExtensionsMapping.MAX_ACCESS, StatementPolicy.contextIndependent(), config, VALIDATOR);
}
@Override
public MaxAccess parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
final MaxAccess val = MaxAccess.forStringLiteral(value);
if (val == null) {
- throw new SourceException(ctx.getStatementSourceReference(), "Invalid max-access value '%s'", value);
+ throw new SourceException(ctx, "Invalid max-access value '%s'", value);
}
return val;
}
return val == null ? rawArgument : val.stringLiteral();
}
- @Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
- }
-
@Override
protected MaxAccessStatement createDeclared(final StmtContext<MaxAccess, MaxAccessStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return new MaxAccessStatementImpl(ctx.coerceStatementArgument(), substatements);
- }
-
- @Override
- protected MaxAccessStatement createEmptyDeclared(final StmtContext<MaxAccess, MaxAccessStatement, ?> ctx) {
- return createDeclared(ctx, ImmutableList.of());
+ return new MaxAccessStatementImpl(ctx.getArgument(), substatements);
}
@Override
- protected MaxAccessEffectiveStatement createEffective(
- final StmtContext<MaxAccess, MaxAccessStatement, MaxAccessEffectiveStatement> ctx,
- final MaxAccessStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- return new MaxAccessEffectiveStatementImpl(declared, substatements, ctx);
+ protected MaxAccessStatement attachDeclarationReference(final MaxAccessStatement stmt,
+ final DeclarationReference reference) {
+ return new RefMaxAccessStatement(stmt, reference);
}
@Override
- protected MaxAccessEffectiveStatement createEmptyEffective(
- final StmtContext<MaxAccess, MaxAccessStatement, MaxAccessEffectiveStatement> ctx,
- final MaxAccessStatement declared) {
- return createEffective(ctx, declared, ImmutableList.of());
+ protected MaxAccessEffectiveStatement createEffective(final Current<MaxAccess, MaxAccessStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ return new MaxAccessEffectiveStatementImpl(stmt, substatements);
}
}
\ No newline at end of file