From: Robert Varga Date: Fri, 26 Feb 2016 21:34:09 +0000 (+0100) Subject: Add IpAddress->InetAddress conversion utilities X-Git-Tag: release/boron~174 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=0f8f0d7b84b6cd8287a84be9d566d05433a758eb;p=mdsal.git Add IpAddress->InetAddress conversion utilities These seem to be handy, so provide them out-of-box. Change-Id: I4f203c713e2b802f16529e51916a9d4340bf809f Signed-off-by: Robert Varga --- diff --git a/model/ietf/ietf-inet-types-2013-07-15/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java b/model/ietf/ietf-inet-types-2013-07-15/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java index fa2291f89a..5d79b229cf 100644 --- a/model/ietf/ietf-inet-types-2013-07-15/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java +++ b/model/ietf/ietf-inet-types-2013-07-15/src/main/java/org/opendaylight/yang/gen/v1/urn/ietf/params/xml/ns/yang/ietf/inet/types/rev130715/IetfInetUtil.java @@ -50,4 +50,14 @@ public final class IetfInetUtil extends AbstractIetfInetUtil { this.prefix6Factory = StringValueObjectFactory.create(prefix6Class, "::0/0"); } - protected abstract A ipv4Address(A4 addr); - protected abstract A ipv6Address(A6 addr); - protected abstract String ipv4AddressString(A4 addr); - protected abstract String ipv6AddressString(A6 addr); - protected abstract String ipv4PrefixString(P4 prefix); - protected abstract String ipv6PrefixString(P6 prefix); + @Nonnull protected abstract A ipv4Address(@Nonnull A4 addr); + @Nonnull protected abstract A ipv6Address(@Nonnull A6 addr); + @Nullable protected abstract A4 maybeIpv4Address(@Nonnull A addr); + @Nullable protected abstract A6 maybeIpv6Address(@Nonnull A addr); + @Nonnull protected abstract String ipv4AddressString(@Nonnull A4 addr); + @Nonnull protected abstract String ipv6AddressString(@Nonnull A6 addr); + @Nonnull protected abstract String ipv4PrefixString(@Nonnull P4 prefix); + @Nonnull protected abstract String ipv6PrefixString(@Nonnull P6 prefix); @Nonnull public final A ipAddressFor(@Nonnull final byte[] bytes) { switch (bytes.length) { @@ -68,6 +71,32 @@ public abstract class AbstractIetfInetUtil { } } + @Nonnull public final InetAddress inetAddressFor(@Nonnull final A addr) { + final A4 v4 = maybeIpv4Address(addr); + if (v4 != null) { + return inet4AddressFor(v4); + } + final A6 v6 = maybeIpv6Address(addr); + Preconditions.checkArgument(v6 != null, "Address %s is neither IPv4 nor IPv6", addr); + return inet6AddressFor(v6); + } + + @Nonnull public final Inet4Address inet4AddressFor(@Nonnull final A4 addr) { + try { + return (Inet4Address) InetAddress.getByAddress(ipv4AddressBytes(addr)); + } catch (UnknownHostException e) { + throw new IllegalArgumentException("Invalid address " + addr, e); + } + } + + @Nonnull public final Inet6Address inet6AddressFor(@Nonnull final A6 addr) { + try { + return (Inet6Address) InetAddress.getByAddress(ipv6AddressBytes(addr)); + } catch (UnknownHostException e) { + throw new IllegalArgumentException("Invalid address " + addr, e); + } + } + /** * Create an Ipv4Address by interpreting input bytes as an IPv4 address. * 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 90f0ab4f88..1e1cd9d350 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 @@ -42,4 +42,14 @@ final class IpUtil extends AbstractIetfInetUtil