Skip to content

Commit a776738

Browse files
committed
if schema not valid to oneOf, added all error, that isnt
additionalProperties
1 parent 660793d commit a776738

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

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

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
import java.util.HashSet;
2626
import java.util.List;
2727
import java.util.Set;
28+
import java.util.stream.Collectors;
2829

2930
public class OneOfValidator extends BaseJsonValidator implements JsonValidator {
3031
private static final Logger logger = LoggerFactory.getLogger(RequiredValidator.class);
@@ -45,21 +46,33 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String
4546
debug(logger, node, rootNode, at);
4647

4748
int numberOfValidSchema = 0;
48-
49+
Set<ValidationMessage> errors = new HashSet<>();
50+
4951
for (JsonSchema schema : schemas) {
50-
Set<ValidationMessage> errors = schema.validate(node, rootNode, at);
51-
if (errors == null || errors.isEmpty()) {
52+
Set<ValidationMessage> schemaErrors = schema.validate(node, rootNode, at);
53+
if (schemaErrors.isEmpty()) {
5254
numberOfValidSchema++;
55+
errors = new HashSet<>();
5356
}
57+
if(numberOfValidSchema == 0){
58+
errors.addAll(schemaErrors);
59+
}
5460
if (numberOfValidSchema > 1) {
5561
break;
5662
}
5763
}
58-
59-
Set<ValidationMessage> errors = new HashSet<ValidationMessage>();
60-
if (numberOfValidSchema != 1) {
61-
errors.add(buildValidationMessage(at, ""));
64+
65+
if (numberOfValidSchema == 0) {
66+
errors = errors.stream()
67+
.filter(msg -> !ValidatorTypeCode.ADDITIONAL_PROPERTIES
68+
.equals(ValidatorTypeCode.fromValue(msg.getType())))
69+
.collect(Collectors.toSet());
70+
}
71+
if (numberOfValidSchema > 1) {
72+
errors = new HashSet<>();
73+
errors.add(buildValidationMessage(at, ""));
6274
}
75+
6376
return errors;
6477
}
6578

0 commit comments

Comments
 (0)