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=91c5e9a994e9acb2221a9ed1c0b7a79703655077;hb=c3817f5d3cd3cdad9c6b927d56fded910e7fca25;hp=fbb01e5ee3384de8c76640e202ef7a5c0fdb2704;hpb=e5fb69f742a7a98f4767e630b819051d6d7d9153;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 fbb01e5ee3..91c5e9a994 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 @@ -8,7 +8,6 @@ package org.opendaylight.yangtools.yang.parser.builder.impl; import java.util.ArrayList; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -32,8 +31,11 @@ import org.opendaylight.yangtools.yang.parser.builder.api.UsesNodeBuilder; import org.opendaylight.yangtools.yang.parser.util.RefineHolder; import org.opendaylight.yangtools.yang.parser.util.YangParseException; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; + public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNodeBuilder { - private boolean isBuilt; private UsesNodeImpl instance; private DataNodeContainerBuilder parentBuilder; private final String groupingPathString; @@ -43,12 +45,10 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo 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<>(); - public UsesNodeBuilderImpl(final String moduleName, final int line, final String groupingName) { super(moduleName, line); this.groupingPathString = groupingName; @@ -56,32 +56,33 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo @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); - } - instance.setRefines(refineNodes); + // AUGMENTATIONS + final Set augments = new HashSet<>(); + for (AugmentationSchemaBuilder builder : augmentationBuilders) { + augments.add(builder.build()); + } + instance.augmentations = ImmutableSet.copyOf(augments); - // UNKNOWN NODES - for (UnknownSchemaNodeBuilder b : addedUnknownNodes) { - unknownNodes.add(b.build()); - } - instance.setUnknownSchemaNodes(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; } @@ -92,7 +93,7 @@ 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, "Parent of 'uses' has to be instance of DataNodeContainerBuilder, but was: '" + parent + "'."); @@ -111,7 +112,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(); @@ -124,7 +125,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(); @@ -138,18 +139,19 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo @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; @@ -161,7 +163,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setAugmenting(boolean augmenting) { + public void setAugmenting(final boolean augmenting) { this.augmenting = augmenting; } @@ -171,7 +173,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void setResolved(boolean resolved) { + public void setResolved(final boolean resolved) { this.resolved = resolved; } @@ -181,7 +183,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void addRefineNode(DataSchemaNodeBuilder refineNode) { + public void addRefineNode(final DataSchemaNodeBuilder refineNode) { refineBuilders.add(refineNode); } @@ -191,7 +193,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public void addRefine(RefineHolder refine) { + public void addRefine(final RefineHolder refine) { refines.add(refine); } @@ -205,7 +207,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; } @@ -238,12 +240,12 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo return "uses '" + groupingPathString + "'"; } - public final class UsesNodeImpl implements UsesNode { + private static final class UsesNodeImpl implements UsesNode { private final SchemaPath groupingPath; - private Set augmentations = Collections.emptySet(); + private ImmutableSet augmentations; private boolean addedByUses; - private Map refines = Collections.emptyMap(); - private List unknownNodes = Collections.emptyList(); + private ImmutableMap refines; + private ImmutableList unknownNodes; private UsesNodeImpl(final SchemaPath groupingPath) { this.groupingPath = groupingPath; @@ -259,12 +261,6 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo return augmentations; } - private void setAugmentations(final Set augmentations) { - if (augmentations != null) { - this.augmentations = augmentations; - } - } - @Override public boolean isAugmenting() { return false; @@ -284,26 +280,11 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo return refines; } - private void setRefines(Map refines) { - if (refines != null) { - this.refines = refines; - } - } - + @SuppressWarnings("unused") public List getUnknownSchemaNodes() { return unknownNodes; } - private void setUnknownSchemaNodes(List unknownSchemaNodes) { - if (unknownSchemaNodes != null) { - this.unknownNodes = unknownSchemaNodes; - } - } - - public UsesNodeBuilder toBuilder() { - return UsesNodeBuilderImpl.this; - } - @Override public int hashCode() { final int prime = 31; @@ -314,7 +295,7 @@ public final class UsesNodeBuilderImpl extends AbstractBuilder implements UsesNo } @Override - public boolean equals(Object obj) { + public boolean equals(final Object obj) { if (this == obj) { return true; }