*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.augment;
-import static com.google.common.base.Verify.verify;
-
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import java.util.List;
-import java.util.Objects;
import java.util.regex.Pattern;
import org.opendaylight.yangtools.yang.common.Empty;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Status;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.ArgumentUtils;
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.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder;
import org.opendaylight.yangtools.yang.parser.spi.meta.ModelActionBuilder.Prerequisite;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
abstract class AbstractAugmentStatementSupport
extends AbstractStatementSupport<SchemaNodeIdentifier, AugmentStatement, AugmentEffectiveStatement> {
(copy, current, substatements) ->
copy.getArgument().equals(current.getArgument())
&& copy.moduleName().getModule().equals(current.moduleName().getModule())
- && Objects.equals(copy.original(), current.original())
), config, validator);
}
final Mutable<SchemaNodeIdentifier, AugmentStatement, AugmentEffectiveStatement> augmentNode) {
if (!augmentNode.isSupportedByFeatures()) {
// We need this augment node to be present, but it should not escape to effective world
- augmentNode.setIsSupportedToBuildEffective(false);
+ augmentNode.setUnsupported();
}
super.onFullDefinitionDeclared(augmentNode);
}
@Override
- protected final AugmentStatement createDeclared(final StmtContext<SchemaNodeIdentifier, AugmentStatement, ?> ctx,
- final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ protected final AugmentStatement createDeclared(final BoundStmtCtx<SchemaNodeIdentifier> ctx,
+ final ImmutableList<DeclaredStatement<?>> substatements) {
return DeclaredStatements.createAugment(ctx.getRawArgument(), ctx.getArgument(), substatements);
}
final List<? extends StmtContext<?, ?, ?>> substatements) {
// Pick up the marker left by onFullDefinitionDeclared() inference action. If it is present we need to pass our
// children through target's implicit wrapping.
- final StatementContextBase<?, ?, ?> implicitDef = stmt.getFromNamespace(AugmentImplicitHandlingNamespace.class,
- Empty.getInstance());
- return implicitDef == null ? substatements : Lists.transform(substatements, subCtx -> {
- verify(subCtx instanceof StatementContextBase);
- return implicitDef.wrapWithImplicit((StatementContextBase<?, ?, ?>) subCtx);
- });
+ final var implicitDef = stmt.getFromNamespace(AugmentImplicitHandlingNamespace.class, Empty.value());
+ return implicitDef == null ? substatements
+ : Lists.transform(substatements, subCtx -> implicitDef.wrapWithImplicit(subCtx));
}
@Override
try {
return EffectiveStatements.createAugment(stmt.declared(), stmt.getArgument(), flags,
- stmt.moduleName().getModule(), substatements, stmt.original(AugmentationSchemaNode.class));
+ stmt.moduleName().getModule(), substatements);
} catch (SubstatementIndexingException e) {
throw new SourceException(e.getMessage(), stmt, e);
}