Skip to content

Commit c80d82a

Browse files
committed
perf test
1 parent e69887c commit c80d82a

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,4 +243,28 @@ public void walkConfig(Consumer<WalkConfig.Builder> customizer) {
243243
customizer.accept(builder);
244244
this.walkConfig = builder.build();
245245
}
246+
247+
private boolean unevaluatedPropertiesPresent = false;
248+
249+
private boolean unevaluatedItemsPresent = false;
250+
251+
public boolean isUnevaluatedPropertiesPresent() {
252+
return this.unevaluatedPropertiesPresent;
253+
}
254+
255+
public boolean isUnevaluatedItemsPresent() {
256+
return this.unevaluatedItemsPresent;
257+
}
258+
259+
public boolean setUnevaluatedPropertiesPresent(boolean set) {
260+
boolean existing = this.unevaluatedPropertiesPresent;
261+
this.unevaluatedPropertiesPresent = set;
262+
return existing;
263+
}
264+
265+
public boolean setUnevaluatedItemsPresent(boolean set) {
266+
boolean existing = this.unevaluatedItemsPresent;
267+
this.unevaluatedItemsPresent = set;
268+
return existing;
269+
}
246270
}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,10 @@ public Schema fromRef(Schema refEvaluationParentSchema, NodePath refEvaluationPa
403403
public SchemaContext getSchemaContext() {
404404
return this.schemaContext;
405405
}
406+
407+
public boolean hasKeyword(String keyword) {
408+
return this.schemaNode.has(keyword);
409+
}
406410

407411
/**
408412
* Find the schema node for $ref attribute.
@@ -719,6 +723,8 @@ public void validate(ExecutionContext executionContext, JsonNode jsonNode, JsonN
719723
// System.out.println("-----------------");
720724
// }
721725
executionContext.evaluationSchema.addLast(this);
726+
boolean unevaluatedPropertiesPresent = executionContext.setUnevaluatedPropertiesPresent(hasKeyword("unevaluatedProperties"));
727+
boolean unevaluatedItemsPresent = executionContext.setUnevaluatedPropertiesPresent(hasKeyword("unevaluatedItems"));
722728
try {
723729
int currentErrors = executionContext.getErrors().size();
724730
for (KeywordValidator v : getValidators()) {
@@ -738,6 +744,8 @@ public void validate(ExecutionContext executionContext, JsonNode jsonNode, JsonN
738744
}
739745
} finally {
740746
executionContext.evaluationSchema.removeLast();
747+
executionContext.setUnevaluatedPropertiesPresent(unevaluatedPropertiesPresent);
748+
executionContext.setUnevaluatedPropertiesPresent(unevaluatedItemsPresent);
741749
}
742750
}
743751

src/main/java/com/networknt/schema/keyword/AbstractKeywordValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public String toString() {
9797
* @return true if annotations should be reported
9898
*/
9999
protected boolean collectAnnotations(ExecutionContext executionContext) {
100-
boolean hasUnevaluatedProperties = hasAdjacentKeywordInEvaluationPath(executionContext, "unevaluatedProperties");
100+
boolean hasUnevaluatedProperties = executionContext.isUnevaluatedPropertiesPresent() && hasAdjacentKeywordInEvaluationPath(executionContext, "unevaluatedProperties");
101101
if (hasUnevaluatedProperties) {
102102
return true;
103103
}

0 commit comments

Comments
 (0)