Skip to content

Commit 3008efb

Browse files
authored
Merge pull request #57 from ehrmann/optimize-additional-properties-validator
Optimize AdditionalPropertiesValidator
2 parents 5ca5f27 + d0c358b commit 3008efb

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

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

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import java.util.ArrayList;
2020
import java.util.Collections;
21+
import java.util.HashSet;
2122
import java.util.Iterator;
2223
import java.util.LinkedHashSet;
2324
import java.util.List;
@@ -33,24 +34,26 @@
3334
public class AdditionalPropertiesValidator extends BaseJsonValidator implements JsonValidator {
3435
private static final Logger logger = LoggerFactory.getLogger(AdditionalPropertiesValidator.class);
3536

36-
private boolean allowAdditionalProperties;
37-
private JsonSchema additionalPropertiesSchema;
38-
private List<String> allowedProperties;
39-
private List<Pattern> patternProperties = new ArrayList<Pattern>();
37+
private final boolean allowAdditionalProperties;
38+
private final JsonSchema additionalPropertiesSchema;
39+
private final Set<String> allowedProperties;
40+
private final List<Pattern> patternProperties = new ArrayList<Pattern>();
4041

4142
public AdditionalPropertiesValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema,
4243
ValidationContext validationContext) {
4344
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.ADDITIONAL_PROPERTIES, validationContext);
44-
allowAdditionalProperties = false;
4545
if (schemaNode.isBoolean()) {
4646
allowAdditionalProperties = schemaNode.booleanValue();
47-
}
48-
if (schemaNode.isObject()) {
47+
additionalPropertiesSchema = null;
48+
} else if (schemaNode.isObject()) {
4949
allowAdditionalProperties = true;
5050
additionalPropertiesSchema = new JsonSchema(validationContext, getValidatorType().getValue(), schemaNode, parentSchema);
51+
} else {
52+
allowAdditionalProperties = false;
53+
additionalPropertiesSchema = null;
5154
}
5255

53-
allowedProperties = new ArrayList<String>();
56+
allowedProperties = new HashSet<String>();
5457
JsonNode propertiesNode = parentSchema.getSchemaNode().get(PropertiesValidator.PROPERTY);
5558
if (propertiesNode != null) {
5659
for (Iterator<String> it = propertiesNode.fieldNames(); it.hasNext(); ) {

0 commit comments

Comments
 (0)