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=103f5d99c83f07249e8dae6c05ef1182b3120fa1;hb=2ea61b9a680d35c4a20c715efa57c90acb6015e4;hp=aec4f83b7b56836cd6d9925dc7a96fb5d30b9885;hpb=9c6cbdaf5bb5e1ea8066558927e9ea674c0b9d51;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 aec4f83b7b..103f5d99c8 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,19 +7,21 @@ */ 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.ArrayList; import java.util.HashMap; -import java.util.HashSet; -import java.util.LinkedList; +import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; +import javax.annotation.Nonnull; 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; @@ -29,63 +31,63 @@ import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; 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.CopyType; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy; -public final class UsesEffectiveStatementImpl extends DeclaredEffectiveStatementBase 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 = grpCtx.getSchemaPath().get(); // initCopyType - List copyTypesFromOriginal = ctx.getCopyHistory(); - if (copyTypesFromOriginal.contains(TypeOfCopy.ADDED_BY_USES)) { - addedByUses = true; - } else { - addedByUses = false; - } + addedByUses = ctx.getCopyHistory().contains(CopyType.ADDED_BY_USES); // initSubstatementCollections - Collection> effectiveSubstatements = effectiveSubstatements(); - List unknownNodesInit = new LinkedList<>(); - Set augmentationsInit = new HashSet<>(); - Map refinesInit = new HashMap<>(); - for (EffectiveStatement effectiveStatement : effectiveSubstatements) { + final List unknownNodesInit = new ArrayList<>(); + 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(); } + @Nonnull @Override public SchemaPath getGroupingPath() { return groupingPath; } + @Nonnull @Override public Set getAugmentations() { return augmentations; @@ -101,15 +103,24 @@ public final class UsesEffectiveStatementImpl extends DeclaredEffectiveStatement return addedByUses; } + @Nonnull @Override public Map getRefines() { return refines; } + @Nonnull + @Override public List getUnknownSchemaNodes() { return unknownNodes; } + @Nonnull + @Override + public Optional getWhenCondition() { + return Optional.fromNullable(whenCondition); + } + @Override public int hashCode() { final int prime = 31;