1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 package gov.nist.secauto.swid.builder;
28
29 import java.util.Collection;
30 import java.util.regex.Pattern;
31
32 public abstract class AbstractBuilder implements Builder {
33 protected void validateNonNull(String field, Object value) throws ValidationException {
34 if (value == null) {
35 throw new ValidationException("the field '" + field + "' must be provided");
36 }
37 }
38
39 protected void validateNonEmpty(String field, String value) throws ValidationException {
40 validateNonNull(field, value);
41
42 if (value.isEmpty()) {
43 throw new ValidationException("the field '" + field + "' must contain a non-empty value");
44 }
45
46 }
47
48 protected void validateNonEmpty(String field, Object[] value) throws ValidationException {
49 validateNonNull(field, value);
50
51 if (value.length == 0) {
52 throw new ValidationException("the field '" + field + "' must be a non-empty array");
53 }
54
55 }
56
57 protected void validateNonEmpty(String field, byte[] value) throws ValidationException {
58 validateNonNull(field, value);
59
60 if (value.length == 0) {
61 throw new ValidationException("the field '" + field + "' must be a non-empty array");
62 }
63
64 }
65
66 protected <T> void validateNonEmpty(String field, Collection<T> value) throws ValidationException {
67 validateNonNull(field, value);
68
69 if (value.isEmpty()) {
70 throw new ValidationException("the field '" + field + "' must contain a non-empty value");
71 }
72
73 }
74
75 protected void validatePatternMatch(String field, Pattern pattern, String value) throws ValidationException {
76 validateNonNull(field, value);
77
78 if (!pattern.matcher(value).matches()) {
79 StringBuilder builder = new StringBuilder();
80 builder.append("the value for field '");
81 builder.append(field);
82 builder.append("' must match the pattern '");
83 builder.append(pattern.pattern());
84 builder.append('\'');
85 throw new ValidationException(builder.toString());
86 }
87 }
88
89 @Override
90 public final boolean isValid() {
91 try {
92 validate();
93 } catch (RuntimeException | ValidationException e) {
94 return false;
95 }
96 return true;
97 }
98 }