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.NotBlank;
23 import jakarta.validation.constraints.Pattern;
24 import jakarta.validation.constraints.Size;
25
26
27
28
29
30
31
32
33 public interface HasApiVersion {
34 String VALID_VERSION_PATTERN = "^[a-zA-Z]([a-zA-Z\\d]{1,9})?$";
35 String VALID_VERSION_PATTERN_MSG = "The version must match the pattern '" + VALID_VERSION_PATTERN + "'.";
36 String VALID_VERSION_EXAMPLE = "v1";
37
38 int VALID_VERSION_MIN_LENGTH = 1;
39 int VALID_VERSION_MAX_LENGTH = 10;
40 String VALID_VERSION_LENGTH_MSG = "The length of an api version must be between "
41 + VALID_VERSION_MIN_LENGTH + " and " + VALID_VERSION_MAX_LENGTH + " characters.";
42
43 @Schema(
44 name = "apiVersion",
45 description = "The version of a resource.",
46 example = "v1",
47 defaultValue = "v1",
48 pattern = VALID_VERSION_PATTERN,
49 minLength = VALID_VERSION_MIN_LENGTH,
50 maxLength = VALID_VERSION_MAX_LENGTH
51 )
52 @NotBlank
53 @Size(min = VALID_VERSION_MIN_LENGTH, max = VALID_VERSION_MAX_LENGTH, message = "The API Version is either too long or too short.")
54 @Pattern(regexp = VALID_VERSION_PATTERN, message = "The api version does not match the validation pattern.")
55 String getApiVersion();
56 }