import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseQNameStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.InferenceAction;
private static final BaseStatementSupport INSTANCE = new BaseStatementSupport();
private BaseStatementSupport() {
- super(YangStmtMapping.BASE);
+ super(YangStmtMapping.BASE, StatementPolicy.reject());
}
public static BaseStatementSupport getInstance() {
public void onStatementDefinitionDeclared(final Mutable<QName, BaseStatement, BaseEffectiveStatement> baseStmtCtx) {
final Mutable<?, ?, ?> baseParentCtx = baseStmtCtx.coerceParentContext();
if (baseParentCtx.producesDeclared(IdentityStatement.class)) {
- final QName baseIdentityQName = baseStmtCtx.coerceStatementArgument();
+ final QName baseIdentityQName = baseStmtCtx.getArgument();
final ModelActionBuilder baseIdentityAction = baseStmtCtx.newInferenceAction(
ModelProcessingPhase.STATEMENT_DEFINITION);
baseIdentityAction.requiresCtx(baseStmtCtx, IdentityNamespace.class, baseIdentityQName,
@Override
public void prerequisiteFailed(final Collection<? extends Prerequisite<?>> failed) {
- throw new InferenceException(baseStmtCtx.getStatementSourceReference(),
- "Unable to resolve identity %s and base identity %s",
- baseParentCtx.getStatementArgument(), baseStmtCtx.getStatementArgument());
+ throw new InferenceException(baseStmtCtx, "Unable to resolve identity %s and base identity %s",
+ baseParentCtx.argument(), baseStmtCtx.argument());
}
});
}
@Override
protected BaseStatement createDeclared(final StmtContext<QName, BaseStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return new RegularBaseStatement(ctx.coerceStatementArgument(), substatements);
+ return new RegularBaseStatement(ctx.getArgument(), substatements);
}
@Override
protected BaseStatement createEmptyDeclared(final StmtContext<QName, BaseStatement, ?> ctx) {
- return new EmptyBaseStatement(ctx.coerceStatementArgument());
+ return new EmptyBaseStatement(ctx.getArgument());
}
@Override
- protected BaseEffectiveStatement createEffective(
- final StmtContext<QName, BaseStatement, BaseEffectiveStatement> ctx, final BaseStatement declared,
+ protected BaseEffectiveStatement createEffective(final Current<QName, BaseStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- return new RegularBaseEffectiveStatement(declared, substatements);
- }
-
- @Override
- protected BaseEffectiveStatement createEmptyEffective(
- final StmtContext<QName, BaseStatement, BaseEffectiveStatement> ctx, final BaseStatement declared) {
- return new EmptyBaseEffectiveStatement(declared);
+ return substatements.isEmpty() ? new EmptyBaseEffectiveStatement(stmt.declared())
+ : new RegularBaseEffectiveStatement(stmt.declared(), substatements);
}
}