1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.logging.log4j.catalog.api.plugins;
17
18 import org.apache.logging.log4j.catalog.api.ConstraintType;
19 import org.apache.logging.log4j.core.config.plugins.Plugin;
20 import static org.apache.logging.log4j.catalog.api.util.StringUtils.isBlank;
21 import static org.apache.logging.log4j.catalog.api.util.StringUtils.appendNewline;
22
23
24
25
26 @Plugin(name = "minLength", category = ConstraintType.CATEGORY)
27 public class MinLengthConstraint implements ConstraintType {
28
29 @Override
30 public void validate(boolean isRequestContext, String name, String value, String minLength, StringBuilder error) {
31 if (isBlank(minLength)) {
32 appendNewline(error);
33 if (isRequestContext) {
34 error.append("ThreadContext key ");
35 }
36 error.append(name).append(" has no minimum length value defined");
37 return;
38 }
39 if (!isBlank(value)) {
40 try {
41 int minlen = Integer.parseInt(minLength);
42 if (value.length() < minlen) {
43 appendNewline(error);
44 if (isRequestContext) {
45 error.append("ThreadContext key ");
46 }
47 error.append(name).append(" does not contain ").append(minLength).append(" characters.");
48 }
49 } catch (Exception ex) {
50 appendNewline(error);
51 if (isRequestContext) {
52 error.append("ThreadContext key ");
53 }
54 error.append(name).append(" encountered an error trying to determine the minimum length value: ").append(ex.getMessage());
55 }
56 }
57 }
58 }