Skip to content

Commit 6800d69

Browse files
authored
Merge pull request #49 from ehrmann/validation-message-order
Use LinkedHashSets for ValidationMessages
2 parents b1a74de + 9c24e16 commit 6800d69

28 files changed

+111
-121
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public AdditionalPropertiesValidator(String schemaPath, JsonNode schemaNode, Jso
6666
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
6767
if (logger.isDebugEnabled()) debug(logger, node, rootNode, at);
6868

69-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
69+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
7070
if (!node.isObject()) {
7171
// ignore no object
7272
return errors;
@@ -97,7 +97,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
9797
}
9898
}
9999
}
100-
return errors;
100+
return Collections.unmodifiableSet(errors);
101101
}
102102

103103
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import org.slf4j.LoggerFactory;
2323

2424
import java.util.ArrayList;
25-
import java.util.HashSet;
25+
import java.util.Collections;
26+
import java.util.LinkedHashSet;
2627
import java.util.List;
2728
import java.util.Set;
2829

@@ -43,13 +44,13 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
4344
debug(logger, node, rootNode, at);
4445

4546
int size = schemas.size();
46-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
47+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
4748

4849
for (int i = 0; i < size; i++) {
4950
errors.addAll(schemas.get(i).validate(node, rootNode, at));
5051
}
5152

52-
return errors;
53+
return Collections.unmodifiableSet(errors);
5354
}
5455

5556
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import org.slf4j.LoggerFactory;
2323

2424
import java.util.ArrayList;
25-
import java.util.HashSet;
25+
import java.util.Collections;
26+
import java.util.LinkedHashSet;
2627
import java.util.List;
2728
import java.util.Set;
2829

@@ -43,7 +44,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
4344
debug(logger, node, rootNode, at);
4445

4546
int size = schemas.size();
46-
Set<ValidationMessage> allErrors = new HashSet<ValidationMessage>();
47+
Set<ValidationMessage> allErrors = new LinkedHashSet<ValidationMessage>();
4748

4849
for (int i = 0; i < size; i++) {
4950
Set<ValidationMessage> errors = schemas.get(i).validate(node, rootNode, at);
@@ -53,7 +54,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
5354
allErrors.addAll(errors);
5455
}
5556

56-
return allErrors;
57+
return Collections.unmodifiableSet(allErrors);
5758
}
5859

5960
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public DependenciesValidator(String schemaPath, JsonNode schemaNode, JsonSchema
5555
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
5656
debug(logger, node, rootNode, at);
5757

58-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
58+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
5959

6060
for (Iterator<String> it = node.fieldNames(); it.hasNext(); ) {
6161
String pname = it.next();
@@ -73,7 +73,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
7373
}
7474
}
7575

76-
return errors;
76+
return Collections.unmodifiableSet(errors);
7777
}
7878

7979
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import org.slf4j.LoggerFactory;
2323

2424
import java.util.ArrayList;
25-
import java.util.HashSet;
25+
import java.util.Collections;
26+
import java.util.LinkedHashSet;
2627
import java.util.List;
2728
import java.util.Set;
2829

@@ -57,13 +58,13 @@ public EnumValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSc
5758
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
5859
debug(logger, node, rootNode, at);
5960

60-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
61+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
6162

6263
if (!nodes.contains(node)) {
6364
errors.add(buildValidationMessage(at, error));
6465
}
6566

66-
return errors;
67+
return Collections.unmodifiableSet(errors);
6768
}
6869

6970
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323

24+
import java.util.Collections;
2425
import java.util.HashMap;
25-
import java.util.HashSet;
26+
import java.util.LinkedHashSet;
2627
import java.util.Map;
2728
import java.util.Set;
2829
import java.util.regex.Matcher;
@@ -74,7 +75,7 @@ public FormatValidator(String schemaPath, JsonNode schemaNode, JsonSchema parent
7475
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
7576
debug(logger, node, rootNode, at);
7677

77-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
78+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
7879

7980
JsonType nodeType = TypeFactory.getValueNodeType(node);
8081
if (nodeType != JsonType.STRING) {
@@ -93,7 +94,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
9394
}
9495
}
9596

96-
return errors;
97+
return Collections.unmodifiableSet(errors);
9798
}
9899

99100
}

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222
import org.slf4j.LoggerFactory;
2323

2424
import java.util.ArrayList;
25-
import java.util.HashSet;
25+
import java.util.Collections;
26+
import java.util.LinkedHashSet;
2627
import java.util.List;
2728
import java.util.Set;
2829

@@ -61,7 +62,7 @@ public ItemsValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentS
6162
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
6263
debug(logger, node, rootNode, at);
6364

64-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
65+
Set<ValidationMessage> errors = new LinkedHashSet<ValidationMessage>();
6566

6667
if (!node.isArray()) {
6768
// ignores non-arrays
@@ -93,7 +94,7 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
9394

9495
i++;
9596
}
96-
return errors;
97+
return Collections.unmodifiableSet(errors);
9798
}
9899

99100
}

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323

24-
import java.util.HashSet;
24+
import java.util.Collections;
2525
import java.util.Set;
2626

2727
public class MaxItemsValidator extends BaseJsonValidator implements JsonValidator {
@@ -41,15 +41,13 @@ public MaxItemsValidator(String schemaPath, JsonNode schemaNode, JsonSchema pare
4141
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
4242
debug(logger, node, rootNode, at);
4343

44-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
45-
4644
if (node.isArray()) {
4745
if (node.size() > max) {
48-
errors.add(buildValidationMessage(at, "" + max));
46+
return Collections.singleton(buildValidationMessage(at, "" + max));
4947
}
5048
}
5149

52-
return errors;
50+
return Collections.emptySet();
5351
}
5452

5553
}

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323

24-
import java.util.HashSet;
24+
import java.util.Collections;
2525
import java.util.Set;
2626

2727
public class MaxLengthValidator extends BaseJsonValidator implements JsonValidator {
@@ -43,15 +43,14 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
4343
debug(logger, node, rootNode, at);
4444

4545
JsonType nodeType = TypeFactory.getValueNodeType(node);
46-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
4746
if (nodeType != JsonType.STRING) {
4847
// ignore no-string typs
49-
return errors;
48+
return Collections.emptySet();
5049
}
5150
if (node.textValue().codePointCount(0, node.textValue().length()) > maxLength) {
52-
errors.add(buildValidationMessage(at, "" + maxLength));
51+
return Collections.singleton(buildValidationMessage(at, "" + maxLength));
5352
}
54-
return errors;
53+
return Collections.emptySet();
5554
}
5655

5756
}

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.slf4j.Logger;
2222
import org.slf4j.LoggerFactory;
2323

24-
import java.util.HashSet;
24+
import java.util.Collections;
2525
import java.util.Set;
2626

2727
public class MaxPropertiesValidator extends BaseJsonValidator implements JsonValidator {
@@ -42,15 +42,13 @@ public MaxPropertiesValidator(String schemaPath, JsonNode schemaNode, JsonSchema
4242
public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String at) {
4343
debug(logger, node, rootNode, at);
4444

45-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
46-
4745
if (node.isObject()) {
4846
if (node.size() > max) {
49-
errors.add(buildValidationMessage(at, "" + max));
47+
return Collections.singleton(buildValidationMessage(at, "" + max));
5048
}
5149
}
5250

53-
return errors;
51+
return Collections.emptySet();
5452
}
5553

5654
}

0 commit comments

Comments
 (0)