From: Robert Varga Date: Sun, 14 Apr 2019 07:08:33 +0000 (+0200) Subject: Tag InstanceIdentifier methods with @Nullable/@NonNull X-Git-Tag: v4.0.1~42 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=b515bd997a4afe8b0f1b9bbe0b585d3330503e4e;p=mdsal.git Tag InstanceIdentifier methods with @Nullable/@NonNull Most of these methods are guaranteed to return non-null, tag them as such, improving user experience. Change-Id: I6f581baf2a023b90274b9d89bf6475d9780449c8 Signed-off-by: Robert Varga --- diff --git a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifier.java b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifier.java index 246e63774a..cf69f763d9 100644 --- a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifier.java +++ b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifier.java @@ -21,6 +21,8 @@ import java.util.Collections; import java.util.Iterator; import java.util.Objects; import java.util.Optional; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.Builder; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.concepts.Path; @@ -67,7 +69,7 @@ public class InstanceIdentifier implements Path pathArguments; - private final Class targetType; + private final @NonNull Class targetType; private final boolean wildcarded; private final int hash; @@ -84,7 +86,7 @@ public class InstanceIdentifier implements Path getTargetType() { + public final @NonNull Class getTargetType() { return targetType; } @@ -93,7 +95,7 @@ public class InstanceIdentifier implements Path getPathArguments() { + public final @NonNull Iterable getPathArguments() { return Iterables.unmodifiableIterable(pathArguments); } @@ -199,7 +201,7 @@ public class InstanceIdentifier implements Path InstanceIdentifier firstIdentifierOf(final Class type) { + public final @Nullable InstanceIdentifier firstIdentifierOf(final Class type) { int count = 1; for (final PathArgument a : pathArguments) { if (type.equals(a.getType())) { @@ -223,7 +225,7 @@ public class InstanceIdentifier implements Path & DataObject, K extends Identifier> K firstKeyOf( + public final & DataObject, K extends Identifier> @Nullable K firstKeyOf( final Class listItem) { for (final PathArgument i : pathArguments) { if (listItem.equals(i.getType())) { @@ -309,7 +311,7 @@ public class InstanceIdentifier implements Path InstanceIdentifier childIdentifier(final AbstractPathArgument arg) { + private @NonNull InstanceIdentifier childIdentifier(final AbstractPathArgument arg) { return trustedCreate(arg, Iterables.concat(pathArguments, Collections.singleton(arg)), HashCodeBuilder.nextHashCode(hash, arg), isWildcarded()); } @@ -323,7 +325,7 @@ public class InstanceIdentifier implements Path> InstanceIdentifier child(final Class container) { + public final > @NonNull InstanceIdentifier child(final Class container) { return childIdentifier(Item.of(container)); } @@ -339,8 +341,8 @@ public class InstanceIdentifier implements Path & ChildOf, K extends Identifier> KeyedInstanceIdentifier - child(final Class listItem, final K listKey) { + public final & ChildOf, K extends Identifier> + @NonNull KeyedInstanceIdentifier child(final Class listItem, final K listKey) { return (KeyedInstanceIdentifier) childIdentifier(IdentifiableItem.of(listItem, listKey)); } @@ -355,8 +357,8 @@ public class InstanceIdentifier implements Path & DataObject, N extends ChildOf> InstanceIdentifier child( - final Class caze, final Class container) { + public final & DataObject, N extends ChildOf> + @NonNull InstanceIdentifier child(final Class caze, final Class container) { return childIdentifier(Item.of(caze, container)); } @@ -375,8 +377,8 @@ public class InstanceIdentifier implements Path & DataObject, K extends Identifier, - N extends Identifiable & ChildOf> KeyedInstanceIdentifier child(final Class caze, - final Class listItem, final K listKey) { + N extends Identifiable & ChildOf> @NonNull KeyedInstanceIdentifier child( + final Class caze, final Class listItem, final K listKey) { return (KeyedInstanceIdentifier) childIdentifier(IdentifiableItem.of(caze, listItem, listKey)); } @@ -389,7 +391,7 @@ public class InstanceIdentifier implements Path> InstanceIdentifier augmentation( + public final > @NonNull InstanceIdentifier augmentation( final Class container) { return childIdentifier(Item.of(container)); } @@ -399,7 +401,7 @@ public class InstanceIdentifier implements Path builder() { + public @NonNull InstanceIdentifierBuilder builder() { return new InstanceIdentifierBuilderImpl<>(Item.of(targetType), pathArguments, hash, isWildcarded()); } @@ -411,7 +413,7 @@ public class InstanceIdentifier implements Path> InstanceIdentifierBuilder builder( + public static > @NonNull InstanceIdentifierBuilder builder( final Class container) { return new InstanceIdentifierBuilderImpl().addWildNode(Item.of(container)); } @@ -428,7 +430,7 @@ public class InstanceIdentifier implements Path & DataObject, T extends ChildOf> - InstanceIdentifierBuilder builder(final Class caze, final Class container) { + @NonNull InstanceIdentifierBuilder builder(final Class caze, final Class container) { return new InstanceIdentifierBuilderImpl().addWildNode(Item.of(caze, container)); } @@ -444,7 +446,8 @@ public class InstanceIdentifier implements Path & ChildOf, - K extends Identifier> InstanceIdentifierBuilder builder(final Class listItem, final K listKey) { + K extends Identifier> @NonNull InstanceIdentifierBuilder builder(final Class listItem, + final K listKey) { return new InstanceIdentifierBuilderImpl().addNode(IdentifiableItem.of(listItem, listKey)); } @@ -463,7 +466,8 @@ public class InstanceIdentifier implements Path & DataObject, N extends Identifiable & ChildOf, K extends Identifier> - InstanceIdentifierBuilder builder(final Class caze, final Class listItem, final K listKey) { + @NonNull InstanceIdentifierBuilder builder(final Class caze, final Class listItem, + final K listKey) { return new InstanceIdentifierBuilderImpl().addNode(IdentifiableItem.of(caze, listItem, listKey)); } @@ -476,7 +480,7 @@ public class InstanceIdentifier implements Path internalCreate(final Iterable pathArguments) { + private static @NonNull InstanceIdentifier internalCreate(final Iterable pathArguments) { final Iterator it = requireNonNull(pathArguments, "pathArguments may not be null") .iterator(); final HashCodeBuilder hashBuilder = new HashCodeBuilder<>(); @@ -514,7 +518,7 @@ public class InstanceIdentifier implements Path create(final Iterable pathArguments) { + public static @NonNull InstanceIdentifier create(final Iterable pathArguments) { if (pathArguments instanceof ImmutableCollection) { @SuppressWarnings("unchecked") final Iterable immutableArguments = (Iterable) pathArguments; @@ -538,7 +542,7 @@ public class InstanceIdentifier implements Path InstanceIdentifier create(final Class type) { + public static @NonNull InstanceIdentifier create(final Class type) { return (InstanceIdentifier) create(ImmutableList.of(Item.of(type))); } @@ -561,7 +565,7 @@ public class InstanceIdentifier implements Path InstanceIdentifier trustedCreate(final PathArgument arg, + static @NonNull InstanceIdentifier trustedCreate(final PathArgument arg, final Iterable pathArguments, final int hash, boolean wildcarded) { if (Identifiable.class.isAssignableFrom(arg.getType()) && !wildcarded) { Identifier key = null; @@ -587,7 +591,7 @@ public class InstanceIdentifier implements Path getType(); + @NonNull Class getType(); /** * Return an optional enclosing case type. This is used only when {@link #getType()} references a node defined @@ -603,7 +607,8 @@ public class InstanceIdentifier implements Path implements PathArgument, Serializable { private static final long serialVersionUID = 1L; - private final Class type; + + private final @NonNull Class type; AbstractPathArgument(final Class type) { this.type = requireNonNull(type, "Type may not be null."); @@ -676,7 +681,7 @@ public class InstanceIdentifier implements Path Item of(final Class type) { + public static @NonNull Item of(final Class type) { return new Item<>(type); } @@ -691,7 +696,7 @@ public class InstanceIdentifier implements Path & DataObject, T extends ChildOf> Item of( + public static & DataObject, T extends ChildOf> @NonNull Item of( final Class caseType, final Class type) { return new CaseItem<>(caseType, type); } @@ -712,7 +717,8 @@ public class InstanceIdentifier implements Path & DataObject, T extends Identifier> extends AbstractPathArgument { private static final long serialVersionUID = 1L; - private final T key; + + private final @NonNull T key; IdentifiableItem(final Class type, final T key) { super(type); @@ -729,8 +735,8 @@ public class InstanceIdentifier implements Path & DataObject, I extends Identifier> IdentifiableItem of( - final Class type, final I key) { + public static & DataObject, I extends Identifier> + @NonNull IdentifiableItem of(final Class type, final I key) { return new IdentifiableItem<>(type, key); } @@ -747,8 +753,8 @@ public class InstanceIdentifier implements Path & DataObject, T extends ChildOf & Identifiable, - I extends Identifier> IdentifiableItem of(final Class caseType, final Class type, - final I key) { + I extends Identifier> @NonNull IdentifiableItem of(final Class caseType, + final Class type, final I key) { return new CaseIdentifiableItem<>(caseType, type, key); } @@ -758,7 +764,7 @@ public class InstanceIdentifier implements Path implements Path> InstanceIdentifierBuilder child(Class container); + > @NonNull InstanceIdentifierBuilder child(Class container); /** * Append the specified container as a child of the current InstanceIdentifier referenced by the builder. @@ -838,8 +844,8 @@ public class InstanceIdentifier implements Path & DataObject, N extends ChildOf> InstanceIdentifierBuilder child( - Class caze, Class container); + & DataObject, N extends ChildOf> + @NonNull InstanceIdentifierBuilder child(Class caze, Class container); /** * Append the specified listItem as a child of the current InstanceIdentifier referenced by the builder. @@ -854,8 +860,8 @@ public class InstanceIdentifier implements Path & ChildOf, K extends Identifier> InstanceIdentifierBuilder child( - Class listItem, K listKey); + & ChildOf, K extends Identifier> + @NonNull InstanceIdentifierBuilder child(Class listItem, K listKey); /** * Append the specified listItem as a child of the current InstanceIdentifier referenced by the builder. @@ -873,8 +879,8 @@ public class InstanceIdentifier implements Path & DataObject, K extends Identifier, - N extends Identifiable & ChildOf> InstanceIdentifierBuilder child(Class caze, - Class listItem, K listKey); + N extends Identifiable & ChildOf> @NonNull InstanceIdentifierBuilder child( + Class caze, Class listItem, K listKey); /** * Build an identifier which refers to a specific augmentation of the current InstanceIdentifier referenced by @@ -885,7 +891,8 @@ public class InstanceIdentifier implements Path> InstanceIdentifierBuilder augmentation(Class container); + > @NonNull InstanceIdentifierBuilder augmentation( + Class container); /** * Build the instance identifier. diff --git a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierBuilderImpl.java b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierBuilderImpl.java index a099ba571f..90a1ed7e6e 100644 --- a/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierBuilderImpl.java +++ b/binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/InstanceIdentifierBuilderImpl.java @@ -11,6 +11,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import java.util.Objects; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.util.HashCodeBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder; @@ -109,7 +110,7 @@ final class InstanceIdentifierBuilderImpl implements Insta return InstanceIdentifier.trustedCreate(arg, pathArguments, hashBuilder.build(), wildcard); } - InstanceIdentifierBuilderImpl addWildNode(final PathArgument newArg) { + @NonNull InstanceIdentifierBuilderImpl addWildNode(final PathArgument newArg) { if (Identifiable.class.isAssignableFrom(newArg.getType())) { wildcard = true; } @@ -117,14 +118,14 @@ final class InstanceIdentifierBuilderImpl implements Insta } @SuppressWarnings("unchecked") - InstanceIdentifierBuilderImpl addNode(final PathArgument newArg) { + @NonNull InstanceIdentifierBuilderImpl addNode(final PathArgument newArg) { arg = newArg; hashBuilder.addArgument(newArg); pathBuilder.add(newArg); return (InstanceIdentifierBuilderImpl) this; } - private InstanceIdentifierBuilderImpl addNode(final Class container) { + private @NonNull InstanceIdentifierBuilderImpl addNode(final Class container) { return addWildNode(Item.of(container)); } }