From e3233ae5c3fb026f17f7d4fcb44326b7c0233cff Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 8 Oct 2018 18:52:05 +0200 Subject: [PATCH] Migrate ietf-type-util to JDT annotations This removes the use of javax.annotation nullable annotations to remove import-package. Change-Id: I05d01bb4aa3a8e343432987e8a66e06971d22e69 JIRA: MDSAL-373 Signed-off-by: Robert Varga --- model/ietf/ietf-type-util/pom.xml | 14 ++ .../model/ietf/util/AbstractIetfInetUtil.java | 163 +++++++++--------- .../model/ietf/util/AbstractIetfYangUtil.java | 16 +- .../mdsal/model/ietf/util/Ipv4Utils.java | 6 +- .../mdsal/model/ietf/util/Ipv6Utils.java | 25 +-- .../mdsal/model/ietf/util/IpUtil.java | 9 - 6 files changed, 121 insertions(+), 112 deletions(-) diff --git a/model/ietf/ietf-type-util/pom.xml b/model/ietf/ietf-type-util/pom.xml index 6d3e26e2c7..8c5c7911ef 100644 --- a/model/ietf/ietf-type-util/pom.xml +++ b/model/ietf/ietf-type-util/pom.xml @@ -42,6 +42,20 @@ + + + + org.apache.felix + maven-bundle-plugin + + + !javax.annotation,* + + + + + + scm:git:http://git.opendaylight.org/gerrit/controller.git scm:git:ssh://git.opendaylight.org:29418/controller.git diff --git a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java index 153b796d88..7321274ec4 100644 --- a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java +++ b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/AbstractIetfInetUtil.java @@ -18,8 +18,8 @@ import java.net.InetAddress; import java.net.UnknownHostException; import java.util.AbstractMap.SimpleImmutableEntry; import java.util.Map.Entry; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.mdsal.binding.spec.reflect.StringValueObjectFactory; /** @@ -47,22 +47,22 @@ public abstract class AbstractIetfInetUtil= 0 && mask <= 32, "Invalid mask %s", mask); return prefix4Factory.newInstance(addr + '/' + mask); } - @Nonnull public final Entry splitIpv4Prefix(@Nonnull final P4 prefix) { + public final @NonNull Entry splitIpv4Prefix(final @NonNull P4 prefix) { return splitPrefix(address4Factory, ipv4PrefixString(prefix)); } - @Nonnull public final Entry splitIpv4PrefixNoZone(@Nonnull final P4 prefix) { + public final @NonNull Entry splitIpv4PrefixNoZone(final @NonNull P4 prefix) { return splitPrefix(address4NoZoneFactory, ipv4PrefixString(prefix)); } - @Nonnull public final byte[] ipv4PrefixToBytes(@Nonnull final P4 prefix) { + public final byte @NonNull[] ipv4PrefixToBytes(final @NonNull P4 prefix) { final String str = ipv4PrefixString(prefix); final int slash = str.lastIndexOf('/'); @@ -427,7 +427,7 @@ public abstract class AbstractIetfInetUtil= 0 && mask <= 128, "Invalid mask %s", mask); return prefix6Factory.newInstance(addressStringV6(address) + '/' + mask); } - @Nonnull public final P6 ipv6PrefixForShort(@Nonnull final byte[] address, final int mask) { + public final @NonNull P6 ipv6PrefixForShort(final byte @NonNull[] address, final int mask) { return ipv6PrefixForShort(address, 0, mask); } - @Nonnull public final P6 ipv6PrefixForShort(@Nonnull final byte[] array, final int startOffset, final int mask) { + public final @NonNull P6 ipv6PrefixForShort(final byte @NonNull[] array, final int startOffset, final int mask) { if (mask == 0) { // Easy case, reuse the template return prefix6Factory.getTemplate(); @@ -551,7 +551,7 @@ public abstract class AbstractIetfInetUtil= 0 && mask <= 128, "Invalid mask %s", mask); return prefix6Factory.newInstance(addressStringV6(addr) + '/' + mask); } - @Nonnull public final P6 ipv6PrefixFor(@Nonnull final A6 addr) { + public final @NonNull P6 ipv6PrefixFor(final @NonNull A6 addr) { requireNonNull(addr, "Address must not be null"); return prefix6Factory.newInstance(stripZone(ipv6AddressString(addr)) + "/128"); } - @Nonnull public final P6 ipv6PrefixFor(@Nonnull final A6 addr, final int mask) { + public final @NonNull P6 ipv6PrefixFor(final @NonNull A6 addr, final int mask) { requireNonNull(addr, "Address must not be null"); return newIpv6Prefix(stripZone(ipv6AddressString(addr)), mask); } - @Nonnull public final P6 ipv6PrefixForNoZone(@Nonnull final A6NZ addr) { + public final @NonNull P6 ipv6PrefixForNoZone(final @NonNull A6NZ addr) { requireNonNull(addr, "Address must not be null"); return prefix6Factory.newInstance(ipv6AddressString(addr) + "/128"); } - @Nonnull public final P6 ipv6PrefixForNoZone(@Nonnull final A6NZ addr, final int mask) { + public final @NonNull P6 ipv6PrefixForNoZone(final @NonNull A6NZ addr, final int mask) { requireNonNull(addr, "Address must not be null"); return newIpv6Prefix(ipv6AddressString(addr), mask); } @@ -598,25 +598,26 @@ public abstract class AbstractIetfInetUtil splitIpv6Prefix(@Nonnull final P6 prefix) { + public final @NonNull Entry splitIpv6Prefix(final @NonNull P6 prefix) { return splitPrefix(address6Factory, ipv6PrefixString(prefix)); } - @Nonnull public final Entry splitIpv6PrefixNoZone(@Nonnull final P6 prefix) { + public final @NonNull Entry splitIpv6PrefixNoZone(final @NonNull P6 prefix) { return splitPrefix(address6NoZoneFactory, ipv6PrefixString(prefix)); } - private static T prefixToAddress(final StringValueObjectFactory factory, final String str) { + private static @NonNull T prefixToAddress(final StringValueObjectFactory factory, final String str) { return factory.newInstance(str.substring(0, str.lastIndexOf('/'))); } - private static Entry splitPrefix(final StringValueObjectFactory factory, final String str) { + private static @NonNull Entry splitPrefix(final StringValueObjectFactory factory, + final String str) { final int slash = str.lastIndexOf('/'); return new SimpleImmutableEntry<>(factory.newInstance(str.substring(0, slash)), Integer.valueOf(str.substring(slash + 1))); } - @Nonnull public final byte[] ipv6PrefixToBytes(@Nonnull final P6 prefix) { + public final byte @NonNull[] ipv6PrefixToBytes(final @NonNull P6 prefix) { final String str = ipv6PrefixString(prefix); final byte[] bytes = new byte[INET6_LENGTH + 1]; final int slash = str.lastIndexOf('/'); @@ -625,7 +626,7 @@ public abstract class AbstractIetfInetUtil= 0 && mask <= 32, "Invalid mask %s", mask); final StringBuilder sb = new StringBuilder(18); @@ -668,7 +669,7 @@ public abstract class AbstractIetfInetUtil { * @return A MacAddress containing the canonical representation. * @throws NullPointerException if macAddress is null */ - @Nonnull public final M canonizeMacAddress(@Nonnull final M macAddress) { + public final @NonNull M canonizeMacAddress(final @NonNull M macAddress) { final char[] input = getValue(macAddress).toCharArray(); return ensureLowerCase(input) ? macFactory.newInstance(String.valueOf(input)) : macAddress; } @@ -72,7 +72,7 @@ public abstract class AbstractIetfYangUtil { * @throws NullPointerException if bytes is null * @throws IllegalArgumentException if length of input is not 6 bytes */ - @Nonnull public final M macAddressFor(@Nonnull final byte[] bytes) { + public final @NonNull M macAddressFor(final byte @NonNull[] bytes) { checkArgument(bytes.length == MAC_BYTE_LENGTH, "MAC address should have 6 bytes, not %s", bytes.length); return macFactory.newInstance(bytesToString(bytes, 17)); @@ -85,7 +85,7 @@ public abstract class AbstractIetfYangUtil { * @return A PhysAddress containing the canonical representation. * @throws NullPointerException if physAddress is null */ - @Nonnull public final P canonizePhysAddress(@Nonnull final P physAddress) { + public final @NonNull P canonizePhysAddress(final @NonNull P physAddress) { final char[] input = getPhysValue(physAddress).toCharArray(); return ensureLowerCase(input) ? physFactory.newInstance(String.valueOf(input)) : physAddress; } @@ -98,12 +98,12 @@ public abstract class AbstractIetfYangUtil { * @throws NullPointerException if bytes is null * @throws IllegalArgumentException if length of input is not at least 1 byte */ - @Nonnull public final P physAddressFor(@Nonnull final byte[] bytes) { + public final @NonNull P physAddressFor(final byte @NonNull[] bytes) { checkArgument(bytes.length > 0, "Physical address should have at least one byte"); return physFactory.newInstance(bytesToString(bytes, (bytes.length + 1) / 3)); } - @Nonnull public final byte[] bytesFor(@Nonnull final M macAddress) { + public final byte @NonNull[] bytesFor(final @NonNull M macAddress) { final String mac = getValue(macAddress); final byte[] ret = new byte[MAC_BYTE_LENGTH]; @@ -144,7 +144,7 @@ public abstract class AbstractIetfYangUtil { * @return True if the array has been modified * @throws NullPointerException if input is null */ - private static boolean ensureLowerCase(@Nonnull final char[] chars) { + private static boolean ensureLowerCase(final char @NonNull[] chars) { boolean ret = false; for (int i = 0; i < chars.length; ++i) { @@ -168,7 +168,7 @@ public abstract class AbstractIetfYangUtil { * @throws NullPointerException if input is null * @throws IllegalArgumentException if length of input is not 6 bytes */ - @Nonnull private static String bytesToString(@Nonnull final byte[] bytes, final int charHint) { + private static @NonNull String bytesToString(final byte @NonNull[] bytes, final int charHint) { final StringBuilder sb = new StringBuilder(charHint); appendHexByte(sb, bytes[0]); for (int i = 1; i < bytes.length; ++i) { diff --git a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv4Utils.java b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv4Utils.java index f8797a6566..13d4537386 100644 --- a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv4Utils.java +++ b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv4Utils.java @@ -7,6 +7,8 @@ */ package org.opendaylight.mdsal.model.ietf.util; +import org.eclipse.jdt.annotation.NonNull; + /** * IPv4 address parsing for ietf-inet-types ipv4-address. This is an internal implementation class, not meant to be * exposed in any shape or form to the outside world, as the code relies on the fact that the strings presented to it @@ -17,7 +19,7 @@ final class Ipv4Utils { throw new UnsupportedOperationException(); } - static void fillIpv4Bytes(final byte[] bytes, final int byteStart, final String str, final int strStart, + static void fillIpv4Bytes(final byte @NonNull[] bytes, final int byteStart, final String str, final int strStart, final int strLimit) { int out = byteStart; int val = 0; @@ -27,7 +29,7 @@ final class Ipv4Utils { bytes[out++] = (byte) val; val = 0; } else { - val = 10 * val + (c - '0'); + val = 10 * val + c - '0'; } } diff --git a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java index 5f2757083b..001921508b 100644 --- a/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java +++ b/model/ietf/ietf-type-util/src/main/java/org/opendaylight/mdsal/model/ietf/util/Ipv6Utils.java @@ -7,10 +7,11 @@ */ package org.opendaylight.mdsal.model.ietf.util; -import com.google.common.base.Preconditions; -import com.google.common.base.Verify; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Verify.verify; + import java.util.Arrays; -import javax.annotation.Nonnull; +import org.eclipse.jdt.annotation.NonNull; /** * IPv6 address parsing for ietf-inet-types ipv6-address and ipv6-prefix. This is an internal implementation @@ -59,12 +60,12 @@ final class Ipv6Utils { * @param strLimit String offset which should not be processed * @throws NullPointerException if ipv6address is null */ - static void fillIpv6Bytes(final @Nonnull byte[] bytes, final String str, final int strLimit) { + static void fillIpv6Bytes(final byte @NonNull[] bytes, final String str, final int strLimit) { // Leading :: requires some special handling. int i = 0; if (str.charAt(i) == ':') { // Note ++i side-effect in check - Preconditions.checkArgument(str.charAt(++i) == ':', "Invalid v6 address '%s'", str); + checkArgument(str.charAt(++i) == ':', "Invalid v6 address '%s'", str); } boolean haveVal = false; @@ -80,7 +81,7 @@ final class Ipv6Utils { curtok = i; if (haveVal) { // removed overrun check - the regexp checks for valid data - bytes[j++] = (byte) ((val >>> 8) & 0xff); + bytes[j++] = (byte) (val >>> 8 & 0xff); bytes[j++] = (byte) (val & 0xff); haveVal = false; val = 0; @@ -93,7 +94,7 @@ final class Ipv6Utils { } // frankenstein - v4 attached to v6, mixed notation - if (ch == '.' && ((j + INADDR4SZ) <= INADDR6SZ)) { + if (ch == '.' && j + INADDR4SZ <= INADDR6SZ) { /* * This has passed the regexp so it is fairly safe to parse it * straight away. Use the Ipv4Utils for that. @@ -111,21 +112,21 @@ final class Ipv6Utils { * anything bigger than 0xffff between the separators. */ final int chval = AbstractIetfYangUtil.hexValue(ch); - val = (val << 4) | chval; + val = val << 4 | chval; haveVal = true; } if (haveVal) { - Verify.verify(j + INT16SZ <= INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); - bytes[j++] = (byte) ((val >> 8) & 0xff); + verify(j + INT16SZ <= INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); + bytes[j++] = (byte) (val >> 8 & 0xff); bytes[j++] = (byte) (val & 0xff); } if (colonp != -1) { - Verify.verify(j != INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); + verify(j != INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); expandZeros(bytes, colonp, j); } else { - Verify.verify(j == INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); + verify(j == INADDR6SZ, "Overrun in parsing of '%s', should not occur", str); } } diff --git a/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/IpUtil.java b/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/IpUtil.java index 20326a8915..500d59c152 100644 --- a/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/IpUtil.java +++ b/model/ietf/ietf-type-util/src/test/java/org/opendaylight/mdsal/model/ietf/util/IpUtil.java @@ -8,7 +8,6 @@ package org.opendaylight.mdsal.model.ietf.util; import java.util.regex.Pattern; -import javax.annotation.Nonnull; import javax.annotation.RegEx; final class IpUtil extends AbstractIetfInetUtil