From 29fb90116883182758dc9ec67cfcf1344a3cf951 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 18 Nov 2020 12:24:49 +0100 Subject: [PATCH] Propagate @NonNull collection annotations We do not allow nulls in our collections. Add the appropriate annotation to trim down downstream false positives. Change-Id: Iceaf2bdd6a82b0ad73035ab86d06f283e46c42c5 Signed-off-by: Robert Varga --- .../yang/model/api/ActionNodeContainer.java | 2 +- .../yang/model/api/AugmentationTarget.java | 3 ++- .../yang/model/api/ChoiceSchemaNode.java | 5 +++-- .../yang/model/api/DataNodeContainer.java | 9 +++++---- .../yang/model/api/DeviateDefinition.java | 5 +++-- .../yangtools/yang/model/api/Deviation.java | 2 +- .../yang/model/api/DocumentedNode.java | 2 +- .../yang/model/api/IdentitySchemaNode.java | 2 +- .../yang/model/api/LeafListSchemaNode.java | 2 +- .../yang/model/api/ListSchemaNode.java | 4 ++-- .../yangtools/yang/model/api/ModuleLike.java | 17 +++++++++-------- .../yang/model/api/MustConstraintAware.java | 8 ++++---- .../model/api/NotificationNodeContainer.java | 2 +- .../yang/model/api/OperationDefinition.java | 5 +++-- .../yangtools/yang/model/api/SchemaContext.java | 16 ++++++++-------- .../yang/model/api/meta/EffectiveStatement.java | 2 +- .../yang/model/api/type/RangeConstraint.java | 3 ++- .../src/main/java/module-info.java | 3 +++ .../yang/model/util/AbstractSchemaContext.java | 3 ++- .../model/util/FilteringSchemaContextProxy.java | 6 ++++-- .../yang/model/util/SimpleSchemaContext.java | 3 ++- .../util/type/ResolvedRangeConstraint.java | 5 +++-- .../stmt/AbstractEffectiveStatement.java | 2 +- .../rfc7950/stmt/EffectiveStatementMixins.java | 12 ++++++------ .../deviate/DeviateEffectiveStatementImpl.java | 5 +++-- .../yangtools/yang/stmt/TestUtils.java | 3 ++- 26 files changed, 74 insertions(+), 57 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionNodeContainer.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionNodeContainer.java index 420d99f3db..c258c38d75 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionNodeContainer.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ActionNodeContainer.java @@ -25,7 +25,7 @@ public interface ActionNodeContainer { * * @return set of action nodes */ - @NonNull Collection getActions(); + @NonNull Collection getActions(); /** * Find an action based on its QName. Default implementation searches the set returned by {@link #getActions()}. diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AugmentationTarget.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AugmentationTarget.java index dbf8e46f5d..22276991f7 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AugmentationTarget.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/AugmentationTarget.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.model.api; import java.util.Collection; +import org.eclipse.jdt.annotation.NonNull; /** * Interface for all nodes which are possible targets of augmentation. The @@ -20,5 +21,5 @@ public interface AugmentationTarget { * * @return set of augmentations targeting this element. */ - Collection getAvailableAugmentations(); + @NonNull Collection getAvailableAugmentations(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java index 6d7a0bd1d9..37b4f7274e 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceSchemaNode.java @@ -14,6 +14,7 @@ import com.google.common.collect.ImmutableList; import java.util.Collection; import java.util.List; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceEffectiveStatement; @@ -30,7 +31,7 @@ public interface ChoiceSchemaNode extends DataSchemaNode, AugmentationTarget, Ma * @return set of ChoiceCaseNode objects defined in this node which represents set of arguments of the YANG * case substatement of the choice statement. */ - Collection getCases(); + Collection getCases(); /** * Returns the concrete case according to specified Q name. @@ -54,7 +55,7 @@ public interface ChoiceSchemaNode extends DataSchemaNode, AugmentationTarget, Ma * @throws NullPointerException if localname is null */ @Beta - default List findCaseNodes(final String localname) { + default List findCaseNodes(final String localname) { return getCases().stream().filter(node -> localname.equals(node.getQName().getLocalName())) .collect(ImmutableList.toImmutableList()); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java index 658d408293..9b695fe02e 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DataNodeContainer.java @@ -16,6 +16,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.NoSuchElementException; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; @@ -28,7 +29,7 @@ public interface DataNodeContainer { * * @return typedef statements in lexicographical order */ - Collection> getTypeDefinitions(); + @NonNull Collection> getTypeDefinitions(); /** * Returns set of all child nodes defined within this DataNodeContainer. Although the return type is a collection, @@ -41,14 +42,14 @@ public interface DataNodeContainer { * * @return child nodes in lexicographical order */ - Collection getChildNodes(); + @NonNull Collection getChildNodes(); /** * Returns set of all groupings defined within this DataNodeContainer. * * @return grouping statements in lexicographical order */ - Collection getGroupings(); + @NonNull Collection getGroupings(); /** * Returns the child node corresponding to the specified name. @@ -114,7 +115,7 @@ public interface DataNodeContainer { * * @return Set of all uses nodes defined within this DataNodeContainer */ - Collection getUses(); + @NonNull Collection getUses(); /** * Returns a {@code data node} identified by a QName. This method is distinct from diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DeviateDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DeviateDefinition.java index 6ba7c7c77c..fbe8b26743 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DeviateDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DeviateDefinition.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.model.api; import com.google.common.annotations.Beta; import java.util.Collection; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.model.api.stmt.DeviateEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement; @@ -69,7 +70,7 @@ public interface DeviateDefinition extends EffectiveStatementEquivalent getDeviatedMusts(); + Collection getDeviatedMusts(); /** * Returns deviated type statement. @@ -83,7 +84,7 @@ public interface DeviateDefinition extends EffectiveStatementEquivalent getDeviatedUniques(); + Collection getDeviatedUniques(); /** * Returns deviated units statement. diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Deviation.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Deviation.java index f9b31d3e2c..5f4b84165a 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Deviation.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/Deviation.java @@ -34,5 +34,5 @@ public interface Deviation extends DocumentedNode, EffectiveStatementEquivalent< * * @return Collection of all deviate statements defined in this deviation. */ - @NonNull Collection getDeviates(); + @NonNull Collection getDeviates(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java index 0d9b27f69e..6fe4a293bc 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java @@ -35,7 +35,7 @@ public interface DocumentedNode { * * @return collection of unknown schema nodes defined under this node. */ - default @NonNull Collection getUnknownSchemaNodes() { + default @NonNull Collection getUnknownSchemaNodes() { return ImmutableList.of(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/IdentitySchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/IdentitySchemaNode.java index 8a8dd29457..3b1c5dd8d1 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/IdentitySchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/IdentitySchemaNode.java @@ -31,5 +31,5 @@ public interface IdentitySchemaNode extends SchemaNode, EffectiveStatementEquiva * @return set of existing identities from which the new identity is derived or an empty Set if the identity is * a root identity. */ - @NonNull Collection getBaseIdentities(); + @NonNull Collection getBaseIdentities(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java index 34828e1981..68a8f01ad0 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/LeafListSchemaNode.java @@ -32,5 +32,5 @@ public interface LeafListSchemaNode extends TypedDataSchemaNode, MustConstraintA * * @return Ordered list of Strings which specify the default values of this leaf-list */ - @NonNull Collection getDefaults(); + @NonNull Collection getDefaults(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java index a9627ba099..848d4bada1 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java @@ -29,7 +29,7 @@ public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, D * * @return List of QNames of leaf identifiers of this list, empty if the list has no keys. */ - @NonNull List getKeyDefinition(); + @NonNull List<@NonNull QName> getKeyDefinition(); /** * YANG 'ordered-by' statement. It defines whether the order of entries within a list are determined by the user @@ -44,5 +44,5 @@ public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, D * * @return Collection of unique constraints of this list schema node */ - @NonNull Collection getUniqueConstraints(); + @NonNull Collection getUniqueConstraints(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java index b869ad0cc6..09892dfe1e 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ModuleLike.java @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.model.api; import com.google.common.annotations.Beta; import java.util.Collection; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.yang.common.YangVersion; @@ -75,10 +76,10 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return set of module imports which are specified in the module as the argument of YANG {@code import} * statements. */ - Collection getImports(); + Collection getImports(); // FIXME: YANGTOOLS-1006: this should be only in Module - Collection getSubmodules(); + Collection getSubmodules(); /** * Returns {@link FeatureDefinition} instances which contain data from {@code feature} statements defined in the @@ -90,7 +91,7 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return feature statements in lexicographical order which are specified in the module as the argument of YANG * {@code feature} statements. */ - Collection getFeatures(); + Collection getFeatures(); /** * Returns {@link AugmentationSchemaNode} instances which contain data from {@code augment} statements defined @@ -99,7 +100,7 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return set of the augmentation schema instances which are specified in the module as YANG {@code augment} * statement and are lexicographically ordered */ - Collection getAugmentations(); + Collection getAugmentations(); /** * Returns {@link RpcDefinition} instances which contain data from {@code rpc} statements defined in the module. @@ -107,14 +108,14 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return set of the RPC definition instances which are specified in the module as YANG {@code rpc} statements and * are lexicographicaly ordered */ - Collection getRpcs(); + Collection getRpcs(); /** * Returns {@link Deviation} instances which contain data from {@code deviation} statements defined in the module. * * @return set of the deviation instances */ - Collection getDeviations(); + Collection getDeviations(); /** * Returns {@link IdentitySchemaNode} instances which contain data from {@code identity} statements defined in the @@ -123,7 +124,7 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return set of identity schema node instances which are specified in the module as YANG {@code identity} * statements and are lexicographically ordered */ - Collection getIdentities(); + Collection getIdentities(); /** * Returns {@link ExtensionDefinition} instances which contain data from {@code extension} statements defined in @@ -132,5 +133,5 @@ public interface ModuleLike extends DataNodeContainer, DocumentedNode, Immutable * @return set of extension definition instances which are specified in the module as YANG {@code extension} * statements and are lexicographically ordered */ - Collection getExtensionSchemaNodes(); + Collection getExtensionSchemaNodes(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/MustConstraintAware.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/MustConstraintAware.java index 8ec0bd7cc9..7e6c10eaa7 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/MustConstraintAware.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/MustConstraintAware.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.model.api; import java.util.Collection; +import org.eclipse.jdt.annotation.NonNull; /** * Mix-in interface for nodes which can define must constraints. @@ -16,10 +17,9 @@ import java.util.Collection; */ public interface MustConstraintAware { /** - * Specifies the rules which the node which contains must YANG substatement has to match. + * Specifies the rules which the node which contains {@code must} YANG substatement has to match. * - * @return collection of MustDefinition (XPath) instances which represents the concrete data - * constraints + * @return collection of {@code MustDefinition} (XPath) instances which represents the concrete data constraints */ - Collection getMustConstraints(); + Collection getMustConstraints(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/NotificationNodeContainer.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/NotificationNodeContainer.java index f77caf9af8..762a4e9de4 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/NotificationNodeContainer.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/NotificationNodeContainer.java @@ -22,7 +22,7 @@ public interface NotificationNodeContainer { * * @return set of notification nodes */ - @NonNull Collection getNotifications(); + @NonNull Collection getNotifications(); /** * Find a notification based on its QName. Default implementation searches the set returned by diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OperationDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OperationDefinition.java index b06d397ceb..1494337cbe 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OperationDefinition.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/OperationDefinition.java @@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.model.api; import com.google.common.annotations.Beta; import java.util.Collection; +import org.eclipse.jdt.annotation.NonNull; /** * Common interface for an operation. @@ -20,14 +21,14 @@ public interface OperationDefinition extends SchemaNode { * * @return Set of type definitions declared under this operation. */ - Collection> getTypeDefinitions(); + Collection> getTypeDefinitions(); /** * Returns the set of grouping statements declared under this operation. * * @return Set of grouping statements declared under this operation. */ - Collection getGroupings(); + Collection getGroupings(); /** * Returns definition of input parameters for this operation. diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java index 0a94ddd3b6..0e74f13f51 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java @@ -49,7 +49,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * @return set of DataSchemaNode instances which represents * YANG data nodes at the module top level */ - Collection getDataDefinitions(); + @NonNull Collection getDataDefinitions(); /** * Returns modules which are part of the schema context. Returned set is required to have its iteration ordered @@ -58,7 +58,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * * @return set of the modules which belong to the schema context */ - Collection getModules(); + @NonNull Collection getModules(); /** * Returns rpc definition instances which are defined as the direct @@ -67,7 +67,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * @return set of RpcDefinition instances which represents * nodes defined via rpc YANG keyword */ - Collection getOperations(); + @NonNull Collection getOperations(); /** * Returns extension definition instances which are defined as the direct @@ -76,7 +76,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * @return set of ExtensionDefinition instances which * represents nodes defined via extension YANG keyword */ - Collection getExtensions(); + @NonNull Collection getExtensions(); /** * Returns the module matching specified {@link QNameModule}, if present. @@ -170,7 +170,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * string with the module name * @return set of module instances with specified name. */ - default Collection findModules(final String name) { + default @NonNull Collection findModules(final String name) { return Collections2.filter(getModules(), m -> name.equals(m.getName())); } @@ -183,7 +183,7 @@ public interface SchemaContext extends ContainerLike, Immutable { * @return module instance which has namespace equal to the * namespace or null in other cases */ - default Collection findModules(final URI namespace) { + default @NonNull Collection findModules(final URI namespace) { return Collections2.filter(getModules(), m -> namespace.equals(m.getNamespace())); } @@ -202,7 +202,7 @@ public interface SchemaContext extends ContainerLike, Immutable { @Override default Optional findNotification(final QName qname) { - final Optional> defs = findModule(qname.getModule()) + final Optional> defs = findModule(qname.getModule()) .map(Module::getNotifications); if (defs.isPresent()) { for (NotificationDefinition def : defs.get()) { @@ -228,7 +228,7 @@ public interface SchemaContext extends ContainerLike, Immutable { @Override @Deprecated - default Collection getMustConstraints() { + default Collection getMustConstraints() { return ImmutableSet.of(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/EffectiveStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/EffectiveStatement.java index bb6e4d5338..bff2296f69 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/EffectiveStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/meta/EffectiveStatement.java @@ -62,7 +62,7 @@ public interface EffectiveStatement> extends M * * @return collection of all effective substatements. */ - @NonNull Collection> effectiveSubstatements(); + @NonNull Collection> effectiveSubstatements(); /** * Find the first effective substatement of specified type. diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/RangeConstraint.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/RangeConstraint.java index 9a6595eaab..ea6a4f3dbd 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/RangeConstraint.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/RangeConstraint.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.model.api.type; import com.google.common.collect.RangeSet; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition; /** @@ -20,5 +21,5 @@ public interface RangeConstraint> extends Const * * @return Set of allowed lengths. */ - RangeSet getAllowedRanges(); + RangeSet<@NonNull T> getAllowedRanges(); } diff --git a/yang/yang-model-util/src/main/java/module-info.java b/yang/yang-model-util/src/main/java/module-info.java index 77c5563a2b..c94c5acf1a 100644 --- a/yang/yang-model-util/src/main/java/module-info.java +++ b/yang/yang-model-util/src/main/java/module-info.java @@ -14,4 +14,7 @@ module org.opendaylight.yangtools.yang.model.util { requires org.opendaylight.yangtools.util; requires org.slf4j; + + // Annotations + requires static transitive org.eclipse.jdt.annotation; } diff --git a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java index 913edc3b01..7481c7214e 100644 --- a/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java +++ b/yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/util/AbstractSchemaContext.java @@ -29,6 +29,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.TreeSet; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; @@ -236,7 +237,7 @@ public abstract class AbstractSchemaContext implements SchemaContext { Multimaps.newSetMultimap(new HashMap<>(), HashSet::new); final List identities = new ArrayList<>(); for (Module module : getModules()) { - final Collection ids = module.getIdentities(); + final Collection ids = module.getIdentities(); for (IdentitySchemaNode identity : ids) { for (IdentitySchemaNode base : identity.getBaseIdentities()) { tmp.put(base, identity); 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 ec3c9e958a..d858276c90 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 @@ -33,6 +33,7 @@ import java.util.Optional; import java.util.Set; import java.util.TreeMap; import java.util.function.Function; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; import org.opendaylight.yangtools.yang.model.api.Module; @@ -123,8 +124,9 @@ public final class FilteringSchemaContextProxy extends AbstractSchemaContext { } //dealing with imported module other than root and directly importing root - private static Collection getImportedModules(final Map allModules, - final Collection baseModules, final TreeMultimap nameToModulesAll) { + private static Collection getImportedModules(final Map allModules, + final Collection baseModules, + final TreeMultimap nameToModulesAll) { List relatedModules = new LinkedList<>(); 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 43804dee27..3603810ff4 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 @@ -26,6 +26,7 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.TreeMap; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode; import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNodeAwareSchemaContext; import org.opendaylight.yangtools.yang.common.QName; @@ -45,7 +46,7 @@ public class SimpleSchemaContext extends AbstractSchemaContext implements Annota private final ImmutableSet modules; private final ImmutableMap annotations; - protected SimpleSchemaContext(final Collection modules) { + protected SimpleSchemaContext(final Collection modules) { /* * Instead of doing this on each invocation of getModules(), pre-compute it once and keep it around -- better * than the set we got in. 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 178ef2123d..93d41f3003 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 @@ -12,13 +12,14 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableRangeSet; import com.google.common.collect.RangeSet; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.api.ConstraintMetaDefinition; import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint; final class ResolvedRangeConstraint> implements RangeConstraint, Immutable { + private final ImmutableRangeSet<@NonNull T> ranges; private final ConstraintMetaDefinition meta; - private final ImmutableRangeSet ranges; ResolvedRangeConstraint(final ConstraintMetaDefinition meta, final RangeSet ranges) { this.meta = requireNonNull(meta); @@ -46,7 +47,7 @@ final class ResolvedRangeConstraint> implements } @Override - public RangeSet getAllowedRanges() { + public RangeSet<@NonNull T> getAllowedRanges() { return ranges; } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveStatement.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveStatement.java index 19fd331047..f4f8af2f8d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveStatement.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveStatement.java @@ -80,7 +80,7 @@ public abstract class AbstractEffectiveStatement> unmaskList( + protected static final @NonNull ImmutableList> unmaskList( final @NonNull Object masked) { return (ImmutableList) unmaskList(masked, EffectiveStatement.class); } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java index e16d066b49..91af95ff5e 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java @@ -68,7 +68,7 @@ public final class EffectiveStatementMixins { // Marker interface requiring all mixins to be derived from EffectiveStatement. private interface Mixin> extends EffectiveStatement { @SuppressWarnings("unchecked") - default @NonNull Collection filterEffectiveStatements(final Class type) { + default @NonNull Collection filterEffectiveStatements(final Class type) { // Yeah, this is not nice, but saves one transformation return (Collection) Collections2.filter(effectiveSubstatements(), type::isInstance); } @@ -138,7 +138,7 @@ public final class EffectiveStatementMixins { */ public interface MustConstraintMixin> extends Mixin, MustConstraintAware { @Override - default Collection getMustConstraints() { + default Collection getMustConstraints() { return filterEffectiveStatements(MustDefinition.class); } } @@ -417,12 +417,12 @@ public final class EffectiveStatementMixins { } @Override - default Collection> getTypeDefinitions() { + default Collection> getTypeDefinitions() { return filterTypeDefinitions(this); } @Override - default Collection getGroupings() { + default Collection getGroupings() { return filterEffectiveStatements(GroupingDefinition.class); } @@ -556,11 +556,11 @@ public final class EffectiveStatementMixins { } static T findAsContainer(final EffectiveStatement stmt, - final Class> type, Class target) { + final Class> type, final Class target) { return target.cast(stmt.findFirstEffectiveSubstatement(type).get()); } - static Collection> filterTypeDefinitions(final Mixin stmt) { + static Collection> filterTypeDefinitions(final Mixin stmt) { return Collections2.transform(stmt.filterEffectiveStatements(TypedefEffectiveStatement.class), TypedefEffectiveStatement::getTypeDefinition); } 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 ee35b794b3..f5b24abadb 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 @@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.deviate; import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableList; import java.util.Collection; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.model.api.DeviateDefinition; import org.opendaylight.yangtools.yang.model.api.DeviateKind; import org.opendaylight.yangtools.yang.model.api.MustDefinition; @@ -67,7 +68,7 @@ final class DeviateEffectiveStatementImpl extends WithSubstatements getDeviatedMusts() { + public Collection getDeviatedMusts() { return allSubstatementsOfType(MustDefinition.class); } @@ -78,7 +79,7 @@ final class DeviateEffectiveStatementImpl extends WithSubstatements getDeviatedUniques() { + public Collection getDeviatedUniques() { return allSubstatementsOfType(UniqueEffectiveStatement.class); } diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java index 870d01d830..eaeb52aaf3 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.YangConstants; @@ -99,7 +100,7 @@ public final class TestUtils { return ctx.getModules().iterator().next(); } - public static Optional findModule(final SchemaContext context, final String moduleName) { + public static Optional findModule(final SchemaContext context, final String moduleName) { return context.getModules().stream().filter(module -> moduleName.equals(module.getName())).findAny(); } -- 2.36.6