import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.Ordering;
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.model.api.stmt.OrderedByEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.OrderedByStatement;
+import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatementDecorators;
import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements;
import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements;
+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;
extends AbstractStatementSupport<Ordering, OrderedByStatement, OrderedByEffectiveStatement> {
private static final SubstatementValidator SUBSTATEMENT_VALIDATOR =
SubstatementValidator.builder(YangStmtMapping.ORDERED_BY).build();
- private static final OrderedByStatementSupport INSTANCE = new OrderedByStatementSupport();
/*
* Ordered-by has low argument cardinality, hence we can reuse them in case declaration does not have any
private static final @NonNull OrderedByEffectiveStatement EMPTY_USER_EFF =
EffectiveStatements.createOrderedBy(EMPTY_USER_DECL);
- private OrderedByStatementSupport() {
- super(YangStmtMapping.ORDERED_BY, StatementPolicy.contextIndependent());
- }
-
- public static OrderedByStatementSupport getInstance() {
- return INSTANCE;
+ public OrderedByStatementSupport(final YangParserConfiguration config) {
+ super(YangStmtMapping.ORDERED_BY, StatementPolicy.contextIndependent(), config, SUBSTATEMENT_VALIDATOR);
}
@Override
}
}
- @Override
- protected SubstatementValidator getSubstatementValidator() {
- return SUBSTATEMENT_VALIDATOR;
- }
-
@Override
protected OrderedByStatement createDeclared(final StmtContext<Ordering, OrderedByStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return DeclaredStatements.createOrderedBy(ctx.getArgument(), substatements);
+ if (substatements.isEmpty()) {
+ final Ordering argument = ctx.getArgument();
+ switch (argument) {
+ case SYSTEM:
+ return EMPTY_SYSTEM_DECL;
+ case USER:
+ return EMPTY_USER_DECL;
+ default:
+ throw new IllegalStateException("Unhandled argument " + argument);
+ }
+ } else {
+ return DeclaredStatements.createOrderedBy(ctx.getArgument(), substatements);
+ }
}
@Override
- protected OrderedByStatement createEmptyDeclared(final StmtContext<Ordering, OrderedByStatement, ?> ctx) {
- final Ordering argument = ctx.getArgument();
- switch (argument) {
- case SYSTEM:
- return EMPTY_SYSTEM_DECL;
- case USER:
- return EMPTY_USER_DECL;
- default:
- throw new IllegalStateException("Unhandled argument " + argument);
- }
+ protected OrderedByStatement attachDeclarationReference(final OrderedByStatement stmt,
+ final DeclarationReference reference) {
+ return DeclaredStatementDecorators.decorateOrderedBy(stmt, reference);
}
@Override