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;
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;
}
}
+ @Override
+ protected CaseEffectiveStatement copyDeclaredEffective(final Current<QName, CaseStatement> 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<QName, CaseStatement> 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<QName, CaseStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> 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);
}
protected CaseEffectiveStatement createUndeclaredEffective(final Current<QName, CaseStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> 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<? extends EffectiveStatement<?, ?>> substatements) {
+ final Collection<? extends EffectiveStatement<?, ?>> substatements) {
final Boolean config;
final EffectiveConfig effective = stmt.effectiveConfig();
switch (effective) {
@SuppressFBWarnings(value = "NP_BOOLEAN_RETURN_NULL", justification = "Internal use tagged with @Nullable")
private static @Nullable Boolean substatementEffectiveConfig(
- final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ final Collection<? extends EffectiveStatement<?, ?>> substatements) {
for (EffectiveStatement<?, ?> stmt : substatements) {
if (stmt instanceof DataSchemaNode) {
final Optional<Boolean> opt = ((DataSchemaNode) stmt).effectiveConfig();