X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-rfc7950%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Frfc7950%2Fstmt%2Fcase_%2FCaseStatementSupport.java;h=8fdf76839600d3829dfe34d4a88c9b75da696ffe;hb=ddcf166646cdc1cac95b2eb9157382b86431c3e8;hp=3903e503eaa2e0f4221cec05e7a658ef5ffbe75c;hpb=32ea68255dc0b93c000ae0ec1df51550b93eb23d;p=yangtools.git diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java index 3903e503ea..8fdf768396 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java @@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableList; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; +import java.util.Collection; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; @@ -26,9 +27,9 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.model.api.stmt.CaseEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement; import org.opendaylight.yangtools.yang.model.api.stmt.StatusEffectiveStatement; +import org.opendaylight.yangtools.yang.model.spi.meta.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder; +import org.opendaylight.yangtools.yang.model.spi.meta.SubstatementIndexingException; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.BaseImplicitStatementSupport; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMixins.EffectiveStatementWithFlags.FlagsBuilder; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.SubstatementIndexingException; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Parent.EffectiveConfig; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -117,12 +118,26 @@ public final class CaseStatementSupport } } + @Override + protected CaseEffectiveStatement copyDeclaredEffective(final Current stmt, + final CaseEffectiveStatement original) { + return new DeclaredCaseEffectiveStatement((DeclaredCaseEffectiveStatement) original, stmt.effectivePath(), + computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class)); + } + + @Override + protected CaseEffectiveStatement copyUndeclaredEffective(final Current stmt, + final CaseEffectiveStatement original) { + return new UndeclaredCaseEffectiveStatement((UndeclaredCaseEffectiveStatement) original, stmt.effectivePath(), + computeFlags(stmt, original.effectiveSubstatements()), stmt.original(CaseSchemaNode.class)); + } + @Override protected CaseEffectiveStatement createDeclaredEffective(final Current stmt, final ImmutableList> substatements) { try { - return new DeclaredCaseEffectiveStatement(stmt.declared(), substatements, computeFlags(stmt, substatements), - stmt.wrapSchemaPath(), findOriginal(stmt)); + return new DeclaredCaseEffectiveStatement(stmt.declared(), substatements, stmt.effectivePath(), + computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } @@ -132,19 +147,15 @@ public final class CaseStatementSupport protected CaseEffectiveStatement createUndeclaredEffective(final Current stmt, final ImmutableList> substatements) { try { - return new UndeclaredCaseEffectiveStatement(substatements, computeFlags(stmt, substatements), - stmt.wrapSchemaPath(), findOriginal(stmt)); + return new UndeclaredCaseEffectiveStatement(substatements, stmt.effectivePath(), + computeFlags(stmt, substatements), stmt.original(CaseSchemaNode.class)); } catch (SubstatementIndexingException e) { throw new SourceException(e.getMessage(), stmt, e); } } - private static @Nullable CaseSchemaNode findOriginal(final Current stmt) { - return (CaseSchemaNode) stmt.original(); - } - private static int computeFlags(final Current stmt, - final ImmutableList> substatements) { + final Collection> substatements) { final Boolean config; final EffectiveConfig effective = stmt.effectiveConfig(); switch (effective) { @@ -174,7 +185,7 @@ public final class CaseStatementSupport @SuppressFBWarnings(value = "NP_BOOLEAN_RETURN_NULL", justification = "Internal use tagged with @Nullable") private static @Nullable Boolean substatementEffectiveConfig( - final ImmutableList> substatements) { + final Collection> substatements) { for (EffectiveStatement stmt : substatements) { if (stmt instanceof DataSchemaNode) { final Optional opt = ((DataSchemaNode) stmt).effectiveConfig();