import com.google.common.collect.Iterables;
import com.google.common.collect.Maps;
import com.google.common.collect.SetMultimap;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.opendaylight.yangtools.yang.common.Empty;
import org.opendaylight.yangtools.yang.parser.rfc7950.reactor.YangValidationBundles;
import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
deviateAction.apply(new InferenceAction() {
@Override
public void apply(final InferenceContext ctx) {
+ if (!deviateStmtCtx.isSupportedToBuildEffective()) {
+ // We are not building effective model, hence we should not be performing any effects
+ return;
+ }
+
final var sourceNodeStmtCtx = sourceCtxPrerequisite.resolve(ctx);
final var targetNodeStmtCtx = targetCtxPrerequisite.resolve(ctx);
throw new InferenceException(deviateStmtCtx.coerceParentContext(), "Deviation target '%s' not found.",
deviationTarget);
}
+
+ @Override
+ public void prerequisiteUnavailable(final Prerequisite<?> unavail) {
+ if (targetCtxPrerequisite.equals(unavail)) {
+ deviateStmtCtx.setUnsupported();
+ } else {
+ prerequisiteFailed(List.of(unavail));
+ }
+ }
});
}
}
@Override
- protected final DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx,
- final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ protected final DeviateStatement createDeclared(final BoundStmtCtx<DeviateKind> ctx,
+ final ImmutableList<DeclaredStatement<?>> substatements) {
return DeclaredStatements.createDeviate(ctx.getArgument(), substatements);
}
return false;
}
- @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
- justification = "https://github.com/spotbugs/spotbugs/issues/811")
private static void performDeviateAdd(final StmtContext<?, ?, ?> deviateStmtCtx,
final Mutable<?, ?, ?> targetCtx) {
for (StmtContext<?, ?, ?> originalStmtCtx : deviateStmtCtx.declaredSubstatements()) {
copyStatement(stmtCtxToBeAdded, targetCtx);
}
- @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
- justification = "https://github.com/spotbugs/spotbugs/issues/811")
private static void performDeviateReplace(final StmtContext<?, ?, ?> deviateStmtCtx,
final Mutable<?, ?, ?> targetCtx) {
for (StmtContext<?, ?, ?> originalStmtCtx : deviateStmtCtx.declaredSubstatements()) {
stmtToBeReplaced.getStatementName(), targetCtx.argument());
}
- @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
- justification = "https://github.com/spotbugs/spotbugs/issues/811")
private static void performDeviateDelete(final StmtContext<?, ?, ?> deviateStmtCtx,
final Mutable<?, ?, ?> targetCtx) {
for (StmtContext<?, ?, ?> originalStmtCtx : deviateStmtCtx.declaredSubstatements()) {