diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-03-31 11:52:40 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-03-31 11:53:33 +0200 |
commit | 2430b74a942659d549771cb4dd8b81d77692d905 (patch) | |
tree | c79b8b48bf150bea00ab9e0c6ad594740709d4fa /vespajlib/src/main/java/com/yahoo/net | |
parent | 168f767ec12253f43ace27946dc530fde9e37d5e (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.java | 5 | ||||
-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.java | 26 |
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); - } - -} |