diff options
author | Jon Marius Venstad <venstad@gmail.com> | 2022-03-31 11:08:13 +0200 |
---|---|---|
committer | Jon Marius Venstad <venstad@gmail.com> | 2022-03-31 11:08:13 +0200 |
commit | 4e32e82f187a5df2765d1b4c8980a478998a415d (patch) | |
tree | 1d0ba6a754f15f1533b25169564f1255613a328c | |
parent | 2353b584a69e14f97682ad90b3a492b1530abff2 (diff) |
Add a PatternedStringWrapper for the common case with a regex
-rw-r--r-- | vespajlib/src/main/java/ai/vespa/validation/Name.java | 22 | ||||
-rw-r--r-- | vespajlib/src/test/java/ai/vespa/validation/NameTest.java | 4 |
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))); } } |