summaryrefslogtreecommitdiffstats
path: root/vespajlib
diff options
context:
space:
mode:
authorjonmv <venstad@gmail.com>2022-04-09 14:51:56 +0200
committerjonmv <venstad@gmail.com>2022-04-09 14:51:56 +0200
commitcb1eb57fa9707b1186f0aa10a0853780d7674742 (patch)
tree1c1ca993fdf96007ce4e2c98b2058809601d6fe5 /vespajlib
parent87e5b33c003d07ca585d73e0166857fe22b4c16f (diff)
Revert "Merge pull request #22072 from vespa-engine/jonmv/unify-hostname-classes"
This reverts commit 87e5b33c003d07ca585d73e0166857fe22b4c16f, reversing changes made to 80b96d32550ae0df59572a58cd62f507e8068c2c.
Diffstat (limited to 'vespajlib')
-rw-r--r--vespajlib/abi-spec.json4
-rw-r--r--vespajlib/src/main/java/ai/vespa/http/DomainName.java6
-rw-r--r--vespajlib/src/main/java/ai/vespa/validation/StringWrapper.java2
-rw-r--r--vespajlib/src/main/java/com/yahoo/net/HostName.java37
-rw-r--r--vespajlib/src/test/java/com/yahoo/net/HostNameTest.java25
5 files changed, 14 insertions, 60 deletions
diff --git a/vespajlib/abi-spec.json b/vespajlib/abi-spec.json
index ae69564b671..6044666ebf8 100644
--- a/vespajlib/abi-spec.json
+++ b/vespajlib/abi-spec.json
@@ -350,13 +350,13 @@
"fields": []
},
"com.yahoo.net.HostName": {
- "superClass": "ai.vespa.validation.PatternedStringWrapper",
+ "superClass": "java.lang.Object",
"interfaces": [],
"attributes": [
"public"
],
"methods": [
- "public static com.yahoo.net.HostName of(java.lang.String)",
+ "public void <init>()",
"public static synchronized java.lang.String getLocalhost()",
"public static void setHostNameForTestingOnly(java.lang.String)"
],
diff --git a/vespajlib/src/main/java/ai/vespa/http/DomainName.java b/vespajlib/src/main/java/ai/vespa/http/DomainName.java
index a566f5b95be..737f6b6d863 100644
--- a/vespajlib/src/main/java/ai/vespa/http/DomainName.java
+++ b/vespajlib/src/main/java/ai/vespa/http/DomainName.java
@@ -15,12 +15,12 @@ import static ai.vespa.validation.Validation.requireMatch;
*/
public class DomainName extends PatternedStringWrapper<DomainName> {
- static final Pattern labelPattern = Pattern.compile("([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])");
- static final Pattern domainNamePattern = Pattern.compile("(" + labelPattern + "\\.)*" + labelPattern);
+ protected static final Pattern labelPattern = Pattern.compile("([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])");
+ protected static final Pattern domainNamePattern = Pattern.compile("(" + labelPattern + "\\.)*" + labelPattern);
public static final DomainName localhost = DomainName.of("localhost");
- private DomainName(String value) {
+ protected DomainName(String value) {
super(requireLength(value, "domain name length", 1, 255), domainNamePattern, "domain name");
}
diff --git a/vespajlib/src/main/java/ai/vespa/validation/StringWrapper.java b/vespajlib/src/main/java/ai/vespa/validation/StringWrapper.java
index 0937627b57e..12be0002f6f 100644
--- a/vespajlib/src/main/java/ai/vespa/validation/StringWrapper.java
+++ b/vespajlib/src/main/java/ai/vespa/validation/StringWrapper.java
@@ -40,7 +40,7 @@ public abstract class StringWrapper<T extends StringWrapper<T>> implements Compa
@Override
public final boolean equals(Object o) {
if (this == o) return true;
- if (o == null || getClass() != o.getClass()) return false;
+ if ( ! (o instanceof StringWrapper<?>)) return false;
return value.equals(((StringWrapper<?>) o).value);
}
diff --git a/vespajlib/src/main/java/com/yahoo/net/HostName.java b/vespajlib/src/main/java/com/yahoo/net/HostName.java
index 20f1008055e..7446771f57c 100644
--- a/vespajlib/src/main/java/com/yahoo/net/HostName.java
+++ b/vespajlib/src/main/java/com/yahoo/net/HostName.java
@@ -1,39 +1,18 @@
-// 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.http.DomainName;
-import ai.vespa.validation.PatternedStringWrapper;
-
import java.util.Optional;
-import java.util.regex.Pattern;
-
-import static ai.vespa.validation.Validation.requireLength;
/**
- * Hostnames match {@link #hostNamePattern}, and are restricted to 64 characters in length.
- *
- * This class also has utilities for getting the hostname of the system running the JVM.
+ * This class 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 HostName extends PatternedStringWrapper<HostName> {
-
- static final Pattern labelPattern = Pattern.compile("([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])");
- static final Pattern hostNamePattern = Pattern.compile("(" + labelPattern + "\\.)*" + labelPattern);
+public class HostName {
- private static HostName preferredHostName = null;
-
- private HostName(String value) {
- super(requireLength(value, "hostname length", 1, 64), hostNamePattern, "hostname");
- }
-
- public static HostName of(String value) {
- return new HostName(value);
- }
+ private static String preferredHostName = null;
/**
* Return a public and fully qualified hostname for localhost that
@@ -45,19 +24,19 @@ public class HostName extends PatternedStringWrapper<HostName> {
if (preferredHostName == null) {
preferredHostName = getPreferredHostName();
}
- return preferredHostName.value();
+ return preferredHostName;
}
- static private HostName getPreferredHostName() {
+ static private String getPreferredHostName() {
Optional<String> vespaHostEnv = Optional.ofNullable(System.getenv("VESPA_HOSTNAME"));
if (vespaHostEnv.isPresent() && ! vespaHostEnv.get().trim().isEmpty()) {
- return of(vespaHostEnv.get().trim());
+ return vespaHostEnv.get().trim();
}
- return of("localhost");
+ return "localhost";
}
public static void setHostNameForTestingOnly(String hostName) {
- preferredHostName = HostName.of(hostName);
+ preferredHostName = hostName;
}
}
diff --git a/vespajlib/src/test/java/com/yahoo/net/HostNameTest.java b/vespajlib/src/test/java/com/yahoo/net/HostNameTest.java
index fa756b31616..2548c3cea60 100644
--- a/vespajlib/src/test/java/com/yahoo/net/HostNameTest.java
+++ b/vespajlib/src/test/java/com/yahoo/net/HostNameTest.java
@@ -1,39 +1,14 @@
// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.net;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertThrows;
-/**
- * @author jonmv
- */
public class HostNameTest {
@Test
- void testNames() {
- HostName.of("name-123.0.321-eman");
- HostName.of(("." + "a".repeat(32)).repeat(2).substring(1, 65));
- HostName.of("123");
-
- assertThrows(IllegalArgumentException.class, () -> HostName.of("_"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("-"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("."));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("-foo"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo-"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of(".foo"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo."));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo..bar"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo.-.bar"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo/"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("foo%"));
- assertThrows(IllegalArgumentException.class, () -> HostName.of(("." + "a".repeat(32)).repeat(2).substring(1, 66)));
- assertThrows(IllegalArgumentException.class, () -> HostName.of("a".repeat(64)));
- }
-
- @Test
void testHostnameIsFound() {
assertFalse(HostName.getLocalhost().isEmpty());
}