X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=parser%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Flist%2FListStatementSupport.java;h=189e695badac4110d3096a097079c82781b8d849;hb=f3f554b604fb5ad6f04e4d4c2439fac69cb72a19;hp=e46523f910dd549788bf9361145f5f2a88d996c2;hpb=cd8adcd1385c3d4fb62545aec9e0bd91c62f0591;p=yangtools.git diff --git a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java index e46523f910..189e695bad 100644 --- a/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java +++ b/parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java @@ -41,11 +41,14 @@ import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingExcept import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStmtUtils; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractSchemaTreeStatementSupport; +import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx; +import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStatementState; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Parent; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Parent.EffectiveConfig; import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException; +import org.opendaylight.yangtools.yang.parser.spi.meta.QNameWithFlagsEffectiveStatementState; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator; @@ -124,8 +127,8 @@ public final class ListStatementSupport } @Override - protected ListStatement createDeclared(final StmtContext ctx, - final ImmutableList> substatements) { + protected ListStatement createDeclared(final BoundStmtCtx ctx, + final ImmutableList> substatements) { return DeclaredStatements.createList(ctx.getArgument(), substatements); } @@ -138,7 +141,7 @@ public final class ListStatementSupport public ListEffectiveStatement copyEffective(final Current stmt, final ListEffectiveStatement original) { return EffectiveStatements.copyList(original, stmt.getArgument(), - computeFlags(stmt, original.effectiveSubstatements()), stmt.original(ListSchemaNode.class)); + computeFlags(stmt, original.effectiveSubstatements())); } @Override @@ -178,13 +181,24 @@ public final class ListStatementSupport try { return EffectiveStatements.createList(stmt.declared(), stmt.getArgument(), flags, substatements, - keyDefinition, EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null), - stmt.original(ListSchemaNode.class)); + keyDefinition, EffectiveStmtUtils.createElementCountConstraint(substatements).orElse(null)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } } + @Override + public EffectiveStatementState extractEffectiveState(final ListEffectiveStatement stmt) { + verify(stmt instanceof ListSchemaNode, "Unexpected statement %s", stmt); + final var schema = (ListSchemaNode) stmt; + return new QNameWithFlagsEffectiveStatementState(stmt.argument(), new FlagsBuilder() + .setHistory(schema) + .setStatus(schema.getStatus()) + .setConfiguration(schema.effectiveConfig().orElse(null)) + .setUserOrdered(schema.isUserOrdered()) + .toFlags()); + } + private static int computeFlags(final Current stmt, final Collection> substatements) { return new FlagsBuilder()