From d936dc65ad0b29a3c875a946a17cb35628d0335e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5kon=20Hallingstad?= Date: Wed, 13 Mar 2024 16:22:45 +0100 Subject: [PATCH] Add DomainName.leafLabel() --- vespajlib/src/main/java/ai/vespa/http/DomainName.java | 5 +++++ vespajlib/src/test/java/ai/vespa/http/DomainNameTest.java | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/vespajlib/src/main/java/ai/vespa/http/DomainName.java b/vespajlib/src/main/java/ai/vespa/http/DomainName.java index fa6964002bce..51ae9c12036f 100644 --- a/vespajlib/src/main/java/ai/vespa/http/DomainName.java +++ b/vespajlib/src/main/java/ai/vespa/http/DomainName.java @@ -32,4 +32,9 @@ public static String requireLabel(String label) { return requireMatch(label, "domain name label", labelPattern); } + public String leafLabel() { + int offset = value().lastIndexOf('.'); + return offset == -1 ? value() : value().substring(0, offset); + } + } diff --git a/vespajlib/src/test/java/ai/vespa/http/DomainNameTest.java b/vespajlib/src/test/java/ai/vespa/http/DomainNameTest.java index ed7650d2929e..f3c9b70b7db2 100644 --- a/vespajlib/src/test/java/ai/vespa/http/DomainNameTest.java +++ b/vespajlib/src/test/java/ai/vespa/http/DomainNameTest.java @@ -3,6 +3,7 @@ import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; /** @@ -30,6 +31,9 @@ void testNames() { assertThrows(IllegalArgumentException.class, () -> DomainName.of("foo%")); assertThrows(IllegalArgumentException.class, () -> DomainName.of(("." + "a".repeat(32)).repeat(8).substring(1, 257))); assertThrows(IllegalArgumentException.class, () -> DomainName.of("a".repeat(64))); + + assertEquals("foo", DomainName.of("foo").leafLabel()); + assertEquals("foo", DomainName.of("foo.com").leafLabel()); } }