Skip to content

Commit 87a0316

Browse files
committed
EnumValidator optimizations
1 parent ad07477 commit 87a0316

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

src/main/java/com/networknt/schema/EnumValidator.java

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,35 +20,41 @@
2020
import org.slf4j.Logger;
2121
import org.slf4j.LoggerFactory;
2222

23-
import java.util.ArrayList;
2423
import java.util.Collections;
2524
import java.util.LinkedHashSet;
26-
import java.util.List;
25+
import java.util.HashSet;
2726
import java.util.Set;
2827

2928
public class EnumValidator extends BaseJsonValidator implements JsonValidator {
3029
private static final Logger logger = LoggerFactory.getLogger(EnumValidator.class);
3130

32-
private List<JsonNode> nodes;
33-
private String error;
31+
private final Set<JsonNode> nodes;
32+
private final String error;
3433

3534
public EnumValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
36-
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.ENUM, validationContext);
37-
nodes = new ArrayList<JsonNode>();
38-
error = "[none]";
35+
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.ENUM, validationContext);
3936

4037
if (schemaNode != null && schemaNode.isArray()) {
41-
error = "[";
42-
int i = 0;
38+
nodes = new HashSet<JsonNode>();
39+
StringBuilder sb = new StringBuilder();
40+
41+
sb.append('[');
42+
String separator = "";
43+
4344
for (JsonNode n : schemaNode) {
4445
nodes.add(n);
4546

46-
String v = n.asText();
47-
error = error + (i == 0 ? "" : ", ") + v;
48-
i++;
49-
47+
sb.append(separator);
48+
sb.append(n.asText());
49+
separator = ", ";
5050
}
51-
error = error + "]";
51+
52+
sb.append(']');
53+
54+
error = sb.toString();
55+
} else {
56+
nodes = Collections.emptySet();
57+
error = "[none]";
5258
}
5359

5460
parseErrorCode(getValidatorType().getErrorCodeKey());

0 commit comments

Comments
 (0)