aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgjoranv <gv@verizonmedia.com>2023-02-18 23:34:46 +0100
committergjoranv <gv@verizonmedia.com>2023-02-18 23:39:09 +0100
commitb6dbcdb3a7443b26ef6421130b3f0504ca17d28b (patch)
treeb28a1d14d63e0fd6b4ddf5724304cb8beda0d6d3
parent5a45774d4fd321c59f854cc958d3375355eaff91 (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.java38
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());
- }
-
}