import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
+import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException;
+import org.opendaylight.yangtools.yang.model.spi.stmt.DeclaredStatements;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins;
-import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.SubstatementIndexingException;
import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
private final SubstatementValidator validator;
GroupingStatementSupport(final SubstatementValidator validator) {
- super(YangStmtMapping.GROUPING, StatementPolicy.legacyDeclaredCopy());
+ super(YangStmtMapping.GROUPING, StatementPolicy.copyDeclared(
+ (copy, current, substatements) ->
+ copy.history().isAddedByUses() == current.history().isAddedByUses()
+ && copy.getArgument().equals(current.getArgument())
+ && copy.equalParentPath(current)));
this.validator = requireNonNull(validator);
}
@Override
protected GroupingStatement createDeclared(final StmtContext<QName, GroupingStatement, ?> ctx,
final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- return new RegularGroupingStatement(ctx.getArgument(), substatements);
+ return DeclaredStatements.createGrouping(ctx.getArgument(), substatements);
}
@Override
protected GroupingStatement createEmptyDeclared(final StmtContext<QName, GroupingStatement, ?> ctx) {
- return new EmptyGroupingStatement(ctx.getArgument());
+ return DeclaredStatements.createGrouping(ctx.getArgument());
}
@Override
protected GroupingEffectiveStatement createEffective(final Current<QName, GroupingStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
try {
- return new GroupingEffectiveStatementImpl(stmt.declared(), substatements,
- EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements), stmt.wrapSchemaPath());
+ return new GroupingEffectiveStatementImpl(stmt.declared(), substatements, stmt.effectivePath(),
+ EffectiveStatementMixins.historyAndStatusFlags(stmt.history(), substatements));
} catch (SubstatementIndexingException e) {
throw new SourceException(e.getMessage(), stmt, e);
}