summaryrefslogtreecommitdiffstats
path: root/vespajlib/src
diff options
context:
space:
mode:
authorJon Marius Venstad <venstad@gmail.com>2022-03-31 11:08:13 +0200
committerJon Marius Venstad <venstad@gmail.com>2022-03-31 11:08:13 +0200
commit4e32e82f187a5df2765d1b4c8980a478998a415d (patch)
tree1d0ba6a754f15f1533b25169564f1255613a328c /vespajlib/src
parent2353b584a69e14f97682ad90b3a492b1530abff2 (diff)
Add a PatternedStringWrapper for the common case with a regex
Diffstat (limited to 'vespajlib/src')
-rw-r--r--vespajlib/src/main/java/ai/vespa/validation/Name.java22
-rw-r--r--vespajlib/src/test/java/ai/vespa/validation/NameTest.java4
2 files changed, 11 insertions, 15 deletions
diff --git a/vespajlib/src/main/java/ai/vespa/validation/Name.java b/vespajlib/src/main/java/ai/vespa/validation/Name.java
index 8a66d76c911..12740f230f2 100644
--- a/vespajlib/src/main/java/ai/vespa/validation/Name.java
+++ b/vespajlib/src/main/java/ai/vespa/validation/Name.java
@@ -6,27 +6,23 @@ import java.util.regex.Pattern;
import static ai.vespa.validation.Validation.requireMatch;
/**
- * A name is a non-null, non-blank {@link String} which starts with a letter, and has up to
- * 254 more characters which may be letters, numbers, dashes or underscores.
+ * A name has from 1 to 64 {@link String} characters which may be letters, numbers,
+ * dashes or underscores, and must start with a letter.
*
- * Prefer domain-specific wrappers over this class, but prefer this over raw strings when possible. gT
+ * Prefer domain-specific wrappers over this class, but prefer this over raw strings when possible.
*
* @author jonmv
*/
-public class Name extends StringWrapper<Name> {
+public class Name extends PatternedStringWrapper<Name> {
- public static final Pattern namePattern = Pattern.compile("[A-Za-z][A-Za-z0-9_-]{0,254}");
+ static final Pattern namePattern = Pattern.compile("[A-Za-z][A-Za-z0-9_-]{0,62}");
- private Name(String value) {
- super(value);
+ private Name(String name) {
+ super(name, namePattern, "name");
}
public static Name of(String value) {
- return of(value, "name");
- };
-
- public static Name of(String value, String description) {
- return new Name(requireMatch(value, description, namePattern));
- };
+ return new Name(value);
+ }
}
diff --git a/vespajlib/src/test/java/ai/vespa/validation/NameTest.java b/vespajlib/src/test/java/ai/vespa/validation/NameTest.java
index a578bb718a7..e6645ee4fc3 100644
--- a/vespajlib/src/test/java/ai/vespa/validation/NameTest.java
+++ b/vespajlib/src/test/java/ai/vespa/validation/NameTest.java
@@ -14,7 +14,7 @@ class NameTest {
@Test
void testNames() {
Name.of("name123-_-");
- Name.of("O".repeat(255));
+ Name.of("O".repeat(64));
assertThrows(IllegalArgumentException.class, () -> Name.of("0"));
assertThrows(IllegalArgumentException.class, () -> Name.of("_"));
@@ -22,7 +22,7 @@ class NameTest {
assertThrows(IllegalArgumentException.class, () -> Name.of("foo."));
assertThrows(IllegalArgumentException.class, () -> Name.of("foo/"));
assertThrows(IllegalArgumentException.class, () -> Name.of("foo%"));
- assertThrows(IllegalArgumentException.class, () -> Name.of("w".repeat(256)));
+ assertThrows(IllegalArgumentException.class, () -> Name.of("w".repeat(65)));
}
}