diff options
author | jonmv <venstad@gmail.com> | 2022-04-09 14:51:56 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2022-04-09 14:51:56 +0200 |
commit | cb1eb57fa9707b1186f0aa10a0853780d7674742 (patch) | |
tree | 1c1ca993fdf96007ce4e2c98b2058809601d6fe5 /config-provisioning/src | |
parent | 87e5b33c003d07ca585d73e0166857fe22b4c16f (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 'config-provisioning/src')
-rw-r--r-- | config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java | 44 | ||||
-rw-r--r-- | config-provisioning/src/test/java/com/yahoo/config/provision/HostNameTest.java | 35 |
2 files changed, 45 insertions, 34 deletions
diff --git a/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java b/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java index 04b15af51f2..e55737da18d 100644 --- a/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java +++ b/config-provisioning/src/main/java/com/yahoo/config/provision/HostName.java @@ -1,47 +1,23 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.config.provision; -import java.util.Objects; +import ai.vespa.http.DomainName; + +import static ai.vespa.validation.Validation.requireLength; /** - * A host name + * Hostnames match {@link #domainNamePattern}, and are restricted to 64 characters in length. * - * @author mortent + * @author jonmv */ -public class HostName implements Comparable<HostName> { - - private final String name; - - private HostName(String name) { - this.name = name; - } - - public String value() { return name; } - - /** Create a {@link HostName} with a given name */ - public static HostName from(String name) { - return new HostName(name); - } - - @Override - public int hashCode() { - return name.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (!(obj instanceof HostName)) return false; - return Objects.equals(((HostName)obj).value(), value()); - } +public class HostName extends DomainName { - @Override - public String toString() { - return name; + private HostName(String value) { + super(requireLength(value, "hostname length", 1, 64)); } - @Override - public int compareTo(HostName that) { - return this.name.compareTo(that.name); + public static HostName of(String value) { + return new HostName(value); } } diff --git a/config-provisioning/src/test/java/com/yahoo/config/provision/HostNameTest.java b/config-provisioning/src/test/java/com/yahoo/config/provision/HostNameTest.java new file mode 100644 index 00000000000..da01920cc57 --- /dev/null +++ b/config-provisioning/src/test/java/com/yahoo/config/provision/HostNameTest.java @@ -0,0 +1,35 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +package com.yahoo.config.provision; + +import org.junit.Test; + +import static org.junit.Assert.assertThrows; + +/** + * @author jonmv + */ +public class HostNameTest { + + @Test + public 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))); + } + +} + |