Skip to content

Commit d92caed

Browse files
authored
Set initial array list size (#1062)
1 parent 4e5a808 commit d92caed

10 files changed

+30
-16
lines changed

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public AdditionalPropertiesValidator(SchemaLocation schemaLocation, JsonNodePath
7171

7272
JsonNode patternPropertiesNode = parentSchema.getSchemaNode().get(PatternPropertiesValidator.PROPERTY);
7373
if (patternPropertiesNode != null) {
74-
this.patternProperties = new ArrayList<>();
74+
this.patternProperties = new ArrayList<>(patternPropertiesNode.size());
7575
for (Iterator<String> it = patternPropertiesNode.fieldNames(); it.hasNext(); ) {
7676
patternProperties.add(RegularExpression.compile(it.next(), validationContext));
7777
}

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
public class AllOfValidator extends BaseJsonValidator {
3232
private static final Logger logger = LoggerFactory.getLogger(AllOfValidator.class);
3333

34-
private final List<JsonSchema> schemas = new ArrayList<>();
34+
private final List<JsonSchema> schemas;
3535

3636
public AllOfValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
3737
super(schemaLocation, evaluationPath, schemaNode, parentSchema, ValidatorTypeCode.ALL_OF, validationContext);
@@ -44,6 +44,7 @@ public AllOfValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath
4444
.build());
4545
}
4646
int size = schemaNode.size();
47+
this.schemas = new ArrayList<>(size);
4748
for (int i = 0; i < size; i++) {
4849
this.schemas.add(validationContext.newSchema(schemaLocation.append(i), evaluationPath.append(i),
4950
schemaNode.get(i), parentSchema));

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class AnyOfValidator extends BaseJsonValidator {
3131
private static final Logger logger = LoggerFactory.getLogger(AnyOfValidator.class);
3232
private static final String DISCRIMINATOR_REMARK = "and the discriminator-selected candidate schema didn't pass validation";
3333

34-
private final List<JsonSchema> schemas = new ArrayList<>();
34+
private final List<JsonSchema> schemas;
3535

3636
private Boolean canShortCircuit = null;
3737

@@ -46,6 +46,7 @@ public AnyOfValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath
4646
.build());
4747
}
4848
int size = schemaNode.size();
49+
this.schemas = new ArrayList<>(size);
4950
for (int i = 0; i < size; i++) {
5051
this.schemas.add(validationContext.newSchema(schemaLocation.append(i), evaluationPath.append(i),
5152
schemaNode.get(i), parentSchema));

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -50,15 +50,16 @@ public ItemsValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath
5050

5151
Boolean additionalItems = null;
5252

53-
this.tupleSchema = new ArrayList<>();
5453
JsonSchema foundSchema = null;
5554
JsonSchema foundAdditionalSchema = null;
5655
JsonNode additionalItemsSchemaNode = null;
5756

5857
if (schemaNode.isObject() || schemaNode.isBoolean()) {
5958
foundSchema = validationContext.newSchema(schemaLocation, evaluationPath, schemaNode, parentSchema);
59+
this.tupleSchema = Collections.emptyList();
6060
} else {
6161
int i = 0;
62+
this.tupleSchema = new ArrayList<>(schemaNode.size());
6263
for (JsonNode s : schemaNode) {
6364
this.tupleSchema.add(validationContext.newSchema(schemaLocation.append(i), evaluationPath.append(i),
6465
s, parentSchema));

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,9 @@ private JsonNode handleNullNode(String ref, JsonSchema schema) {
491491
* Please note that the key in {@link #validators} map is the evaluation path.
492492
*/
493493
private List<JsonValidator> read(JsonNode schemaNode) {
494-
List<JsonValidator> validators = new ArrayList<>();
494+
List<JsonValidator> validators;
495495
if (schemaNode.isBoolean()) {
496+
validators = new ArrayList<>(1);
496497
if (schemaNode.booleanValue()) {
497498
JsonNodePath path = getEvaluationPath().append("true");
498499
JsonValidator validator = this.validationContext.newValidator(getSchemaLocation().append("true"), path,
@@ -508,6 +509,7 @@ private List<JsonValidator> read(JsonNode schemaNode) {
508509
JsonValidator refValidator = null;
509510

510511
Iterator<Entry<String, JsonNode>> iterator = schemaNode.fields();
512+
validators = new ArrayList<>(schemaNode.size());
511513
while (iterator.hasNext()) {
512514
Entry<String, JsonNode> entry = iterator.next();
513515
String pname = entry.getKey();

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,18 @@
2828
public class NotAllowedValidator extends BaseJsonValidator implements JsonValidator {
2929
private static final Logger logger = LoggerFactory.getLogger(NotAllowedValidator.class);
3030

31-
private final List<String> fieldNames = new ArrayList<>();
31+
private final List<String> fieldNames;
3232

3333
public NotAllowedValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
3434
super(schemaLocation, evaluationPath, schemaNode, parentSchema, ValidatorTypeCode.NOT_ALLOWED, validationContext);
3535
if (schemaNode.isArray()) {
3636
int size = schemaNode.size();
37+
this.fieldNames = new ArrayList<>(size);
3738
for (int i = 0; i < size; i++) {
3839
fieldNames.add(schemaNode.get(i).asText());
3940
}
41+
} else {
42+
this.fieldNames = Collections.emptyList();
4043
}
4144
}
4245

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
public class OneOfValidator extends BaseJsonValidator {
3131
private static final Logger logger = LoggerFactory.getLogger(OneOfValidator.class);
3232

33-
private final List<JsonSchema> schemas = new ArrayList<>();
33+
private final List<JsonSchema> schemas;
3434

3535
private Boolean canShortCircuit = null;
3636

@@ -45,6 +45,7 @@ public OneOfValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath
4545
.build());
4646
}
4747
int size = schemaNode.size();
48+
this.schemas = new ArrayList<>(size);
4849
for (int i = 0; i < size; i++) {
4950
JsonNode childNode = schemaNode.get(i);
5051
this.schemas.add(validationContext.newSchema( schemaLocation.append(i), evaluationPath.append(i), childNode, parentSchema));

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

+1-2
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,9 @@ public class PrefixItemsValidator extends BaseJsonValidator {
4444
public PrefixItemsValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
4545
super(schemaLocation, evaluationPath, schemaNode, parentSchema, ValidatorTypeCode.PREFIX_ITEMS, validationContext);
4646

47-
this.tupleSchema = new ArrayList<>();
48-
4947
if (schemaNode instanceof ArrayNode && 0 < schemaNode.size()) {
5048
int i = 0;
49+
this.tupleSchema = new ArrayList<>(schemaNode.size());
5150
for (JsonNode s : schemaNode) {
5251
this.tupleSchema.add(validationContext.newSchema(schemaLocation.append(i), evaluationPath.append(i), s,
5352
parentSchema));

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -28,14 +28,17 @@
2828
public class RequiredValidator extends BaseJsonValidator implements JsonValidator {
2929
private static final Logger logger = LoggerFactory.getLogger(RequiredValidator.class);
3030

31-
private final List<String> fieldNames = new ArrayList<>();
31+
private final List<String> fieldNames;
3232

3333
public RequiredValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
3434
super(schemaLocation, evaluationPath, schemaNode, parentSchema, ValidatorTypeCode.REQUIRED, validationContext);
3535
if (schemaNode.isArray()) {
36+
this.fieldNames = new ArrayList<>(schemaNode.size());
3637
for (JsonNode fieldNme : schemaNode) {
3738
fieldNames.add(fieldNme.asText());
3839
}
40+
} else {
41+
this.fieldNames = Collections.emptyList();
3942
}
4043
}
4144

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

+9-6
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
public class UnionTypeValidator extends BaseJsonValidator implements JsonValidator {
3232
private static final Logger logger = LoggerFactory.getLogger(UnionTypeValidator.class);
3333

34-
private final List<JsonValidator> schemas = new ArrayList<>();
34+
private final List<JsonValidator> schemas;
3535
private final String error;
3636

3737
public UnionTypeValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
@@ -41,21 +41,24 @@ public UnionTypeValidator(SchemaLocation schemaLocation, JsonNodePath evaluation
4141
String sep = "";
4242
errorBuilder.append('[');
4343

44-
if (!schemaNode.isArray())
44+
if (!schemaNode.isArray()) {
4545
throw new JsonSchemaException("Expected array for type property on Union Type Definition.");
46+
}
4647

4748
int i = 0;
49+
this.schemas = new ArrayList<>(schemaNode.size());
4850
for (JsonNode n : schemaNode) {
4951
JsonType t = TypeFactory.getSchemaNodeType(n);
5052
errorBuilder.append(sep).append(t);
5153
sep = ", ";
5254

53-
if (n.isObject())
55+
if (n.isObject()) {
5456
schemas.add(validationContext.newSchema(schemaLocation.append(ValidatorTypeCode.TYPE.getValue()),
5557
evaluationPath.append(ValidatorTypeCode.TRUE.getValue()), n, parentSchema));
56-
else
57-
schemas.add(new TypeValidator(schemaLocation.append(i), evaluationPath.append(i), n, parentSchema, validationContext));
58-
58+
} else {
59+
schemas.add(new TypeValidator(schemaLocation.append(i), evaluationPath.append(i), n, parentSchema,
60+
validationContext));
61+
}
5962
i++;
6063
}
6164

0 commit comments

Comments
 (0)