package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
import com.google.common.base.Verify;
-import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import java.util.ArrayList;
import java.util.Collection;
-import java.util.List;
import java.util.Objects;
import java.util.Set;
import java.util.regex.Pattern;
super(context);
}
- public static class Definition extends
- AbstractStatementSupport<SchemaNodeIdentifier, AugmentStatement, EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> {
+ public static class Definition extends AbstractStatementSupport<SchemaNodeIdentifier, AugmentStatement,
+ EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> {
public Definition() {
super(YangStmtMapping.AUGMENT);
@Override
public EffectiveStatement<SchemaNodeIdentifier, AugmentStatement> createEffective(
- final StmtContext<SchemaNodeIdentifier, AugmentStatement, EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> ctx) {
+ final StmtContext<SchemaNodeIdentifier, AugmentStatement,
+ EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> ctx) {
return new AugmentEffectiveStatementImpl(ctx);
}
@Override
- public void onFullDefinitionDeclared(
- final Mutable<SchemaNodeIdentifier, AugmentStatement, EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> augmentNode) {
+ public void onFullDefinitionDeclared(final Mutable<SchemaNodeIdentifier, AugmentStatement,
+ EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>> augmentNode) {
if (!augmentNode.isSupportedByFeatures()) {
return;
}
final ModelActionBuilder augmentAction = augmentNode.newInferenceAction(
ModelProcessingPhase.EFFECTIVE_MODEL);
- final ModelActionBuilder.Prerequisite<StmtContext<SchemaNodeIdentifier, AugmentStatement, EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>>> sourceCtxPrereq =
+ final Prerequisite<StmtContext<SchemaNodeIdentifier, AugmentStatement,
+ EffectiveStatement<SchemaNodeIdentifier, AugmentStatement>>> sourceCtxPrereq =
augmentAction.requiresCtx(augmentNode, ModelProcessingPhase.EFFECTIVE_MODEL);
final Prerequisite<Mutable<?, ?, EffectiveStatement<?, ?>>> target =
- augmentAction.mutatesEffectiveCtx(getSearchRoot(augmentNode), SchemaNodeIdentifierBuildNamespace.class, augmentNode.getStatementArgument());
- augmentAction.apply(new ModelActionBuilder.InferenceAction() {
+ augmentAction.mutatesEffectiveCtx(getSearchRoot(augmentNode),
+ SchemaNodeIdentifierBuildNamespace.class, augmentNode.getStatementArgument());
+ augmentAction.apply(new ModelActionBuilder.InferenceAction() {
@Override
public void apply(final ModelActionBuilder.InferenceContext ctx) {
final StatementContextBase<?, ?, ?> augmentTargetCtx =
checkForMandatoryNodes(sourceCtx);
}
- final List<Mutable<?, ?, ?>> targetSubStatements = ImmutableList.<Mutable<?, ?, ?>>builder()
- .addAll(targetCtx.mutableDeclaredSubstatements()).addAll(targetCtx.mutableEffectiveSubstatements())
- .build();
-
- for (final Mutable<?, ?, ?> subStatement : targetSubStatements) {
+ for (final StmtContext<?, ?, ?> subStatement : targetCtx.allSubstatements()) {
final boolean sourceIsDataNode = DataDefinitionStatement.class.isAssignableFrom(sourceCtx
.getPublicDefinition().getDeclaredRepresentationClass());
final boolean targetIsDataNode = DataDefinitionStatement.class.isAssignableFrom(subStatement
* b) added to augment body also via uses of a grouping and
* such sub-statements are stored in effective sub-statements collection.
*/
- sourceCtx.declaredSubstatements().forEach(Definition::checkForMandatoryNodes);
- sourceCtx.effectiveSubstatements().forEach(Definition::checkForMandatoryNodes);
+ sourceCtx.allSubstatementsStream().forEach(Definition::checkForMandatoryNodes);
}
InferenceException.throwIf(StmtContextUtils.isMandatoryNode(sourceCtx),
return false;
}
- private static final Set<YangStmtMapping> NOCOPY_DEF_SET = ImmutableSet.of(YangStmtMapping.USES, YangStmtMapping.WHEN,
- YangStmtMapping.DESCRIPTION, YangStmtMapping.REFERENCE, YangStmtMapping.STATUS);
+ private static final Set<YangStmtMapping> NOCOPY_DEF_SET = ImmutableSet.of(YangStmtMapping.USES,
+ YangStmtMapping.WHEN, YangStmtMapping.DESCRIPTION, YangStmtMapping.REFERENCE, YangStmtMapping.STATUS);
public static boolean needToCopyByAugment(final StmtContext<?, ?, ?> stmtContext) {
return !NOCOPY_DEF_SET.contains(stmtContext.getPublicDefinition());