summaryrefslogtreecommitdiffstats
path: root/vespajlib/src/main/java/com/yahoo/net
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2022-03-31 11:52:40 +0200
committerJon Marius Venstad <venstad@gmail.com>2022-03-31 11:53:33 +0200
commit2430b74a942659d549771cb4dd8b81d77692d905 (patch)
treec79b8b48bf150bea00ab9e0c6ad594740709d4fa /vespajlib/src/main/java/com/yahoo/net
parent168f767ec12253f43ace27946dc530fde9e37d5e (diff)
Rename back to HostName, and merge the value class and utilities
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/net')
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/DomainName.java5
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/HostName.java (renamed from vespajlib/src/main/java/com/yahoo/net/Hostnames.java)32
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/Hostname.java26
3 files changed, 26 insertions, 37 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/net/DomainName.java b/vespajlib/src/main/java/com/yahoo/net/DomainName.java
index 1215757ee80..ff8ba204674 100644
--- a/vespajlib/src/main/java/com/yahoo/net/DomainName.java
+++ b/vespajlib/src/main/java/com/yahoo/net/DomainName.java
@@ -5,7 +5,7 @@ import ai.vespa.validation.PatternedStringWrapper;
import java.util.regex.Pattern;
-import static ai.vespa.validation.Validation.requireInRange;
+import static ai.vespa.validation.Validation.requireLength;
import static ai.vespa.validation.Validation.requireMatch;
/**
@@ -21,8 +21,7 @@ public class DomainName extends PatternedStringWrapper<DomainName> {
public static final DomainName localhost = DomainName.of("localhost");
private DomainName(String value) {
- super(value, domainNamePattern, "domain name");
- requireInRange(value.length(), "domain name length", 1, 255);
+ super(requireLength(value, "domain name length", 1, 255), domainNamePattern, "domain name");
}
public static DomainName of(String value) {
diff --git a/vespajlib/src/main/java/com/yahoo/net/Hostnames.java b/vespajlib/src/main/java/com/yahoo/net/HostName.java
index c6e78d778e3..47bd8246bb3 100644
--- a/vespajlib/src/main/java/com/yahoo/net/Hostnames.java
+++ b/vespajlib/src/main/java/com/yahoo/net/HostName.java
@@ -1,19 +1,34 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
+import ai.vespa.validation.PatternedStringWrapper;
+
import java.util.Optional;
+import static ai.vespa.validation.Validation.requireLength;
+
/**
- * Utilities for getting the hostname of the system running the JVM.
+ * Hostnames match {@link DomainName#domainNamePattern}, but are restricted to 64 characters in length.
+ *
+ * This class also has utilities for getting the hostname of the system running the JVM.
* Detection of the hostname is now done before starting any Vespa
* programs and provided in the environment variable VESPA_HOSTNAME;
* if that variable isn't set a default of "localhost" is always returned.
*
* @author arnej
+ * @author jonmv
*/
-public class Hostnames {
+public class HostName extends PatternedStringWrapper<HostName> {
+
+ private static HostName preferredHostName = null;
- private static String preferredHostName = null;
+ private HostName(String value) {
+ super(requireLength(value, "hostname length", 1, 64), DomainName.domainNamePattern, "hostname");
+ }
+
+ public static HostName of(String value) {
+ return new HostName(value);
+ }
/**
* Return a public and fully qualified hostname for localhost that
@@ -25,18 +40,19 @@ public class Hostnames {
if (preferredHostName == null) {
preferredHostName = getPreferredHostName();
}
- return preferredHostName;
+ return preferredHostName.value();
}
- static private String getPreferredHostName() {
+ static private HostName getPreferredHostName() {
Optional<String> vespaHostEnv = Optional.ofNullable(System.getenv("VESPA_HOSTNAME"));
if (vespaHostEnv.isPresent() && ! vespaHostEnv.get().trim().isEmpty()) {
- return vespaHostEnv.get().trim();
+ return of(vespaHostEnv.get().trim());
}
- return "localhost";
+ return of("localhost");
}
public static void setHostNameForTestingOnly(String hostName) {
- preferredHostName = hostName;
+ preferredHostName = HostName.of(hostName);
}
+
}
diff --git a/vespajlib/src/main/java/com/yahoo/net/Hostname.java b/vespajlib/src/main/java/com/yahoo/net/Hostname.java
deleted file mode 100644
index cbf6fb8d1ca..00000000000
--- a/vespajlib/src/main/java/com/yahoo/net/Hostname.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.net;
-
-import ai.vespa.validation.PatternedStringWrapper;
-import ai.vespa.validation.StringWrapper;
-
-import static ai.vespa.validation.Validation.requireInRange;
-import static ai.vespa.validation.Validation.requireMatch;
-
-/**
- * A valid hostname, matching {@link DomainName#domainNamePattern}, and no more than 64 characters in length.
- *
- * @author jonmv
- */
-public class Hostname extends PatternedStringWrapper<Hostname> {
-
- private Hostname(String value) {
- super(value, DomainName.domainNamePattern, "hostname");
- requireInRange(value.length(), "hostname length", 1, 64);
- }
-
- public static Hostname of(String value) {
- return new Hostname(value);
- }
-
-}