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%2Fbuilder%2Fimpl%2FUsesNodeBuilderImpl.java;h=6e4e2909524d7d7abdccfa432ed3893534b32707;hb=42abb28b99a02f9580f4676ce5c315628e5bcd24;hp=c790874a3072934901ebf1a4c0b036d5e6156f18;hpb=dcedede24f6a7cc24520306abf5622f179033144;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java index c790874a30..6e4e290952 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/builder/impl/UsesNodeBuilderImpl.java @@ -7,83 +7,87 @@ */ package org.opendaylight.yangtools.yang.parser.builder.impl; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; - import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.GroupingDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaPath; -import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.UsesNode; -import org.opendaylight.yangtools.yang.parser.builder.api.AbstractBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.AugmentationSchemaBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.Builder; import org.opendaylight.yangtools.yang.parser.builder.api.DataNodeContainerBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.DataSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.GroupingBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.RefineBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.SchemaNodeBuilder; +import org.opendaylight.yangtools.yang.parser.builder.api.UnknownSchemaNodeBuilder; import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; -import org.opendaylight.yangtools.yang.parser.util.Comparators; -import org.opendaylight.yangtools.yang.parser.util.RefineHolder; +import org.opendaylight.yangtools.yang.parser.builder.util.AbstractBuilder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +/** + * @deprecated Pre-Beryllium implementation, scheduled for removal. + */ +@Deprecated public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNodeBuilder { - private boolean isBuilt; private UsesNodeImpl instance; private DataNodeContainerBuilder parentBuilder; - private final String groupingPathString; + private final SchemaPath targetGroupingPath; private SchemaPath groupingPath; private GroupingDefinition groupingDefinition; private GroupingBuilder groupingBuilder; private boolean addedByUses; private boolean augmenting; private boolean resolved; - private final Set augments = new HashSet<>(); - private final Set addedAugments = new HashSet<>(); + private final Set augmentationBuilders = new HashSet<>(); private final List refineBuilders = new ArrayList<>(); - private final List refines = new ArrayList<>(); + private final List refines = new ArrayList<>(); - - public UsesNodeBuilderImpl(final String moduleName, final int line, final String groupingName) { + public UsesNodeBuilderImpl(final String moduleName, final int line, final SchemaPath targetGroupingPath) { super(moduleName, line); - this.groupingPathString = groupingName; + this.targetGroupingPath = targetGroupingPath; } @Override public UsesNode build() { - if (!isBuilt) { - instance = new UsesNodeImpl(groupingPath); - instance.setAddedByUses(addedByUses); + if (instance != null) { + return instance; + } - // AUGMENTATIONS - for (AugmentationSchemaBuilder builder : addedAugments) { - augments.add(builder.build()); - } - instance.setAugmentations(augments); + instance = new UsesNodeImpl(groupingPath); + instance.setAddedByUses(addedByUses); - // REFINES - final Map refineNodes = new HashMap<>(); - for (SchemaNodeBuilder refineBuilder : refineBuilders) { - SchemaNode refineNode = refineBuilder.build(); - refineNodes.put(refineNode.getPath(), refineNode); + // AUGMENTATIONS + final Set augments = new HashSet<>(); + for (AugmentationSchemaBuilder builder : augmentationBuilders) { + if (!builder.isUnsupportedTarget()) { + augments.add(builder.build()); } - instance.setRefines(refineNodes); + } + instance.augmentations = ImmutableSet.copyOf(augments); - // UNKNOWN NODES - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - Collections.sort(unknownNodes, Comparators.SCHEMA_NODE_COMP); - instance.addUnknownSchemaNodes(unknownNodes); + // REFINES + final Map refineNodes = new HashMap<>(); + for (SchemaNodeBuilder refineBuilder : refineBuilders) { + SchemaNode refineNode = refineBuilder.build(); + refineNodes.put(refineNode.getPath(), refineNode); + } + instance.refines = ImmutableMap.copyOf(refineNodes); - isBuilt = true; + // UNKNOWN NODES + for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { + unknownNodes.add(b.build()); } + instance.unknownNodes = ImmutableList.copyOf(unknownNodes); return instance; } @@ -94,9 +98,9 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setParent(Builder parent) { + public void setParent(final Builder parent) { if (!(parent instanceof DataNodeContainerBuilder)) { - throw new YangParseException(moduleName, line, + throw new YangParseException(getModuleName(), getLine(), "Parent of 'uses' has to be instance of DataNodeContainerBuilder, but was: '" + parent + "'."); } this.parentBuilder = (DataNodeContainerBuilder) parent; @@ -113,7 +117,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setGroupingDefinition(GroupingDefinition groupingDefinition) { + public void setGroupingDefinition(final GroupingDefinition groupingDefinition) { this.groupingDefinition = groupingDefinition; if (groupingDefinition != null) { this.groupingPath = groupingDefinition.getPath(); @@ -126,7 +130,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setGrouping(GroupingBuilder grouping) { + public void setGrouping(final GroupingBuilder grouping) { this.groupingBuilder = grouping; if (groupingBuilder != null) { this.groupingPath = groupingBuilder.getPath(); @@ -134,24 +138,25 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public String getGroupingPathAsString() { - return groupingPathString; + public SchemaPath getTargetGroupingPath() { + return targetGroupingPath; } @Override public Set getAugmentations() { - return addedAugments; + return augmentationBuilders; } @Override public void addAugment(final AugmentationSchemaBuilder augmentBuilder) { - addedAugments.add(augmentBuilder); + augmentationBuilders.add(augmentBuilder); } @Override public boolean isAddedByUses() { return addedByUses; } + @Override public void setAddedByUses(final boolean addedByUses) { this.addedByUses = addedByUses; @@ -163,7 +168,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setAugmenting(boolean augmenting) { + public void setAugmenting(final boolean augmenting) { this.augmenting = augmenting; } @@ -173,7 +178,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setResolved(boolean resolved) { + public void setResolved(final boolean resolved) { this.resolved = resolved; } @@ -183,17 +188,17 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void addRefineNode(DataSchemaNodeBuilder refineNode) { + public void addRefineNode(final DataSchemaNodeBuilder refineNode) { refineBuilders.add(refineNode); } @Override - public List getRefines() { + public List getRefines() { return refines; } @Override - public void addRefine(RefineHolder refine) { + public void addRefine(final RefineBuilder refine) { refines.add(refine); } @@ -201,13 +206,13 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((groupingPathString == null) ? 0 : groupingPathString.hashCode()); - result = prime * result + ((parentBuilder == null) ? 0 : parentBuilder.hashCode()); + result = prime * result + Objects.hashCode(groupingPath); + result = prime * result + Objects.hashCode(parentBuilder); return result; } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -218,11 +223,11 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo return false; } UsesNodeBuilderImpl other = (UsesNodeBuilderImpl) obj; - if (groupingPathString == null) { - if (other.groupingPathString != null) { + if (groupingPath == null) { + if (other.groupingPath != null) { return false; } - } else if (!groupingPathString.equals(other.groupingPathString)) { + } else if (!groupingPath.equals(other.groupingPath)) { return false; } if (parentBuilder == null) { @@ -237,113 +242,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo @Override public String toString() { - return "uses '" + groupingPathString + "'"; - } - - private static final class UsesNodeImpl implements UsesNode { - private final SchemaPath groupingPath; - private Set augmentations = Collections.emptySet(); - private boolean addedByUses; - private Map refines = Collections.emptyMap(); - private final List unknownNodes = new ArrayList<>(); - - private UsesNodeImpl(final SchemaPath groupingPath) { - this.groupingPath = groupingPath; - } - - @Override - public SchemaPath getGroupingPath() { - return groupingPath; - } - - @Override - public Set getAugmentations() { - return augmentations; - } - - private void setAugmentations(final Set augmentations) { - if (augmentations != null) { - this.augmentations = augmentations; - } - } - - @Override - public boolean isAugmenting() { - return false; - } - - @Override - public boolean isAddedByUses() { - return addedByUses; - } - - private void setAddedByUses(final boolean addedByUses) { - this.addedByUses = addedByUses; - } - - @Override - public Map getRefines() { - return refines; - } - - private void setRefines(Map refines) { - if (refines != null) { - this.refines = refines; - } - } - - private void addUnknownSchemaNodes(List unknownSchemaNodes) { - if (unknownSchemaNodes != null) { - this.unknownNodes.addAll(unknownSchemaNodes); - } - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((groupingPath == null) ? 0 : groupingPath.hashCode()); - result = prime * result + ((augmentations == null) ? 0 : augmentations.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - final UsesNodeImpl other = (UsesNodeImpl) obj; - if (groupingPath == null) { - if (other.groupingPath != null) { - return false; - } - } else if (!groupingPath.equals(other.groupingPath)) { - return false; - } - if (augmentations == null) { - if (other.augmentations != null) { - return false; - } - } else if (!augmentations.equals(other.augmentations)) { - return false; - } - return true; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(UsesNodeImpl.class.getSimpleName()); - sb.append("[groupingPath="); - sb.append(groupingPath); - sb.append("]"); - return sb.toString(); - } + return "uses '" + groupingPath + "'"; } }