From 679a3b2027fd416dc3a19ec602dffa42cb680767 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 14 Dec 2018 19:46:04 +0100 Subject: [PATCH] Mass migrate fields to use Immutable collections We are using immutables in all but declaration. Help performance a bit by using base classes. Change-Id: I8408ec89667b747da264b13a3425bfc752cc4ef4 Signed-off-by: Robert Varga --- .../yangtools/util/TopologicalSort.java | 9 ++---- .../yang/common/OperationFailedException.java | 2 +- .../yang/data/codec/gson/UnionJSONCodec.java | 2 +- .../yang/data/codec/xml/UnionXmlCodec.java | 3 +- .../yang/data/codec/xml/XmlParserStream.java | 2 +- .../yang/data/impl/codec/BitsStringCodec.java | 2 +- .../yang/data/impl/codec/EnumStringCodec.java | 3 +- .../codec/StringPatternCheckingCodec.java | 14 +++++---- .../data/impl/leafref/LeafRefContext.java | 6 ++-- .../impl/leafref/QNameWithPredicateImpl.java | 2 +- .../yang/data/impl/schema/SchemaUtils.java | 5 ++-- ...bstractImmutableNormalizedNodeBuilder.java | 4 +-- ...tractImmutableNormalizedValueAttrNode.java | 2 +- .../data/impl/schema/tree/CaseEnforcer.java | 25 ++++++++-------- .../tree/ChoiceModificationStrategy.java | 6 ++-- .../schema/tree/MandatoryLeafEnforcer.java | 21 +++++++------ .../yang/data/util/ContainerSchemaNodes.java | 4 +-- .../SchemaContextFactoryConfiguration.java | 13 ++++---- .../repo/api/SchemaResolutionException.java | 11 ++++--- .../repo/util/AbstractSchemaRepository.java | 3 +- .../util/FilesystemSchemaSourceCache.java | 4 +-- .../yang/model/util/DataNodeIterator.java | 19 ++++-------- .../util/EffectiveAugmentationSchema.java | 4 +-- .../util/FilteringSchemaContextProxy.java | 8 ++--- .../yang/model/util/SimpleSchemaContext.java | 8 ++--- .../util/type/AbstractTypeDefinition.java | 2 +- .../yang/model/util/type/BaseBitsType.java | 2 +- .../model/util/type/BaseEnumerationType.java | 2 +- .../yang/model/util/type/BaseUnionType.java | 2 +- .../yang/model/util/type/BitBuilder.java | 3 +- .../yang/model/util/type/BitImpl.java | 5 ++-- .../yang/model/util/type/EnumPairBuilder.java | 10 +++---- .../yang/model/util/type/EnumPairImpl.java | 5 ++-- .../yang/model/util/type/NumberUtil.java | 8 ++--- .../util/type/RangeRestrictedTypeBuilder.java | 2 +- .../util/type/ResolvedLengthConstraint.java | 2 +- .../util/type/ResolvedRangeConstraint.java | 2 +- .../model/util/type/RestrictedBitsType.java | 2 +- .../util/type/RestrictedEnumerationType.java | 2 +- .../model/util/type/RestrictedStringType.java | 2 +- .../model/util/type/StringTypeBuilder.java | 5 ++-- .../yang/parser/repo/DependencyResolver.java | 6 ++-- .../stmt/reactor/BuildGlobalContext.java | 9 +++--- .../reactor/CrossSourceStatementReactor.java | 4 +-- .../stmt/reactor/EffectiveSchemaContext.java | 4 +-- .../stmt/reactor/RootStatementContext.java | 6 ++-- .../stmt/reactor/StatementContextBase.java | 5 ++-- .../antlr/AbstractParserErrorListener.java | 4 +-- ...tomCrossSourceStatementReactorBuilder.java | 2 +- .../rfc7950/reactor/RFC7950Reactors.java | 4 +-- .../AbstractEffectiveContainerSchemaNode.java | 2 +- ...tEffectiveDocumentedDataNodeContainer.java | 10 +++---- .../rfc7950/stmt/AbstractEffectiveModule.java | 30 +++++++++---------- .../AbstractEffectiveOperationDefinition.java | 4 +-- .../stmt/AbstractEffectiveSchemaNode.java | 2 +- ...tractEffectiveSimpleDataNodeContainer.java | 4 +-- ...AbstractSchemaEffectiveDocumentedNode.java | 7 +++-- .../rfc7950/stmt/EffectiveStatementBase.java | 3 +- .../rfc7950/stmt/StmtNamespaceContext.java | 4 +-- .../stmt/UnknownEffectiveStatementBase.java | 2 +- .../AnydataEffectiveStatementImpl.java | 2 +- .../anyxml/AnyxmlEffectiveStatementImpl.java | 2 +- .../AbstractAugmentStatementSupport.java | 5 ++-- .../AugmentEffectiveStatementImpl.java | 6 ++-- .../stmt/bit/BitEffectiveStatementImpl.java | 2 +- .../choice/ChoiceEffectiveStatementImpl.java | 4 +-- .../ContainerEffectiveStatementImpl.java | 4 +-- .../AbstractDeviateStatementSupport.java | 15 +++------- .../DeviateEffectiveStatementImpl.java | 4 +-- .../DeviationEffectiveStatementImpl.java | 4 +-- .../enum_/EnumEffectiveStatementImpl.java | 2 +- .../ExtensionEffectiveStatementImpl.java | 2 +- .../GroupingEffectiveStatementImpl.java | 7 ++--- .../IdentityEffectiveStatementImpl.java | 2 +- .../stmt/leaf/LeafEffectiveStatementImpl.java | 2 +- .../LeafListEffectiveStatementImpl.java | 5 ++-- .../stmt/list/ListEffectiveStatementImpl.java | 12 ++++---- .../module/ModuleEffectiveStatementImpl.java | 12 ++++---- .../NotificationEffectiveStatementImpl.java | 6 ++-- .../refine/RefineEffectiveStatementImpl.java | 2 +- .../stmt/type/BuiltinTypeStatement.java | 3 +- .../stmt/uses/UsesEffectiveStatementImpl.java | 6 ++-- .../rfc7950/stmt/uses/UsesStatementImpl.java | 10 +++---- .../spi/meta/StatementSupportBundle.java | 6 ++-- .../spi/meta/SubstatementValidator.java | 4 +-- 85 files changed, 231 insertions(+), 248 deletions(-) diff --git a/common/util/src/main/java/org/opendaylight/yangtools/util/TopologicalSort.java b/common/util/src/main/java/org/opendaylight/yangtools/util/TopologicalSort.java index 34eabea9aa..300e5c9442 100644 --- a/common/util/src/main/java/org/opendaylight/yangtools/util/TopologicalSort.java +++ b/common/util/src/main/java/org/opendaylight/yangtools/util/TopologicalSort.java @@ -114,13 +114,8 @@ public final class TopologicalSort { */ @Beta public static class NodeImpl implements Node { - private final Set inEdges; - private final Set outEdges; - - public NodeImpl() { - inEdges = new HashSet<>(); - outEdges = new HashSet<>(); - } + private final Set inEdges = new HashSet<>(); + private final Set outEdges = new HashSet<>(); @Override public Set getInEdges() { diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/OperationFailedException.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/OperationFailedException.java index 9049e32e59..190b5a9303 100644 --- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/OperationFailedException.java +++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/OperationFailedException.java @@ -25,7 +25,7 @@ public class OperationFailedException extends Exception { private static final long serialVersionUID = 1L; - private final List errorList; + private final ImmutableList errorList; /** * Constructs a new instance with the specified detail message and errors. diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/UnionJSONCodec.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/UnionJSONCodec.java index bc36ac2fc4..390bb91baf 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/UnionJSONCodec.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/UnionJSONCodec.java @@ -54,7 +54,7 @@ abstract class UnionJSONCodec implements JSONCodec { private static final Logger LOG = LoggerFactory.getLogger(UnionJSONCodec.class); - private final List> codecs; + private final ImmutableList> codecs; UnionJSONCodec(final List> codecs) { this.codecs = ImmutableList.copyOf(codecs); diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/UnionXmlCodec.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/UnionXmlCodec.java index ee55b06467..0abe970cc3 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/UnionXmlCodec.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/UnionXmlCodec.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.yangtools.yang.data.codec.xml; import static com.google.common.base.Verify.verify; @@ -49,7 +48,7 @@ abstract class UnionXmlCodec implements XmlCodec { private static final Logger LOG = LoggerFactory.getLogger(UnionXmlCodec.class); - private final List> codecs; + private final ImmutableList> codecs; UnionXmlCodec(final List> codecs) { this.codecs = ImmutableList.copyOf(codecs); diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java index 2b342a30f5..37ef9ab25d 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java @@ -220,7 +220,7 @@ public final class XmlParserStream implements Closeable, Flushable { return parse(new DOMSourceXMLStreamReader(src)); } - private static Map getElementAttributes(final XMLStreamReader in) { + private static ImmutableMap getElementAttributes(final XMLStreamReader in) { checkState(in.isStartElement(), "Attributes can be extracted only from START_ELEMENT."); final Map attributes = new LinkedHashMap<>(); diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/BitsStringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/BitsStringCodec.java index 9650191a17..dc84637995 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/BitsStringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/BitsStringCodec.java @@ -32,7 +32,7 @@ public final class BitsStringCodec extends TypeDefinitionAwareCodec, private static final Joiner JOINER = Joiner.on(" ").skipNulls(); private static final Splitter SPLITTER = Splitter.on(' ').omitEmptyStrings().trimResults(); - private final Set validBits; + private final ImmutableSet validBits; @SuppressWarnings("unchecked") private BitsStringCodec(final Optional typeDef) { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/EnumStringCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/EnumStringCodec.java index 120c47616b..0cc70d9723 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/EnumStringCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/EnumStringCodec.java @@ -12,7 +12,6 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; -import java.util.Map; import java.util.Objects; import java.util.Optional; import org.opendaylight.yangtools.yang.data.api.codec.EnumCodec; @@ -25,7 +24,7 @@ import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPai @Beta public final class EnumStringCodec extends TypeDefinitionAwareCodec implements EnumCodec { - private final Map values; + private final ImmutableMap values; private EnumStringCodec(final Optional typeDef) { super(typeDef, String.class); diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/StringPatternCheckingCodec.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/StringPatternCheckingCodec.java index c7541830e1..8fb0075ce8 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/StringPatternCheckingCodec.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/StringPatternCheckingCodec.java @@ -7,8 +7,9 @@ */ package org.opendaylight.yangtools.yang.data.impl.codec; -import java.util.ArrayList; -import java.util.Collection; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableList.Builder; +import java.util.List; import java.util.regex.PatternSyntaxException; import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint; import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; @@ -18,18 +19,21 @@ import org.slf4j.LoggerFactory; final class StringPatternCheckingCodec extends StringStringCodec { private static final Logger LOG = LoggerFactory.getLogger(StringPatternCheckingCodec.class); - private final Collection patterns; + private final ImmutableList patterns; StringPatternCheckingCodec(final StringTypeDefinition typeDef) { super(typeDef); - patterns = new ArrayList<>(typeDef.getPatternConstraints().size()); + + final List constraints = typeDef.getPatternConstraints(); + final Builder builder = ImmutableList.builderWithExpectedSize(constraints.size()); for (final PatternConstraint yangPattern : typeDef.getPatternConstraints()) { try { - patterns.add(new CompiledPatternContext(yangPattern)); + builder.add(new CompiledPatternContext(yangPattern)); } catch (final PatternSyntaxException e) { LOG.debug("Unable to compile {} pattern, excluding it from validation.", yangPattern, e); } } + patterns = builder.build(); } @Override diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefContext.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefContext.java index 9ac8c62146..a7f34c29c2 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefContext.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/LeafRefContext.java @@ -30,9 +30,9 @@ public final class LeafRefContext implements SchemaContextProvider { private final boolean isReferencedBy; private final boolean isReferencing; - private final Map referencingChilds; - private final Map referencedByChilds; - private final Map referencedByLeafRefCtx; + private final ImmutableMap referencingChilds; + private final ImmutableMap referencedByChilds; + private final ImmutableMap referencedByLeafRefCtx; // FIXME: this looks like it's related to absoluteLeafRefTargetPath, but the original use in LeafRefValidation // fast path did not make it clear. Analyze the relationship between this field and diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/QNameWithPredicateImpl.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/QNameWithPredicateImpl.java index 4d364f3265..390fe345d7 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/QNameWithPredicateImpl.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/leafref/QNameWithPredicateImpl.java @@ -16,7 +16,7 @@ final class QNameWithPredicateImpl extends AbstractQNameWithPredicate { private static final long serialVersionUID = 1L; - private final List qnamePredicates; + private final ImmutableList qnamePredicates; private final QNameModule moduleQname; private final String localName; diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java index f0afe4263f..25134e0c18 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaUtils.java @@ -158,9 +158,8 @@ public final class SchemaUtils { final Set qnames) { for (final AugmentationSchemaNode augment : schema.getAvailableAugmentations()) { final Set qNamesFromAugment = ImmutableSet.copyOf(Collections2.transform(augment.getChildNodes(), - DataSchemaNode::getQName)); - - if (qNamesFromAugment.equals(qnames)) { + DataSchemaNode::getQName)); + if (qnames.equals(qNamesFromAugment)) { return Optional.of(augment); } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableNormalizedNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableNormalizedNodeBuilder.java index b686b98203..6e243334c0 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableNormalizedNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableNormalizedNodeBuilder.java @@ -10,7 +10,7 @@ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl; import static com.google.common.base.Preconditions.checkState; import static java.util.Objects.requireNonNull; -import java.util.Collections; +import com.google.common.collect.ImmutableMap; import java.util.Map; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; @@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNo abstract class AbstractImmutableNormalizedNodeBuilder> implements NormalizedNodeAttrBuilder { - private Map attributes = Collections.emptyMap(); + private Map attributes = ImmutableMap.of(); private I nodeIdentifier; private V value; diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueAttrNode.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueAttrNode.java index 9c71c491d6..e6964991c4 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueAttrNode.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableNormalizedValueAttrNode.java @@ -19,7 +19,7 @@ public abstract class AbstractImmutableNormalizedValueAttrNode implements AttributesContainer { - private final Map attributes; + private final ImmutableMap attributes; protected AbstractImmutableNormalizedValueAttrNode(final K nodeIdentifier, final V value, final Map attributes) { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/CaseEnforcer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/CaseEnforcer.java index b3703dfabc..47301e353f 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/CaseEnforcer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/CaseEnforcer.java @@ -7,11 +7,11 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.Sets; -import java.util.Map; import java.util.Map.Entry; import java.util.Set; import org.opendaylight.yangtools.concepts.Immutable; @@ -27,16 +27,16 @@ import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; final class CaseEnforcer implements Immutable { - private final Map children; - private final Map augmentations; + private final ImmutableMap children; + private final ImmutableMap augmentations; private final MandatoryLeafEnforcer enforcer; - private CaseEnforcer(final Map children, - final Map augmentations, + private CaseEnforcer(final ImmutableMap children, + final ImmutableMap augmentations, final MandatoryLeafEnforcer enforcer) { - this.children = Preconditions.checkNotNull(children); - this.augmentations = Preconditions.checkNotNull(augmentations); - this.enforcer = Preconditions.checkNotNull(enforcer); + this.children = requireNonNull(children); + this.augmentations = requireNonNull(augmentations); + this.enforcer = requireNonNull(enforcer); } static CaseEnforcer forTree(final CaseSchemaNode schema, final DataTreeConfiguration treeConfig) { @@ -57,10 +57,9 @@ final class CaseEnforcer implements Immutable { } } - final Map children = childrenBuilder.build(); - final Map augmentations = augmentationsBuilder.build(); - return children.isEmpty() ? null - : new CaseEnforcer(children, augmentations, MandatoryLeafEnforcer.forContainer(schema, treeConfig)); + final ImmutableMap children = childrenBuilder.build(); + return children.isEmpty() ? null : new CaseEnforcer(children, augmentationsBuilder.build(), + MandatoryLeafEnforcer.forContainer(schema, treeConfig)); } Set> getChildEntries() { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java index ce6dc17c1c..125fa1f92e 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/ChoiceModificationStrategy.java @@ -41,10 +41,10 @@ import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; final class ChoiceModificationStrategy extends AbstractNodeContainerModificationStrategy { - private final Map childNodes; + private final ImmutableMap childNodes; // FIXME: enforce leaves not coming from two case statements at the same time - private final Map> exclusions; - private final Map caseEnforcers; + private final ImmutableMap> exclusions; + private final ImmutableMap caseEnforcers; private final ChoiceNode emptyNode; ChoiceModificationStrategy(final ChoiceSchemaNode schema, final DataTreeConfiguration treeConfig) { diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MandatoryLeafEnforcer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MandatoryLeafEnforcer.java index 354aa1bb76..2bbcfccf0d 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MandatoryLeafEnforcer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MandatoryLeafEnforcer.java @@ -7,11 +7,11 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableCollection.Builder; +import static com.google.common.base.Preconditions.checkArgument; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableList; -import java.util.Collection; -import java.util.Optional; +import com.google.common.collect.ImmutableList.Builder; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; @@ -31,18 +31,17 @@ import org.slf4j.LoggerFactory; // TODO: would making this Serializable be useful (for Functions and similar?) abstract class MandatoryLeafEnforcer implements Immutable { private static final class Strict extends MandatoryLeafEnforcer { - private final Collection mandatoryNodes; + private final ImmutableList mandatoryNodes; - Strict(final Collection mandatoryNodes) { - this.mandatoryNodes = Preconditions.checkNotNull(mandatoryNodes); + Strict(final ImmutableList mandatoryNodes) { + this.mandatoryNodes = requireNonNull(mandatoryNodes); } @Override void enforceOnData(final NormalizedNode data) { for (final YangInstanceIdentifier id : mandatoryNodes) { - final Optional> descandant = NormalizedNodes.findNode(data, id); - Preconditions.checkArgument(descandant.isPresent(), "Node %s is missing mandatory descendant %s", - data.getIdentifier(), id); + checkArgument(NormalizedNodes.findNode(data, id).isPresent(), + "Node %s is missing mandatory descendant %s", data.getIdentifier(), id); } } } @@ -96,7 +95,7 @@ abstract class MandatoryLeafEnforcer implements Immutable { final Builder builder = ImmutableList.builder(); findMandatoryNodes(builder, YangInstanceIdentifier.EMPTY, schema, treeConfig.getTreeType()); - final Collection mandatoryNodes = builder.build(); + final ImmutableList mandatoryNodes = builder.build(); return mandatoryNodes.isEmpty() ? NOOP_ENFORCER : new Strict(mandatoryNodes); } } diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java index 2d748c4739..0d2bd1a315 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/ContainerSchemaNodes.java @@ -11,11 +11,11 @@ import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; import java.util.Collection; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import javax.annotation.Nonnull; @@ -201,7 +201,7 @@ public final class ContainerSchemaNodes { private static final class NotificationContainerSchemaNode extends AbstractContainerSchemaNode { private final NotificationDefinition notification; - private final Map mapNodes; + private final ImmutableMap mapNodes; private NotificationContainerSchemaNode(final NotificationDefinition notification) { super(notification); diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaContextFactoryConfiguration.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaContextFactoryConfiguration.java index 88bd74def0..80cc985310 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaContextFactoryConfiguration.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaContextFactoryConfiguration.java @@ -41,12 +41,13 @@ public final class SchemaContextFactoryConfiguration implements Immutable { private final @NonNull SchemaSourceFilter filter; private final @NonNull StatementParserMode statementParserMode; - private final @Nullable Set supportedFeatures; - private final @Nullable SetMultimap modulesDeviatedByModules; + private final @Nullable ImmutableSet supportedFeatures; + private final @Nullable ImmutableSetMultimap modulesDeviatedByModules; private SchemaContextFactoryConfiguration(final @NonNull SchemaSourceFilter filter, - final @NonNull StatementParserMode statementParserMode, final @Nullable Set supportedFeatures, - final @Nullable SetMultimap modulesDeviatedByModules) { + final @NonNull StatementParserMode statementParserMode, + final @Nullable ImmutableSet supportedFeatures, + final @Nullable ImmutableSetMultimap modulesDeviatedByModules) { this.filter = requireNonNull(filter); this.statementParserMode = requireNonNull(statementParserMode); this.supportedFeatures = supportedFeatures; @@ -107,8 +108,8 @@ public final class SchemaContextFactoryConfiguration implements Immutable { implements org.opendaylight.yangtools.concepts.Builder { private SchemaSourceFilter filter = SchemaSourceFilter.ALWAYS_ACCEPT; private StatementParserMode statementParserMode = StatementParserMode.DEFAULT_MODE; - private SetMultimap modulesDeviatedByModules; - private Set supportedFeatures; + private ImmutableSetMultimap modulesDeviatedByModules; + private ImmutableSet supportedFeatures; /** * Set schema source filter which will filter available schema sources using the provided filter. diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java index cf55be15d8..b6128bf8cb 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/repo/api/SchemaResolutionException.java @@ -14,7 +14,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMultimap; import com.google.common.collect.Multimap; import java.util.Collection; -import java.util.Collections; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.model.api.ModuleImport; @@ -23,23 +22,23 @@ import org.opendaylight.yangtools.yang.model.api.ModuleImport; */ @Beta public class SchemaResolutionException extends SchemaSourceException { - private static final long serialVersionUID = 1L; + private final SourceIdentifier failedSource; - private final @NonNull Multimap unsatisfiedImports; - private final @NonNull Collection resolvedSources; + private final @NonNull ImmutableMultimap unsatisfiedImports; + private final @NonNull ImmutableList resolvedSources; public SchemaResolutionException(final @NonNull String message) { this(message, null); } public SchemaResolutionException(final @NonNull String message, final Throwable cause) { - this(message, null, cause, Collections.emptySet(), ImmutableMultimap.of()); + this(message, null, cause, ImmutableList.of(), ImmutableMultimap.of()); } public SchemaResolutionException(final @NonNull String message, final SourceIdentifier failedSource, final Throwable cause) { - this(message, failedSource, cause, Collections.emptySet(), ImmutableMultimap.of()); + this(message, failedSource, cause, ImmutableList.of(), ImmutableMultimap.of()); } public SchemaResolutionException(final @NonNull String message, diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java index 92adec7516..c84f852720 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/AbstractSchemaRepository.java @@ -25,6 +25,7 @@ import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import javax.annotation.concurrent.GuardedBy; import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException; @@ -62,7 +63,7 @@ public abstract class AbstractSchemaRepository implements SchemaRepository, Sche * Schema source listeners. */ @GuardedBy("this") - private final Collection listeners = new ArrayList<>(); + private final List listeners = new ArrayList<>(); @SuppressWarnings("unchecked") private static ListenableFuture fetchSource( diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java index b408d2d363..f570ba7ff1 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java @@ -13,7 +13,6 @@ import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediate import static org.opendaylight.yangtools.util.concurrent.FluentFutures.immediateFluentFuture; import com.google.common.base.MoreObjects.ToStringHelper; -import com.google.common.collect.Lists; import com.google.common.util.concurrent.FluentFuture; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.File; @@ -27,6 +26,7 @@ import java.nio.file.SimpleFileVisitor; import java.nio.file.StandardCopyOption; import java.nio.file.attribute.BasicFileAttributes; import java.time.format.DateTimeParseException; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; @@ -266,7 +266,7 @@ public final class FilesystemSchemaSourceCache { - private final List cachedSchemas = Lists.newArrayList(); + private final List cachedSchemas = new ArrayList<>(); @Override public FileVisitResult visitFile(final Path file, final BasicFileAttributes attrs) throws IOException { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java index e39cb1ba31..385797bf1c 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/DataNodeIterator.java @@ -33,26 +33,19 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; */ public class DataNodeIterator implements Iterator { + private final List allLists = new ArrayList<>(); + private final List allContainers = new ArrayList<>(); + private final List allChoices = new ArrayList<>(); + private final List allChilds = new ArrayList<>(); + private final List allGroupings = new ArrayList<>(); + private final List> allTypedefs = new ArrayList<>(); private final DataNodeContainer container; - private final List allLists; - private final List allContainers; - private final List allChoices; - private final List allChilds; - private final List allGroupings; - private final List> allTypedefs; public DataNodeIterator(final DataNodeContainer container) { if (container == null) { throw new IllegalArgumentException("Data Node Container MUST be specified and cannot be NULL!"); } - this.allContainers = new ArrayList<>(); - this.allLists = new ArrayList<>(); - this.allChilds = new ArrayList<>(); - this.allChoices = new ArrayList<>(); - this.allGroupings = new ArrayList<>(); - this.allTypedefs = new ArrayList<>(); - this.container = container; traverse(this.container); } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java index b031e299e9..6e8e023681 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/EffectiveAugmentationSchema.java @@ -36,8 +36,8 @@ import org.opendaylight.yangtools.yang.model.api.UsesNode; */ public final class EffectiveAugmentationSchema implements AugmentationSchemaNode { private final AugmentationSchemaNode delegate; - private final Set realChildSchemas; - private final Map mappedChildSchemas; + private final ImmutableSet realChildSchemas; + private final ImmutableMap mappedChildSchemas; public EffectiveAugmentationSchema(final AugmentationSchemaNode augmentSchema, final Set realChildSchemas) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java index f9251b00f4..d8a41fb7f2 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/FilteringSchemaContextProxy.java @@ -39,14 +39,14 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; @Immutable public final class FilteringSchemaContextProxy extends AbstractSchemaContext { - private final Map moduleMap; + private final ImmutableMap moduleMap; //collection to be filled with filtered modules - private final Set filteredModules; + private final ImmutableSet filteredModules; //collections to be filled in with filtered data - private final SetMultimap namespaceToModules; - private final SetMultimap nameToModules; + private final ImmutableSetMultimap namespaceToModules; + private final ImmutableSetMultimap nameToModules; /** * Filters SchemaContext for yang modules. diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContext.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContext.java index dd452ed220..0dfbb12abd 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContext.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/SimpleSchemaContext.java @@ -32,10 +32,10 @@ import org.opendaylight.yangtools.yang.model.api.Module; */ @Beta public class SimpleSchemaContext extends AbstractSchemaContext { - private final SetMultimap namespaceToModules; - private final SetMultimap nameToModules; - private final Map moduleMap; - private final Set modules; + private final ImmutableSetMultimap namespaceToModules; + private final ImmutableSetMultimap nameToModules; + private final ImmutableMap moduleMap; + private final ImmutableSet modules; protected SimpleSchemaContext(final Set modules) { /* diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractTypeDefinition.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractTypeDefinition.java index 13e6b00f4c..fe0abdd72c 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractTypeDefinition.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/AbstractTypeDefinition.java @@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; abstract class AbstractTypeDefinition> implements Immutable, TypeDefinition { - private final @NonNull List unknownSchemaNodes; + private final @NonNull ImmutableList unknownSchemaNodes; private final @NonNull SchemaPath path; AbstractTypeDefinition(final SchemaPath path, final Collection unknownSchemaNodes) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseBitsType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseBitsType.java index e5496b0ea2..eeba56f86f 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseBitsType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseBitsType.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; final class BaseBitsType extends AbstractBaseType implements BitsTypeDefinition { - private final @NonNull List bits; + private final @NonNull ImmutableList bits; BaseBitsType(final SchemaPath path, final List unknownSchemaNodes, final Collection bits) { super(path, unknownSchemaNodes); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseEnumerationType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseEnumerationType.java index 46428f8693..b019bf1e8a 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseEnumerationType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseEnumerationType.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; final class BaseEnumerationType extends AbstractBaseType implements EnumTypeDefinition { - private final @NonNull List values; + private final @NonNull ImmutableList values; BaseEnumerationType(final SchemaPath path, final List unknownSchemaNodes, final Collection values) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUnionType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUnionType.java index 67dd7be91a..9eb3ec017a 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUnionType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BaseUnionType.java @@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; final class BaseUnionType extends AbstractBaseType implements UnionTypeDefinition { - private final List> types; + private final ImmutableList> types; BaseUnionType(final SchemaPath path, final List unknownSchemaNodes, final Collection> types) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitBuilder.java index 7e709966f8..ea5c75945e 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitBuilder.java @@ -11,7 +11,6 @@ import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.util.Collection; -import java.util.List; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.concepts.Mutable; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -29,7 +28,7 @@ public final class BitBuilder implements Builder, Mutable { private final SchemaPath schemaPath; private final Long position; - private List unknownSchemaNodes = ImmutableList.of(); + private ImmutableList unknownSchemaNodes = ImmutableList.of(); private Status status = Status.CURRENT; private String description; private String reference; diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitImpl.java index 90a89fe7af..5bb12efb66 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/BitImpl.java @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.model.util.type; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; +import com.google.common.collect.ImmutableList; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -22,7 +23,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit; final class BitImpl implements Bit, Immutable { - private final @NonNull List unknownNodes; + private final @NonNull ImmutableList unknownNodes; private final @NonNull SchemaPath schemaPath; private final String description; private final String reference; @@ -38,7 +39,7 @@ final class BitImpl implements Bit, Immutable { this.description = description; this.reference = reference; this.status = requireNonNull(status); - this.unknownNodes = requireNonNull(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodes); } @Override diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairBuilder.java index b88e52b097..89fe6a4c67 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairBuilder.java @@ -7,11 +7,12 @@ */ package org.opendaylight.yangtools.yang.model.util.type; +import static java.util.Objects.requireNonNull; + import com.google.common.annotations.Beta; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.util.Collection; -import java.util.List; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.concepts.Mutable; import org.opendaylight.yangtools.yang.model.api.Status; @@ -28,14 +29,14 @@ public final class EnumPairBuilder implements Builder, Mutable { private final String name; private final Integer value; - private List unknownSchemaNodes = ImmutableList.of(); + private ImmutableList unknownSchemaNodes = ImmutableList.of(); private Status status = Status.CURRENT; private String description; private String reference; private EnumPairBuilder(final String name, final Integer value) { - this.name = Preconditions.checkNotNull(name); - this.value = Preconditions.checkNotNull(value); + this.name = requireNonNull(name); + this.value = requireNonNull(value); } public static EnumPairBuilder create(final String name, final Integer value) { @@ -71,5 +72,4 @@ public final class EnumPairBuilder implements Builder, Mutable { public EnumPair build() { return new EnumPairImpl(name, value, description, reference, status, unknownSchemaNodes); } - } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairImpl.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairImpl.java index 918ee783c6..fdf61dd77e 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairImpl.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/EnumPairImpl.java @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.model.util.type; import static java.util.Objects.requireNonNull; import com.google.common.base.MoreObjects; +import com.google.common.collect.ImmutableList; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -20,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair; final class EnumPairImpl implements EnumPair, Immutable { - private final @NonNull List unknownSchemaNodes; + private final @NonNull ImmutableList unknownSchemaNodes; private final String description; private final String reference; private final @NonNull Status status; @@ -28,7 +29,7 @@ final class EnumPairImpl implements EnumPair, Immutable { private final int value; EnumPairImpl(final String name, final int value, final String description, final String reference, - final Status status, final List unknownSchemaNodes) { + final Status status, final ImmutableList unknownSchemaNodes) { this.name = requireNonNull(name); this.value = value; this.description = description; diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java index 243aa7f6ce..039bc996db 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/NumberUtil.java @@ -7,17 +7,17 @@ */ package org.opendaylight.yangtools.yang.model.util.type; -import com.google.common.base.Preconditions; +import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.collect.ImmutableMap; import java.math.BigDecimal; import java.math.BigInteger; import java.util.Comparator; -import java.util.Map; import java.util.function.Function; final class NumberUtil { private static final Comparator NUMBER_COMPARATOR = (o1, o2) -> { - Preconditions.checkArgument(o1.getClass().equals(o2.getClass()), "Incompatible Number classes %s and %s", + checkArgument(o1.getClass().equals(o2.getClass()), "Incompatible Number classes %s and %s", o1.getClass(), o2.getClass()); if (o1 instanceof Byte) { @@ -37,7 +37,7 @@ final class NumberUtil { } }; - private static final Map, Function> CONVERTERS; + private static final ImmutableMap, Function> CONVERTERS; static { final ImmutableMap.Builder, Function> b = ImmutableMap.builder(); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java index 47541a4759..b60e5c746f 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RangeRestrictedTypeBuilder.java @@ -31,7 +31,7 @@ import org.opendaylight.yangtools.yang.model.api.type.RangeRestrictedTypeDefinit public abstract class RangeRestrictedTypeBuilder, N extends Number & Comparable> extends AbstractRestrictedTypeBuilder { private ConstraintMetaDefinition constraint; - private List ranges; + private ImmutableList ranges; RangeRestrictedTypeBuilder(final T baseType, final SchemaPath path) { super(baseType, path); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedLengthConstraint.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedLengthConstraint.java index 7073fe384a..3abae2eff3 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedLengthConstraint.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedLengthConstraint.java @@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.type.LengthConstraint; final class ResolvedLengthConstraint implements LengthConstraint { private final ConstraintMetaDefinition meta; - private final RangeSet ranges; + private final ImmutableRangeSet ranges; ResolvedLengthConstraint(final ConstraintMetaDefinition meta, final RangeSet ranges) { this.meta = requireNonNull(meta); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedRangeConstraint.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedRangeConstraint.java index 57d6628939..178ef2123d 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedRangeConstraint.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/ResolvedRangeConstraint.java @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; final class ResolvedRangeConstraint> implements RangeConstraint, Immutable { private final ConstraintMetaDefinition meta; - private final RangeSet ranges; + private final ImmutableRangeSet ranges; ResolvedRangeConstraint(final ConstraintMetaDefinition meta, final RangeSet ranges) { this.meta = requireNonNull(meta); diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedBitsType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedBitsType.java index 255271c5d8..bf9f585d7d 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedBitsType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedBitsType.java @@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition; final class RestrictedBitsType extends AbstractRestrictedType implements BitsTypeDefinition { - private final @NonNull List bits; + private final @NonNull ImmutableList bits; RestrictedBitsType(final BitsTypeDefinition baseType, final SchemaPath path, final Collection unknownSchemaNodes, final Collection bits) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedEnumerationType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedEnumerationType.java index d22d60f631..47195277a5 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedEnumerationType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedEnumerationType.java @@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition; final class RestrictedEnumerationType extends AbstractRestrictedType implements EnumTypeDefinition { - private final @NonNull List values; + private final @NonNull ImmutableList values; RestrictedEnumerationType(final EnumTypeDefinition baseType, final SchemaPath path, final Collection unknownSchemaNodes, final Collection values) { diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedStringType.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedStringType.java index 6036ca285a..37b97570ef 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedStringType.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/RestrictedStringType.java @@ -20,7 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition; final class RestrictedStringType extends AbstractLengthRestrictedType implements StringTypeDefinition { - private final @NonNull List patternConstraints; + private final @NonNull ImmutableList patternConstraints; RestrictedStringType(final StringTypeDefinition baseType, final SchemaPath path, final Collection unknownSchemaNodes, diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/StringTypeBuilder.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/StringTypeBuilder.java index deafa424e7..34b524c1b3 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/StringTypeBuilder.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/type/StringTypeBuilder.java @@ -7,7 +7,8 @@ */ package org.opendaylight.yangtools.yang.model.util.type; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import java.util.ArrayList; import java.util.List; import org.eclipse.jdt.annotation.Nullable; @@ -24,7 +25,7 @@ public final class StringTypeBuilder extends LengthRestrictedTypeBuilder resolvedSources; - private final Collection unresolvedSources; - private final Multimap unsatisfiedImports; + private final ImmutableList resolvedSources; + private final ImmutableList unresolvedSources; + private final ImmutableMultimap unsatisfiedImports; protected DependencyResolver(final Map depInfo) { final Collection resolved = new ArrayList<>(depInfo.size()); diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java index 66d31f98fd..7aefd48045 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java @@ -13,6 +13,7 @@ import static java.util.Objects.requireNonNull; import com.google.common.base.Verify; import com.google.common.collect.HashBasedTable; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.SetMultimap; @@ -78,17 +79,17 @@ class BuildGlobalContext extends NamespaceStorageSupport implements Registry { private final Map> modelDefinedStmtDefs = new HashMap<>(); private final Map, NamespaceBehaviourWithListeners> supportedNamespaces = new HashMap<>(); private final List mutableStatementsToSeal = new ArrayList<>(); - private final Map supports; + private final ImmutableMap supports; private final Set sources = new HashSet<>(); - private final Set supportedVersions; + private final ImmutableSet supportedVersions; private final boolean enabledSemanticVersions; private Set libSources = new HashSet<>(); private ModelProcessingPhase currentPhase = ModelProcessingPhase.INIT; private ModelProcessingPhase finishedPhase = ModelProcessingPhase.INIT; - BuildGlobalContext(final Map supports, - final Map> supportedValidation, + BuildGlobalContext(final ImmutableMap supports, + final ImmutableMap> supportedValidation, final StatementParserMode statementParserMode) { this.supports = requireNonNull(supports, "BuildGlobalContext#supports cannot be null"); diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java index cc2d8bbb5a..2af7efe01b 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java @@ -28,8 +28,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType; public final class CrossSourceStatementReactor { - private final Map supportedTerminology; - private final Map> supportedValidation; + private final ImmutableMap supportedTerminology; + private final ImmutableMap> supportedValidation; CrossSourceStatementReactor(final Map supportedTerminology, final Map> supportedValidation) { diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java index f2c9eb731f..3276981af2 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java @@ -22,8 +22,8 @@ import org.opendaylight.yangtools.yang.model.util.SimpleSchemaContext; @VisibleForTesting public final class EffectiveSchemaContext extends SimpleSchemaContext { - private final List> rootDeclaredStatements; - private final List> rootEffectiveStatements; + private final ImmutableList> rootDeclaredStatements; + private final ImmutableList> rootEffectiveStatements; private EffectiveSchemaContext(final Set modules, final List> rootDeclaredStatements, final List> rootEffectiveStatements) { diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java index b4077ec9ce..11f6f921e9 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java @@ -17,8 +17,10 @@ import com.google.common.collect.ImmutableSet; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; +import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.YangVersion; @@ -48,13 +50,13 @@ public class RootStatementContext, E extends E private final A argument; private YangVersion rootVersion; - private Collection requiredSources = ImmutableSet.of(); + private Set requiredSources = ImmutableSet.of(); private SourceIdentifier rootIdentifier; /** * References to RootStatementContext of submodules which are included in this source. */ - private Collection> includedContexts = ImmutableList.of(); + private List> includedContexts = ImmutableList.of(); RootStatementContext(final SourceSpecificContext sourceContext, final StatementDefinitionContext def, final StatementSourceReference ref, final String rawArgument) { diff --git a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index cb2c434dae..b258aed79a 100644 --- a/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -26,6 +26,7 @@ import java.util.Collections; import java.util.EnumMap; import java.util.EventListener; import java.util.Iterator; +import java.util.List; import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; @@ -103,8 +104,8 @@ public abstract class StatementContextBase, E private Multimap phaseListeners = ImmutableMultimap.of(); private Multimap phaseMutation = ImmutableMultimap.of(); - private Collection> effective = ImmutableList.of(); - private Collection> effectOfStatement = ImmutableList.of(); + private List> effective = ImmutableList.of(); + private List> effectOfStatement = ImmutableList.of(); private StatementMap substatements = StatementMap.empty(); private boolean isSupportedToBuildEffective = true; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/antlr/AbstractParserErrorListener.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/antlr/AbstractParserErrorListener.java index 1e83d6ea61..a4fc341b3d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/antlr/AbstractParserErrorListener.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/antlr/AbstractParserErrorListener.java @@ -11,8 +11,8 @@ import static com.google.common.base.Verify.verifyNotNull; import com.google.common.annotations.Beta; import java.util.ArrayList; -import java.util.Collection; import java.util.Iterator; +import java.util.List; import javax.annotation.concurrent.NotThreadSafe; import org.antlr.v4.runtime.BaseErrorListener; import org.antlr.v4.runtime.RecognitionException; @@ -35,7 +35,7 @@ import org.slf4j.LoggerFactory; public abstract class AbstractParserErrorListener extends BaseErrorListener implements Mutable { private static final Logger LOG = LoggerFactory.getLogger(AbstractParserErrorListener.class); - private final Collection exceptions = new ArrayList<>(); + private final List exceptions = new ArrayList<>(); @Override @SuppressWarnings("checkstyle:parameterName") diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/CustomCrossSourceStatementReactorBuilder.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/CustomCrossSourceStatementReactorBuilder.java index 4f63e37e54..44884a2c6d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/CustomCrossSourceStatementReactorBuilder.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/CustomCrossSourceStatementReactorBuilder.java @@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementR @Beta public class CustomCrossSourceStatementReactorBuilder implements Builder { - private final Map reactorSupportBundles; + private final ImmutableMap reactorSupportBundles; private final Map> reactorValidationBundles = new HashMap<>(); /** diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java index e1370625ee..11e01244b4 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java @@ -12,10 +12,10 @@ import static org.opendaylight.yangtools.yang.common.YangVersion.VERSION_1_1; import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Sets; import java.util.Collection; import java.util.Map; -import java.util.Set; import org.opendaylight.yangtools.yang.common.YangVersion; import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; import org.opendaylight.yangtools.yang.parser.openconfig.stmt.OpenConfigVersionSupport; @@ -159,7 +159,7 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.CrossSourceStatementR */ @Beta public final class RFC7950Reactors { - private static final Set SUPPORTED_VERSIONS = Sets.immutableEnumSet(VERSION_1, VERSION_1_1); + private static final ImmutableSet SUPPORTED_VERSIONS = Sets.immutableEnumSet(VERSION_1, VERSION_1_1); private static final StatementSupportBundle INIT_BUNDLE = StatementSupportBundle.builder(SUPPORTED_VERSIONS) .addSupport(ValidationBundlesNamespace.BEHAVIOUR) diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java index 9ab3339bea..60b7b41da1 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveContainerSchemaNode.java @@ -17,7 +17,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public abstract class AbstractEffectiveContainerSchemaNode> extends AbstractEffectiveSimpleDataNodeContainer implements ContainerSchemaNode { - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; protected AbstractEffectiveContainerSchemaNode(final StmtContext ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedDataNodeContainer.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedDataNodeContainer.java index ad8dea7b8e..84b32691c8 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedDataNodeContainer.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveDocumentedDataNodeContainer.java @@ -37,11 +37,11 @@ import org.opendaylight.yangtools.yang.parser.spi.source.AugmentToChoiceNamespac public abstract class AbstractEffectiveDocumentedDataNodeContainer> extends AbstractSchemaEffectiveDocumentedNode implements DataNodeContainer { - private final Map childNodes; - private final Set groupings; - private final Set uses; - private final Set> typeDefinitions; - private final Set publicChildNodes; + private final ImmutableMap childNodes; + private final ImmutableSet groupings; + private final ImmutableSet uses; + private final ImmutableSet> typeDefinitions; + private final ImmutableSet publicChildNodes; protected AbstractEffectiveDocumentedDataNodeContainer(final StmtContext ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java index 6054c707f2..4b75f9bdc6 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java @@ -74,25 +74,25 @@ public abstract class AbstractEffectiveModule imports; - private final Set features; - private final @NonNull Set notifications; - private final Set augmentations; - private final Set rpcs; - private final Set deviations; - private final List extensionNodes; - private final Set identities; - private final @NonNull List unknownNodes; - private final Map childNodes; - private final Set groupings; - private final Set uses; - private final Set> typeDefinitions; - private final Set publicChildNodes; + private final ImmutableSet imports; + private final ImmutableSet features; + private final @NonNull ImmutableSet notifications; + private final ImmutableSet augmentations; + private final ImmutableSet rpcs; + private final ImmutableSet deviations; + private final ImmutableList extensionNodes; + private final ImmutableSet identities; + private final @NonNull ImmutableList unknownNodes; + private final ImmutableMap childNodes; + private final ImmutableSet groupings; + private final ImmutableSet uses; + private final ImmutableSet> typeDefinitions; + private final ImmutableSet publicChildNodes; private final SemVer semanticVersion; private Set>> submoduleContextsToBuild; - private Set submodules; + private ImmutableSet submodules; private boolean sealed; protected AbstractEffectiveModule(final StmtContext> ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveOperationDefinition.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveOperationDefinition.java index edd2626989..8d2880d92f 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveOperationDefinition.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveOperationDefinition.java @@ -30,8 +30,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @Beta public abstract class AbstractEffectiveOperationDefinition> extends AbstractEffectiveSchemaNode implements OperationDefinition { - private final Set> typeDefinitions; - private final Set groupings; + private final ImmutableSet> typeDefinitions; + private final ImmutableSet groupings; private final ContainerSchemaNode input; private final ContainerSchemaNode output; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSchemaNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSchemaNode.java index a7a9c45e3f..2c6533116a 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSchemaNode.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSchemaNode.java @@ -22,7 +22,7 @@ public abstract class AbstractEffectiveSchemaNode implements SchemaNode { private final @NonNull SchemaPath path; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableList unknownNodes; protected AbstractEffectiveSchemaNode(final StmtContext ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSimpleDataNodeContainer.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSimpleDataNodeContainer.java index 7ebc3e9590..ddd165786f 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSimpleDataNodeContainer.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveSimpleDataNodeContainer.java @@ -32,8 +32,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public abstract class AbstractEffectiveSimpleDataNodeContainer> extends AbstractEffectiveDocumentedDataNodeContainer implements AugmentationTarget, DataSchemaNode { - private final Set augmentations; - private final @NonNull List unknownNodes; + private final ImmutableSet augmentations; + private final @NonNull ImmutableList unknownNodes; private final RevisionAwareXPath whenCondition; private final @NonNull SchemaPath path; private final boolean configuration; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractSchemaEffectiveDocumentedNode.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractSchemaEffectiveDocumentedNode.java index dda4fdc22f..6e0bd75359 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractSchemaEffectiveDocumentedNode.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractSchemaEffectiveDocumentedNode.java @@ -35,8 +35,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReferenc @Beta public abstract class AbstractSchemaEffectiveDocumentedNode> extends AbstractEffectiveDocumentedNode { - private final Map> dataTreeNamespace; - private final Map> schemaTreeNamespace; + private final ImmutableMap> dataTreeNamespace; + private final ImmutableMap> schemaTreeNamespace; protected AbstractSchemaEffectiveDocumentedNode(final StmtContext ctx) { super(ctx); @@ -64,7 +64,8 @@ public abstract class AbstractSchemaEffectiveDocumentedNode> implements EffectiveStatement { - private final @NonNull List> substatements; + private final @NonNull ImmutableList> substatements; /** * Constructor. diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/StmtNamespaceContext.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/StmtNamespaceContext.java index 399090bf49..a325f48ab3 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/StmtNamespaceContext.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/StmtNamespaceContext.java @@ -27,7 +27,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils; // TODO: this is a useful utility, so it may be useful to expose it either in this package, or yang.parser.spi.source. final class StmtNamespaceContext implements NamespaceContext { private final StmtContext ctx; - private final BiMap uriToPrefix; + private final ImmutableBiMap uriToPrefix; private String localNamespaceURI; @@ -37,7 +37,7 @@ final class StmtNamespaceContext implements NamespaceContext { private StmtNamespaceContext(final StmtContext ctx, final BiMap uriToPrefix) { this.ctx = requireNonNull(ctx); - this.uriToPrefix = ImmutableBiMap.copyOf(requireNonNull(uriToPrefix)); + this.uriToPrefix = ImmutableBiMap.copyOf(uriToPrefix); } public static NamespaceContext create(final StmtContext ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java index 638929e775..66cb6cfc33 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java @@ -32,7 +32,7 @@ public abstract class UnknownEffectiveStatementBase unknownNodes; + private final @NonNull ImmutableList unknownNodes; private final QName nodeType; private final String nodeParameter; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java index 8c884bcca0..06fa4a5104 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataEffectiveStatementImpl.java @@ -32,7 +32,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode implements AnydataEffectiveStatement, AnyDataSchemaNode, DerivableSchemaNode { - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; private final AnyDataSchemaNode original; private final ContainerSchemaNode schema; private final boolean mandatory; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java index 21897ca14d..8214ce557e 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlEffectiveStatementImpl.java @@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode implements AnyxmlEffectiveStatement, AnyXmlSchemaNode, DerivableSchemaNode { - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; private final AnyXmlSchemaNode original; private final boolean mandatory; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java index 26bf0c5b43..5131c22e74 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java @@ -13,7 +13,6 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Objects; import java.util.Optional; -import java.util.Set; import java.util.regex.Pattern; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.YangVersion; @@ -324,14 +323,14 @@ abstract class AbstractAugmentStatementSupport extends AbstractStatementSupport< return false; } - private static final Set NOCOPY_DEF_SET = ImmutableSet.of(YangStmtMapping.USES, + private static final ImmutableSet NOCOPY_DEF_SET = ImmutableSet.of(YangStmtMapping.USES, YangStmtMapping.WHEN, YangStmtMapping.DESCRIPTION, YangStmtMapping.REFERENCE, YangStmtMapping.STATUS); private static boolean needToCopyByAugment(final StmtContext stmtContext) { return !NOCOPY_DEF_SET.contains(stmtContext.getPublicDefinition()); } - private static final Set REUSED_DEF_SET = ImmutableSet.of(YangStmtMapping.TYPEDEF); + private static final ImmutableSet REUSED_DEF_SET = ImmutableSet.of(YangStmtMapping.TYPEDEF); private static boolean isReusedByAugment(final StmtContext stmtContext) { return REUSED_DEF_SET.contains(stmtContext.getPublicDefinition()); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentEffectiveStatementImpl.java index 2c13b1de45..18397a9fd4 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AugmentEffectiveStatementImpl.java @@ -39,9 +39,9 @@ final class AugmentEffectiveStatementImpl private final SchemaPath targetPath; private final URI namespace; private final Revision revision; - private final @NonNull Set actions; - private final @NonNull Set notifications; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableSet actions; + private final @NonNull ImmutableSet notifications; + private final @NonNull ImmutableList unknownNodes; private final RevisionAwareXPath whenCondition; private final AugmentationSchemaNode copyOf; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/bit/BitEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/bit/BitEffectiveStatementImpl.java index d6af45fe09..e6e3c2f14e 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/bit/BitEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/bit/BitEffectiveStatementImpl.java @@ -30,7 +30,7 @@ public final class BitEffectiveStatementImpl extends AbstractEffectiveDocumented private final QName qname; private final SchemaPath schemaPath; private final Long declaredPosition; - private final @NonNull List unknownSchemaNodes; + private final @NonNull ImmutableList unknownSchemaNodes; BitEffectiveStatementImpl(final StmtContext ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceEffectiveStatementImpl.java index 0c9d127a9d..539c48fddc 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceEffectiveStatementImpl.java @@ -40,8 +40,8 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; final class ChoiceEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode implements ChoiceEffectiveStatement, ChoiceSchemaNode, DerivableSchemaNode { - private final Set augmentations; - private final SortedMap cases; + private final ImmutableSet augmentations; + private final ImmutableSortedMap cases; private final CaseSchemaNode defaultCase; private final ChoiceSchemaNode original; private final boolean mandatory; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java index 7d4e4b6e04..d1bc778e43 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java @@ -29,8 +29,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; // FIXME: hide this class public final class ContainerEffectiveStatementImpl extends AbstractEffectiveContainerSchemaNode implements ContainerEffectiveStatement, DerivableSchemaNode { - private final @NonNull Set actions; - private final @NonNull Set notifications; + private final @NonNull ImmutableSet actions; + private final @NonNull ImmutableSet notifications; private final @Nullable ContainerSchemaNode original; private final boolean presence; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java index 42a9bd8935..dfcf13b665 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/AbstractDeviateStatementSupport.java @@ -8,11 +8,11 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate; import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Maps; import com.google.common.collect.SetMultimap; +import java.util.Arrays; import java.util.Collection; -import java.util.Map; import java.util.Objects; import java.util.Set; import org.opendaylight.yangtools.yang.common.QNameModule; @@ -83,15 +83,8 @@ abstract class AbstractDeviateStatementSupport extends AbstractStatementSupport< .addOptional(YangStmtMapping.UNITS) .build(); - private static final Map KEYWORD_TO_DEVIATE_MAP; - - static { - final Builder keywordToDeviateMapBuilder = ImmutableMap.builder(); - for (final DeviateKind deviate : DeviateKind.values()) { - keywordToDeviateMapBuilder.put(deviate.getKeyword(), deviate); - } - KEYWORD_TO_DEVIATE_MAP = keywordToDeviateMapBuilder.build(); - } + private static final ImmutableMap KEYWORD_TO_DEVIATE_MAP = + Maps.uniqueIndex(Arrays.asList(DeviateKind.values()), DeviateKind::getKeyword); private static final Set SINGLETON_STATEMENTS = ImmutableSet.of( YangStmtMapping.UNITS, YangStmtMapping.CONFIG, YangStmtMapping.MANDATORY, diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/DeviateEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/DeviateEffectiveStatementImpl.java index ba9185a14f..3c60245fb4 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/DeviateEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviate/DeviateEffectiveStatementImpl.java @@ -37,9 +37,9 @@ final class DeviateEffectiveStatementImpl extends DeclaredEffectiveStatementBase private final String deviatedDefault; private final Integer deviatedMaxElements; private final Integer deviatedMinElements; - private final Set deviatedMustDefinitions; + private final ImmutableSet deviatedMustDefinitions; private final TypeDefinition deviatedType; - private final Collection deviatedUniqueConstraints; + private final ImmutableList deviatedUniqueConstraints; private final String deviatedUnits; private final byte deviatedConfig; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationEffectiveStatementImpl.java index 0938f18ceb..55fd25db60 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/deviation/DeviationEffectiveStatementImpl.java @@ -33,8 +33,8 @@ final class DeviationEffectiveStatementImpl private final SchemaPath targetPath; private final String description; private final String reference; - private final @NonNull List unknownSchemaNodes; - private final List deviateDefinitions; + private final @NonNull ImmutableList unknownSchemaNodes; + private final ImmutableList deviateDefinitions; DeviationEffectiveStatementImpl(final StmtContext ctx) { super(ctx); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumEffectiveStatementImpl.java index 54e6b9f0a9..7b150d6206 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/enum_/EnumEffectiveStatementImpl.java @@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; // FIXME: hide this class public final class EnumEffectiveStatementImpl extends AbstractEffectiveDocumentedNode implements EnumEffectiveStatement { - private final @NonNull List unknownSchemaNodes; + private final @NonNull ImmutableList unknownSchemaNodes; private final String name; private final Integer declaredValue; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionEffectiveStatementImpl.java index 126cb762d5..13e0824e8b 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ExtensionEffectiveStatementImpl.java @@ -70,7 +70,7 @@ final class ExtensionEffectiveStatementImpl extends AbstractEffectiveDocumentedN private final @Nullable String argument; private final @NonNull SchemaPath schemaPath; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableList unknownNodes; private final boolean yin; private ExtensionEffectiveStatementImpl( diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java index 38ef2a6445..88f079c6ee 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java @@ -5,7 +5,6 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping; import com.google.common.collect.ImmutableList; @@ -33,9 +32,9 @@ final class GroupingEffectiveStatementImpl private final @NonNull QName qname; private final @NonNull SchemaPath path; private final boolean addedByUses; - private final @NonNull Set actions; - private final @NonNull Set notifications; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableSet actions; + private final @NonNull ImmutableSet notifications; + private final @NonNull ImmutableList unknownNodes; GroupingEffectiveStatementImpl( final StmtContext> ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/IdentityEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/IdentityEffectiveStatementImpl.java index 1cadac9a4f..4b7d8bbf6c 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/IdentityEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/IdentityEffectiveStatementImpl.java @@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; final class IdentityEffectiveStatementImpl extends AbstractEffectiveSchemaNode implements IdentityEffectiveStatement, IdentitySchemaNode, MutableStatement { - private final Set derivedIdentities; + private final ImmutableSet derivedIdentities; private @NonNull Set baseIdentities; private boolean sealed; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java index c8d78b6893..7677a5adf5 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafEffectiveStatementImpl.java @@ -36,7 +36,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; // FIXME: hide this class public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode { - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; private final LeafSchemaNode original; private final TypeDefinition type; private final String defaultStr; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java index 6e354037ab..47a0148855 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListEffectiveStatementImpl.java @@ -11,7 +11,6 @@ import com.google.common.collect.ImmutableSet; import java.util.Collection; import java.util.Objects; import java.util.Optional; -import java.util.Set; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode; @@ -45,8 +44,8 @@ public final class LeafListEffectiveStatementImpl extends AbstractEffectiveDataS private final TypeDefinition type; private final LeafListSchemaNode original; private final boolean userOrdered; - private final @NonNull Set defaultValues; - private final Collection mustConstraints; + private final @NonNull ImmutableSet defaultValues; + private final ImmutableSet mustConstraints; private final ElementCountConstraint elementCountConstraint; LeafListEffectiveStatementImpl( diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java index cdb5b131f5..8d03679e9d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListEffectiveStatementImpl.java @@ -44,13 +44,13 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat private static final String ORDER_BY_USER_KEYWORD = "user"; private final boolean userOrdered; - private final List keyDefinition; + private final ImmutableList keyDefinition; private final ListSchemaNode original; - private final @NonNull Set actions; - private final @NonNull Set notifications; - private final @NonNull Collection uniqueConstraints; + private final @NonNull ImmutableSet actions; + private final @NonNull ImmutableSet notifications; + private final @NonNull ImmutableList uniqueConstraints; private final ElementCountConstraint elementCountConstraint; - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; ListEffectiveStatementImpl( final StmtContext> ctx) { @@ -89,7 +89,7 @@ public final class ListEffectiveStatementImpl extends AbstractEffectiveSimpleDat this.uniqueConstraints = ImmutableList.copyOf(allSubstatementsOfType(UniqueConstraint.class)); - final ImmutableSet.Builder actionsBuilder = ImmutableSet.builder(); + final Builder actionsBuilder = ImmutableSet.builder(); final Builder notificationsBuilder = ImmutableSet.builder(); for (final EffectiveStatement effectiveStatement : effectiveSubstatements()) { if (effectiveStatement instanceof ActionDefinition) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java index 3d5416bd18..22005a85d2 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/module/ModuleEffectiveStatementImpl.java @@ -46,12 +46,12 @@ import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; final class ModuleEffectiveStatementImpl extends AbstractEffectiveModule implements ModuleEffectiveStatement { - private final Map nameToSubmodule; - private final Map qnameToExtension; - private final Map qnameToFeature; - private final Map qnameToIdentity; - private final Map prefixToModule; - private final Map namespaceToPrefix; + private final ImmutableMap nameToSubmodule; + private final ImmutableMap qnameToExtension; + private final ImmutableMap qnameToFeature; + private final ImmutableMap qnameToIdentity; + private final ImmutableMap prefixToModule; + private final ImmutableMap namespaceToPrefix; private final @NonNull QNameModule qnameModule; ModuleEffectiveStatementImpl( diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java index 5bb0d4d16d..687c6931a7 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java @@ -35,11 +35,11 @@ final class NotificationEffectiveStatementImpl implements NotificationDefinition, NotificationEffectiveStatement { private final @NonNull QName qname; private final @NonNull SchemaPath path; - private final Set augmentations; - private final @NonNull List unknownNodes; + private final ImmutableSet augmentations; + private final @NonNull ImmutableList unknownNodes; private final boolean augmenting; private final boolean addedByUses; - private final Collection mustConstraints; + private final ImmutableSet mustConstraints; NotificationEffectiveStatementImpl( final StmtContext> ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java index 5092a4c5e1..95c3cb98e8 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineEffectiveStatementImpl.java @@ -31,7 +31,7 @@ public final class RefineEffectiveStatementImpl private final @NonNull QName qname; private final @NonNull SchemaPath path; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableList unknownNodes; private final SchemaNode refineTargetNode; RefineEffectiveStatementImpl(final StmtContext ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java index 9a6d604321..3645272948 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java @@ -13,7 +13,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap.Builder; import java.util.Collection; -import java.util.Map; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition; @@ -21,7 +20,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.StatementSource; import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement; final class BuiltinTypeStatement implements TypeStatement { - private static final Map BUILTINS; + private static final ImmutableMap BUILTINS; static { final Builder builder = ImmutableMap.builder(); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesEffectiveStatementImpl.java index 4170588c3f..1a1c3a11e2 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesEffectiveStatementImpl.java @@ -43,9 +43,9 @@ final class UsesEffectiveStatementImpl extends AbstractEffectiveDocumentedNode refines; - private final @NonNull Set augmentations; - private final @NonNull List unknownNodes; + private final @NonNull ImmutableMap refines; + private final @NonNull ImmutableSet augmentations; + private final @NonNull ImmutableList unknownNodes; private final @Nullable RevisionAwareXPath whenCondition; UsesEffectiveStatementImpl(final StmtContext> ctx) { diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementImpl.java index 9b22ef3f54..992944ffb4 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementImpl.java @@ -12,7 +12,6 @@ import com.google.common.collect.ImmutableSet; import java.util.ArrayList; import java.util.Collection; import java.util.Optional; -import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.YangVersion; @@ -90,7 +89,7 @@ final class UsesStatementImpl extends AbstractDeclaredStatement implement } } - private static final Set TOP_REUSED_DEF_SET = ImmutableSet.of( + private static final ImmutableSet TOP_REUSED_DEF_SET = ImmutableSet.of( YangStmtMapping.TYPE, YangStmtMapping.TYPEDEF); @@ -98,11 +97,11 @@ final class UsesStatementImpl extends AbstractDeclaredStatement implement return TOP_REUSED_DEF_SET.contains(stmtContext.getPublicDefinition()); } - private static final Set NOCOPY_FROM_GROUPING_SET = ImmutableSet.of( + private static final ImmutableSet NOCOPY_FROM_GROUPING_SET = ImmutableSet.of( YangStmtMapping.DESCRIPTION, YangStmtMapping.REFERENCE, YangStmtMapping.STATUS); - private static final Set REUSED_DEF_SET = ImmutableSet.of( + private static final ImmutableSet REUSED_DEF_SET = ImmutableSet.of( YangStmtMapping.TYPE, YangStmtMapping.TYPEDEF, YangStmtMapping.USES); @@ -194,7 +193,8 @@ final class UsesStatementImpl extends AbstractDeclaredStatement implement } } - private static final Set ALLOWED_TO_ADD_BY_REFINE_DEF_SET = ImmutableSet.of(YangStmtMapping.MUST); + private static final ImmutableSet ALLOWED_TO_ADD_BY_REFINE_DEF_SET = + ImmutableSet.of(YangStmtMapping.MUST); private static boolean isAllowedToAddByRefine(final StatementDefinition publicDefinition) { return ALLOWED_TO_ADD_BY_REFINE_DEF_SET.contains(publicDefinition); diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java index 4f53b98359..10ead73f2e 100644 --- a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java +++ b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupportBundle.java @@ -36,10 +36,10 @@ public final class StatementSupportBundle implements Immutable, NamespaceBehavio private final ImmutableMap> commonDefinitions; private final ImmutableTable> versionSpecificDefinitions; private final ImmutableMap, NamespaceBehaviour> namespaceDefinitions; - private final Set supportedVersions; + private final ImmutableSet supportedVersions; private StatementSupportBundle(final StatementSupportBundle parent, - final Set supportedVersions, + final ImmutableSet supportedVersions, final ImmutableMap> commonStatements, final ImmutableMap, NamespaceBehaviour> namespaces, final ImmutableTable> versionSpecificStatements) { @@ -167,7 +167,7 @@ public final class StatementSupportBundle implements Immutable, NamespaceBehavio .create(); private final Map, NamespaceBehaviour> namespaces = new HashMap<>(); - private final Set supportedVersions; + private final ImmutableSet supportedVersions; private StatementSupportBundle parent; Builder(final Set supportedVersions, final StatementSupportBundle parent) { diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SubstatementValidator.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SubstatementValidator.java index 56ebb8cf82..7567f49533 100644 --- a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SubstatementValidator.java +++ b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SubstatementValidator.java @@ -19,8 +19,8 @@ import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace; import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; public final class SubstatementValidator { - private final Map cardinalityMap; - private final Map mandatoryStatements; + private final ImmutableMap cardinalityMap; + private final ImmutableMap mandatoryStatements; private final StatementDefinition currentStatement; private SubstatementValidator(final Builder builder) { -- 2.36.6