1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package de.kaiserpfalzedv.commons.api.resources;
19
20 import org.eclipse.microprofile.openapi.annotations.media.Schema;
21
22 import jakarta.validation.constraints.Pattern;
23 import jakarta.validation.constraints.Size;
24
25
26
27
28
29
30
31
32 public interface HasName {
33 String VALID_NAME_PATTERN = "^[a-zA-Z][-a-zA-Z0-9]{1,61}(.[a-zA-Z][-a-zA-Z0-9]{1,61}){0,4}$";
34 String VALID_NAME_PATTERN_MSG = "The string must match the pattern '" + VALID_NAME_PATTERN + "'";
35
36 int VALID_NAME_MIN_LENGTH = 3;
37 int VALID_NAME_MAX_LENGTH = 100;
38 String VALID_NAME_LENGTH_MSG = "The length of the string must be between "
39 + VALID_NAME_MIN_LENGTH + " and " + VALID_NAME_MAX_LENGTH + " characters long.";
40
41 String VALID_NAME_EXAMPLE = "valid-name";
42
43 @Schema(
44 name = "name",
45 description = "The name of a resource.",
46 pattern = VALID_NAME_PATTERN,
47 minLength = VALID_NAME_MIN_LENGTH,
48 maxLength = VALID_NAME_MAX_LENGTH,
49 example = VALID_NAME_EXAMPLE
50 )
51 @Size(min = VALID_NAME_MIN_LENGTH, max = VALID_NAME_MAX_LENGTH, message = VALID_NAME_LENGTH_MSG)
52 @Pattern(regexp = VALID_NAME_PATTERN, message = VALID_NAME_PATTERN_MSG)
53 String getName();
54 }