Skip to content

Commit 1a525c7

Browse files
committed
update perf
1 parent 58a43e5 commit 1a525c7

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -244,9 +244,9 @@ public void walkConfig(Consumer<WalkConfig.Builder> customizer) {
244244
this.walkConfig = builder.build();
245245
}
246246

247-
private boolean unevaluatedPropertiesPresent = false;
247+
boolean unevaluatedPropertiesPresent = false;
248248

249-
private boolean unevaluatedItemsPresent = false;
249+
boolean unevaluatedItemsPresent = false;
250250

251251
public boolean isUnevaluatedPropertiesPresent() {
252252
return this.unevaluatedPropertiesPresent;

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

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,9 @@ public class Schema implements Validator {
6464
* The validators sorted and indexed by evaluation path.
6565
*/
6666
private List<KeywordValidator> validators = null;
67+
private boolean unevaluatedPropertiesPresent = false;
68+
private boolean unevaluatedItemsPresent = false;
69+
6770
private boolean validatorsLoaded = false;
6871
private boolean recursiveAnchor = false;
6972
private TypeValidator typeValidator = null;
@@ -660,6 +663,11 @@ private List<KeywordValidator> read(JsonNode schemaNode) {
660663
pname, nodeToUse, this);
661664
if (validator != null) {
662665
validators.add(validator);
666+
if ("unevaluatedProperties".equals(pname)) {
667+
this.unevaluatedPropertiesPresent = true;
668+
} else if ("unevaluatedItems".equals(pname)) {
669+
this.unevaluatedItemsPresent = true;
670+
}
663671

664672
if ("$ref".equals(pname)) {
665673
refValidator = validator;
@@ -723,13 +731,13 @@ public void validate(ExecutionContext executionContext, JsonNode jsonNode, JsonN
723731
// System.out.println("-----------------");
724732
// }
725733
executionContext.evaluationSchema.addLast(this);
726-
boolean unevaluatedPropertiesPresent = executionContext.isUnevaluatedPropertiesPresent();
727-
boolean unevaluatedItemsPresent = executionContext.isUnevaluatedItemsPresent();
728-
if (!unevaluatedPropertiesPresent) {
729-
executionContext.setUnevaluatedPropertiesPresent(hasKeyword("unevaluatedProperties"));
734+
boolean unevaluatedPropertiesPresent = executionContext.unevaluatedPropertiesPresent;
735+
boolean unevaluatedItemsPresent = executionContext.unevaluatedItemsPresent;
736+
if (this.unevaluatedPropertiesPresent) {
737+
executionContext.unevaluatedPropertiesPresent = this.unevaluatedPropertiesPresent;
730738
}
731-
if (!unevaluatedItemsPresent) {
732-
executionContext.setUnevaluatedItemsPresent(hasKeyword("unevaluatedItems"));
739+
if (this.unevaluatedItemsPresent) {
740+
executionContext.unevaluatedItemsPresent = this.unevaluatedItemsPresent;
733741
}
734742
try {
735743
int currentErrors = executionContext.getErrors().size();
@@ -750,8 +758,8 @@ public void validate(ExecutionContext executionContext, JsonNode jsonNode, JsonN
750758
}
751759
} finally {
752760
executionContext.evaluationSchema.removeLast();
753-
executionContext.setUnevaluatedPropertiesPresent(unevaluatedPropertiesPresent);
754-
executionContext.setUnevaluatedItemsPresent(unevaluatedItemsPresent);
761+
executionContext.unevaluatedPropertiesPresent = unevaluatedPropertiesPresent;
762+
executionContext.unevaluatedItemsPresent = unevaluatedItemsPresent;
755763
}
756764
}
757765

0 commit comments

Comments
 (0)