X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2Feffective%2FUsesEffectiveStatementImpl.java;h=a861f354dd5d37abec80825b80232e6cc57ec763;hb=17d60496211e0b223a63329528352ee7e26e14ff;hp=421c11153c541bb3a08ef0f3f296ab8eb0d28988;hpb=e99bf7da4cf4f715e6d899a8c41a8df2853e3055;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UsesEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UsesEffectiveStatementImpl.java index 421c11153c..a861f354dd 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UsesEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/UsesEffectiveStatementImpl.java @@ -7,12 +7,13 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; +import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import java.util.Collection; import java.util.HashMap; -import java.util.HashSet; +import java.util.LinkedHashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -20,6 +21,7 @@ import java.util.Objects; import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; @@ -31,26 +33,26 @@ import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement; import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils; -public final class UsesEffectiveStatementImpl extends EffectiveStatementBase implements UsesNode { +public final class UsesEffectiveStatementImpl extends AbstractEffectiveDocumentedNode implements UsesNode { private final SchemaPath groupingPath; private final boolean addedByUses; private final Map refines; private final Set augmentations; private final List unknownNodes; + private final RevisionAwareXPath whenCondition; public UsesEffectiveStatementImpl( final StmtContext> ctx) { super(ctx); // initGroupingPath - StmtContext> grpCtx = ctx.getFromNamespace( + final StmtContext> grpCtx = ctx.getFromNamespace( GroupingNamespace.class, ctx.getStatementArgument()); - this.groupingPath = Utils.getSchemaPath(grpCtx); + this.groupingPath = grpCtx.getSchemaPath().get(); // initCopyType - List copyTypesFromOriginal = ctx.getCopyHistory(); + final List copyTypesFromOriginal = ctx.getCopyHistory(); if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) { addedByUses = true; } else { @@ -58,28 +60,31 @@ public final class UsesEffectiveStatementImpl extends EffectiveStatementBase> effectiveSubstatements = effectiveSubstatements(); - List unknownNodesInit = new LinkedList<>(); - Set augmentationsInit = new HashSet<>(); - Map refinesInit = new HashMap<>(); - for (EffectiveStatement effectiveStatement : effectiveSubstatements) { + final Collection> effectiveSubstatements = effectiveSubstatements(); + final List unknownNodesInit = new LinkedList<>(); + final Set augmentationsInit = new LinkedHashSet<>(); + final Map refinesInit = new HashMap<>(); + for (final EffectiveStatement effectiveStatement : effectiveSubstatements) { if (effectiveStatement instanceof UnknownSchemaNode) { - UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; + final UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; unknownNodesInit.add(unknownNode); } if (effectiveStatement instanceof AugmentationSchema) { - AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; + final AugmentationSchema augmentationSchema = (AugmentationSchema) effectiveStatement; augmentationsInit.add(augmentationSchema); } if (effectiveStatement instanceof RefineEffectiveStatementImpl) { - RefineEffectiveStatementImpl refineStmt = (RefineEffectiveStatementImpl) effectiveStatement; - SchemaNodeIdentifier identifier = refineStmt.argument(); + final RefineEffectiveStatementImpl refineStmt = (RefineEffectiveStatementImpl) effectiveStatement; + final SchemaNodeIdentifier identifier = refineStmt.argument(); refinesInit.put(identifier.asSchemaPath(), refineStmt.getRefineTargetNode()); } } this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); this.augmentations = ImmutableSet.copyOf(augmentationsInit); this.refines = ImmutableMap.copyOf(refinesInit); + + final WhenEffectiveStatementImpl whenStmt = firstEffective(WhenEffectiveStatementImpl.class); + this.whenCondition = (whenStmt == null) ? null : whenStmt.argument(); } @Override @@ -107,10 +112,16 @@ public final class UsesEffectiveStatementImpl extends EffectiveStatementBase getUnknownSchemaNodes() { return unknownNodes; } + @Override + public Optional getWhenCondition() { + return Optional.fromNullable(whenCondition); + } + @Override public int hashCode() { final int prime = 31; @@ -137,10 +148,8 @@ public final class UsesEffectiveStatementImpl extends EffectiveStatementBase