From 5f9139337eaf713201b1d7c9d5e356d55a9689e9 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 23 Oct 2018 17:04:46 +0200 Subject: [PATCH] Migrate SchemaNode to JDT annotations This is trivial use of @Nonnull, migrate it over along with implementations, also cascading annotations to SchemaContext and SchemaPath. Change-Id: I7359582d6696f60a262b779d9aed728e4f828637 JIRA: YANGTOOLS-907 Signed-off-by: Robert Varga --- .../yangtools/yang/model/api/SchemaContext.java | 2 +- .../yangtools/yang/model/api/SchemaNode.java | 9 ++++----- .../yangtools/yang/model/api/SchemaPath.java | 13 +++++++------ .../yang/model/util/AbstractSchemaContext.java | 3 --- .../model/util/type/AbstractTypeDefinition.java | 3 --- .../yangtools/yang/model/util/type/BitImpl.java | 3 --- .../OpenConfigVersionEffectiveStatementImpl.java | 6 ++---- .../AbstractEffectiveSimpleDataNodeContainer.java | 5 +---- .../rfc7950/stmt/choice/ImplicitCaseSchemaNode.java | 11 +++++------ .../extension/ExtensionEffectiveStatementImpl.java | 11 ++++++----- .../UnrecognizedEffectiveStatementImpl.java | 6 ++---- .../grouping/GroupingEffectiveStatementImpl.java | 11 +++++------ .../NotificationEffectiveStatementImpl.java | 11 +++++------ .../stmt/refine/RefineEffectiveStatementImpl.java | 6 ++++-- .../ThirdPartyExtensionEffectiveStatementImpl.java | 6 ++---- 15 files changed, 44 insertions(+), 62 deletions(-) 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 01f28a44c5..8546231c62 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 @@ -36,7 +36,7 @@ public interface SchemaContext extends ContainerSchemaNode { /** * QName of NETCONF top-level data node. */ - QName NAME = QName.create(URI.create("urn:ietf:params:xml:ns:netconf:base:1.0"), "data").intern(); + @NonNull QName NAME = QName.create(URI.create("urn:ietf:params:xml:ns:netconf:base:1.0"), "data").intern(); /** * Returns data schema node instances which represents direct subnodes (like diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java index 75df5a316f..b308ec38a7 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaNode.java @@ -7,7 +7,7 @@ */ package org.opendaylight.yangtools.yang.model.api; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; /** @@ -19,13 +19,12 @@ public interface SchemaNode extends DocumentedNode.WithStatus { * * @return QName with the name of the schema node */ - @Nonnull QName getQName(); + @NonNull QName getQName(); /** - * Returns the schema path of the instance of the type - * SchemaNode SchemaNode. + * Returns the schema path of the instance of the type {@code SchemaNode}. * * @return schema path of the schema node */ - @Nonnull SchemaPath getPath(); + @NonNull SchemaPath getPath(); } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java index f0ab52376f..a2c1cd4d5e 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaPath.java @@ -22,6 +22,7 @@ import java.util.List; import java.util.NoSuchElementException; import java.util.Objects; import java.util.concurrent.atomic.AtomicReferenceFieldUpdater; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; @@ -75,12 +76,12 @@ public abstract class SchemaPath implements Immutable { /** * Shared instance of the conceptual root schema node. */ - public static final SchemaPath ROOT = new AbsoluteSchemaPath(null, null); + public static final @NonNull SchemaPath ROOT = new AbsoluteSchemaPath(null, null); /** * Shared instance of the "same" relative schema node. */ - public static final SchemaPath SAME = new RelativeSchemaPath(null, null); + public static final @NonNull SchemaPath SAME = new RelativeSchemaPath(null, null); /** * Parent path. @@ -181,7 +182,7 @@ public abstract class SchemaPath implements Immutable { * @param relative Relative path * @return A new child path */ - public SchemaPath createChild(final Iterable relative) { + public @NonNull SchemaPath createChild(final Iterable relative) { if (Iterables.isEmpty(relative)) { return this; } @@ -200,7 +201,7 @@ public abstract class SchemaPath implements Immutable { * @param relative Relative SchemaPath * @return A new child path */ - public SchemaPath createChild(final SchemaPath relative) { + public @NonNull SchemaPath createChild(final SchemaPath relative) { checkArgument(!relative.isAbsolute(), "Child creation requires relative path"); return createChild(relative.getPathFromRoot()); } @@ -211,7 +212,7 @@ public abstract class SchemaPath implements Immutable { * @param element Relative SchemaPath elements * @return A new child path */ - public abstract SchemaPath createChild(QName element); + public abstract @NonNull SchemaPath createChild(QName element); /** * Create a child path based on concatenation of this path and additional @@ -220,7 +221,7 @@ public abstract class SchemaPath implements Immutable { * @param elements Relative SchemaPath elements * @return A new child path */ - public SchemaPath createChild(final QName... elements) { + public @NonNull SchemaPath createChild(final QName... elements) { return createChild(Arrays.asList(elements)); } 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 15b42215da..035173508f 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 @@ -22,7 +22,6 @@ import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.TreeSet; -import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.Revision; @@ -169,13 +168,11 @@ public abstract class AbstractSchemaContext implements SchemaContext { return false; } - @Nonnull @Override public QName getQName() { return SchemaContext.NAME; } - @Nonnull @Override public SchemaPath getPath() { return SchemaPath.ROOT; 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 983f55319d..13e6b00f4c 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 @@ -12,7 +12,6 @@ import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; import java.util.Collection; import java.util.List; -import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; @@ -29,13 +28,11 @@ abstract class AbstractTypeDefinition> implements Im this.unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodes); } - @Nonnull @Override public final QName getQName() { return path.getLastComponent(); } - @Nonnull @Override public final SchemaPath getPath() { return path; 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 ed5c5bd7a1..90a89fe7af 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 @@ -13,7 +13,6 @@ import static java.util.Objects.requireNonNull; import java.util.List; import java.util.Objects; import java.util.Optional; -import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.common.QName; @@ -42,13 +41,11 @@ final class BitImpl implements Bit, Immutable { this.unknownNodes = requireNonNull(unknownNodes); } - @Nonnull @Override public QName getQName() { return schemaPath.getLastComponent(); } - @Nonnull @Override public SchemaPath getPath() { return schemaPath; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java index 12744f7e0f..e55759cb3a 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/openconfig/stmt/OpenConfigVersionEffectiveStatementImpl.java @@ -8,7 +8,7 @@ package org.opendaylight.yangtools.yang.parser.openconfig.stmt; import java.util.Objects; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.concepts.SemVer; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionEffectiveStatement; import org.opendaylight.yangtools.openconfig.model.api.OpenConfigVersionStatement; @@ -21,20 +21,18 @@ final class OpenConfigVersionEffectiveStatementImpl extends UnknownEffectiveStatementBase implements OpenConfigVersionEffectiveStatement { - private final SchemaPath path; + private final @NonNull SchemaPath path; OpenConfigVersionEffectiveStatementImpl(final StmtContext ctx) { super(ctx); path = ctx.getParentContext().getSchemaPath().get().createChild(getNodeType()); } - @Nonnull @Override public QName getQName() { return getNodeType(); } - @Nonnull @Override public SchemaPath getPath() { return path; 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 35452c9c98..7ebc3e9590 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 @@ -14,7 +14,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Optional; import java.util.Set; -import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; @@ -36,7 +35,7 @@ public abstract class AbstractEffectiveSimpleDataNodeContainer augmentations; private final @NonNull List unknownNodes; private final RevisionAwareXPath whenCondition; - private final SchemaPath path; + private final @NonNull SchemaPath path; private final boolean configuration; private final boolean addedByUses; @@ -77,13 +76,11 @@ public abstract class AbstractEffectiveSimpleDataNodeContainer unknownNodes; @@ -76,7 +78,7 @@ final class ExtensionEffectiveStatementImpl extends AbstractEffectiveDocumentedN private ExtensionEffectiveStatementImpl( final StmtContext> ctx) { super(ctx); - this.qname = ctx.getStatementArgument(); + this.qname = verifyNotNull(ctx.getStatementArgument()); this.schemaPath = ctx.getSchemaPath().get(); final List unknownNodesInit = new ArrayList<>(); @@ -135,7 +137,6 @@ final class ExtensionEffectiveStatementImpl extends AbstractEffectiveDocumentedN return super.initSubstatements(substatementsInit); } - @Nonnull @Override public QName getQName() { return qname; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedEffectiveStatementImpl.java index 69eafb5d6c..72335e64b9 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedEffectiveStatementImpl.java @@ -8,7 +8,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension; import java.util.Objects; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; @@ -22,7 +22,7 @@ final class UnrecognizedEffectiveStatementImpl extends UnknownEffectiveStatement implements UnrecognizedEffectiveStatement { private final QName maybeQNameArgument; - private final SchemaPath path; + private final @NonNull SchemaPath path; UnrecognizedEffectiveStatementImpl(final StmtContext ctx) { super(ctx); @@ -44,13 +44,11 @@ final class UnrecognizedEffectiveStatementImpl extends UnknownEffectiveStatement path = ctx.getParentContext().getSchemaPath().get().createChild(maybeQNameArgument); } - @Nonnull @Override public QName getQName() { return maybeQNameArgument; } - @Nonnull @Override public SchemaPath getPath() { return path; 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 d6c41db993..8ad1da2a61 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 @@ -8,12 +8,13 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.grouping; +import static com.google.common.base.Verify.verifyNotNull; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.util.List; import java.util.Objects; import java.util.Set; -import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ActionDefinition; @@ -31,8 +32,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; final class GroupingEffectiveStatementImpl extends AbstractEffectiveDocumentedDataNodeContainer implements GroupingDefinition, GroupingEffectiveStatement { - private final QName qname; - private final SchemaPath path; + private final @NonNull QName qname; + private final @NonNull SchemaPath path; private final boolean addedByUses; private final @NonNull Set actions; private final @NonNull Set notifications; @@ -42,7 +43,7 @@ final class GroupingEffectiveStatementImpl final StmtContext> ctx) { super(ctx); - qname = ctx.getStatementArgument(); + qname = verifyNotNull(ctx.getStatementArgument()); path = ctx.getSchemaPath().get(); addedByUses = ctx.getCopyHistory().contains(CopyType.ADDED_BY_USES); @@ -68,13 +69,11 @@ final class GroupingEffectiveStatementImpl unknownNodes = b.build(); } - @Nonnull @Override public QName getQName() { return qname; } - @Nonnull @Override public SchemaPath getPath() { return path; 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 4dcd4d4f96..1281ffb92f 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 @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.notification; +import static com.google.common.base.Verify.verifyNotNull; + import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import java.util.ArrayList; @@ -15,7 +17,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Objects; import java.util.Set; -import javax.annotation.Nonnull; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; @@ -34,8 +35,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; final class NotificationEffectiveStatementImpl extends AbstractEffectiveDocumentedDataNodeContainer implements NotificationDefinition, NotificationEffectiveStatement { - private final QName qname; - private final SchemaPath path; + private final @NonNull QName qname; + private final @NonNull SchemaPath path; private final Set augmentations; private final @NonNull List unknownNodes; private final boolean augmenting; @@ -45,7 +46,7 @@ final class NotificationEffectiveStatementImpl NotificationEffectiveStatementImpl( final StmtContext> ctx) { super(ctx); - this.qname = ctx.getStatementArgument(); + this.qname = verifyNotNull(ctx.getStatementArgument()); this.path = ctx.getSchemaPath().get(); // initSubstatementCollections @@ -76,13 +77,11 @@ final class NotificationEffectiveStatementImpl } } - @Nonnull @Override public QName getQName() { return qname; } - @Nonnull @Override public SchemaPath getPath() { return path; 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 ee6a5b8100..f2f304f124 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 @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine; +import static com.google.common.base.Verify.verifyNotNull; + import com.google.common.collect.ImmutableList; import java.util.List; import java.util.stream.Collectors; @@ -27,14 +29,14 @@ public final class RefineEffectiveStatementImpl extends AbstractEffectiveDocumentedNode implements RefineEffectiveStatement, SchemaNode { - private final QName qname; + private final @NonNull QName qname; private final @NonNull SchemaPath path; private final @NonNull List unknownNodes; private final SchemaNode refineTargetNode; RefineEffectiveStatementImpl(final StmtContext ctx) { super(ctx); - qname = ctx.getStatementArgument().getLastComponent(); + qname = verifyNotNull(ctx.getStatementArgument().getLastComponent()); path = ctx.getSchemaPath().get(); refineTargetNode = (SchemaNode) ctx.getEffectOfStatement().iterator().next().buildEffective(); diff --git a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java index 33551cd78f..206c3d2da3 100644 --- a/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java +++ b/yang/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/thirdparty/plugin/ThirdPartyExtensionEffectiveStatementImpl.java @@ -9,7 +9,7 @@ package org.opendaylight.yangtools.yang.thirdparty.plugin; import java.util.Objects; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase; @@ -19,7 +19,7 @@ final class ThirdPartyExtensionEffectiveStatementImpl extends UnknownEffectiveStatementBase implements ThirdPartyExtensionEffectiveStatement { - private final SchemaPath path; + private final @NonNull SchemaPath path; private final String valueFromNamespace; ThirdPartyExtensionEffectiveStatementImpl(final StmtContext ctx) { @@ -33,13 +33,11 @@ final class ThirdPartyExtensionEffectiveStatementImpl return valueFromNamespace; } - @Nonnull @Override public QName getQName() { return getNodeType(); } - @Nonnull @Override public SchemaPath getPath() { return path; -- 2.36.6