diff options
author | gjoranv <gv@verizonmedia.com> | 2023-02-18 23:34:46 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2023-02-18 23:39:09 +0100 |
commit | b6dbcdb3a7443b26ef6421130b3f0504ca17d28b (patch) | |
tree | b28a1d14d63e0fd6b4ddf5724304cb8beda0d6d3 | |
parent | 5a45774d4fd321c59f854cc958d3375355eaff91 (diff) |
Require non-null address, add toString, equals and hashCode.
-rw-r--r-- | node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/VersionedIpAddress.java | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/VersionedIpAddress.java b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/VersionedIpAddress.java index 7499820aafd..03dd4d026ec 100644 --- a/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/VersionedIpAddress.java +++ b/node-admin/src/main/java/com/yahoo/vespa/hosted/node/admin/task/util/network/VersionedIpAddress.java @@ -5,10 +5,11 @@ import com.google.common.net.InetAddresses; import java.net.Inet4Address; import java.net.Inet6Address; import java.net.InetAddress; +import java.util.Objects; /** * Encapsulates an IP address and its version along with some convenience methods. - * Sorted by version (IPv6 first), then by address. + * Default sorting is by version (IPv6 first), then by address. * * @author gjoranv */ @@ -18,7 +19,7 @@ public class VersionedIpAddress implements Comparable<VersionedIpAddress> { private final IPVersion version; private VersionedIpAddress(InetAddress address) { - this.address = address; + this.address = Objects.requireNonNull(address); version = getVersionOrThrow(address); } @@ -43,6 +44,33 @@ public class VersionedIpAddress implements Comparable<VersionedIpAddress> { return String.format(format, asString(), port); } + @Override + public int compareTo(VersionedIpAddress o) { + int version = version().compareTo(o.version()); + return (version != 0) ? version : asString().compareTo(o.asString()); + } + + @Override + public String toString() { + return "VersionedIpAddress{" + + "address=" + address + + ", version=" + version + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + VersionedIpAddress that = (VersionedIpAddress) o; + return address.equals(that.address) && version == that.version; + } + + @Override + public int hashCode() { + return Objects.hash(address, version); + } + private static IPVersion getVersionOrThrow(InetAddress address) { if (address instanceof Inet4Address) { return IPVersion.IPv4; @@ -53,10 +81,4 @@ public class VersionedIpAddress implements Comparable<VersionedIpAddress> { } } - @Override - public int compareTo(VersionedIpAddress o) { - int version = version().compareTo(o.version()); - return (version != 0) ? version : asString().compareTo(o.asString()); - } - } |