Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactoring-code #539

Merged
merged 1 commit into from
Mar 27, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/AllOfValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
public class AllOfValidator extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(AllOfValidator.class);

private final ValidationContext validationContext;
private final List<JsonSchema> schemas = new ArrayList<JsonSchema>();

public AllOfValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/AnyOfValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public class AnyOfValidator extends BaseJsonValidator implements JsonValidator {
private static final String DISCRIMINATOR_REMARK = "and the discriminator-selected candidate schema didn't pass validation";

private final List<JsonSchema> schemas = new ArrayList<JsonSchema>();
private final ValidationContext validationContext;
private final ValidationContext.DiscriminatorContext discriminatorContext;

public AnyOfValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/com/networknt/schema/BaseJsonValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public abstract class BaseJsonValidator implements JsonValidator {
private boolean suppressSubSchemaRetrieval;
private ValidatorTypeCode validatorType;
private ErrorMessageType errorMessageType;

protected ValidationContext validationContext;
protected final boolean failFast;
protected final ApplyDefaultsStrategy applyDefaultsStrategy;

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/DateTimeValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@
public class DateTimeValidator extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(DateTimeValidator.class);

private final ValidationContext validationContext;

private final String formatName;
private final String DATE = "date";
private final String DATETIME = "date-time";
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/EnumValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public class EnumValidator extends BaseJsonValidator implements JsonValidator {

private final Set<JsonNode> nodes;
private final String error;
private final ValidationContext validationContext;

public EnumValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.ENUM, validationContext);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ public class ExclusiveMaximumValidator extends BaseJsonValidator implements Json

private final ThresholdMixin typedMaximum;

private final ValidationContext validationContext;

public ExclusiveMaximumValidator(String schemaPath, final JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.EXCLUSIVE_MAXIMUM, validationContext);
this.validationContext = validationContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ public class ExclusiveMinimumValidator extends BaseJsonValidator implements Json
*/
private final ThresholdMixin typedMinimum;

private final ValidationContext validationContext;

public ExclusiveMinimumValidator(String schemaPath, final JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.EXCLUSIVE_MINIMUM, validationContext);
this.validationContext = validationContext;
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/FormatValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public class FormatValidator extends BaseJsonValidator implements JsonValidator
private static final Logger logger = LoggerFactory.getLogger(FormatValidator.class);

private final Format format;
private final ValidationContext validationContext;

public FormatValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext, Format format) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.FORMAT, validationContext);
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/ItemsValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public class ItemsValidator extends BaseJsonValidator implements JsonValidator {
private boolean additionalItems = true;
private final JsonSchema additionalSchema;
private WalkListenerRunner arrayItemWalkListenerRunner;
private final ValidationContext validationContext;

public ItemsValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema,
ValidationContext validationContext) {
Expand Down
140 changes: 4 additions & 136 deletions src/main/java/com/networknt/schema/JsonMetaSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,138 +93,6 @@ static PatternFormat pattern(String name, String regex) {
COMMON_BUILTIN_FORMATS.add(pattern("style", "\\s*(.+?):\\s*([^;]+);?"));
}

private static class V4 {
private static String URI = "https://json-schema.org/draft-04/schema";
private static final String ID = "id";

public static final List<Format> BUILTIN_FORMATS = new ArrayList<Format>(JsonMetaSchema.COMMON_BUILTIN_FORMATS);

static {
// add version specific formats here.
//BUILTIN_FORMATS.add(pattern("phone", "^\\+(?:[0-9] ?){6,14}[0-9]$"));
}

public static JsonMetaSchema getInstance() {
return new Builder(URI)
.idKeyword(ID)
.addFormats(BUILTIN_FORMATS)
.addKeywords(ValidatorTypeCode.getNonFormatKeywords(SpecVersion.VersionFlag.V4))
// keywords that may validly exist, but have no validation aspect to them
.addKeywords(Arrays.asList(
new NonValidationKeyword("$schema"),
new NonValidationKeyword("id"),
new NonValidationKeyword("title"),
new NonValidationKeyword("description"),
new NonValidationKeyword("default"),
new NonValidationKeyword("definitions"),
new NonValidationKeyword("exampleSetFlag")
))
.build();
}
}

private static class V6 {
private static String URI = "https://json-schema.org/draft-06/schema";
// Draft 6 uses "$id"
private static final String ID = "$id";

public static final List<Format> BUILTIN_FORMATS = new ArrayList<Format>(JsonMetaSchema.COMMON_BUILTIN_FORMATS);

static {
// add version specific formats here.
//BUILTIN_FORMATS.add(pattern("phone", "^\\+(?:[0-9] ?){6,14}[0-9]$"));
}

public static JsonMetaSchema getInstance() {
return new Builder(URI)
.idKeyword(ID)
.addFormats(BUILTIN_FORMATS)
.addKeywords(ValidatorTypeCode.getNonFormatKeywords(SpecVersion.VersionFlag.V6))
// keywords that may validly exist, but have no validation aspect to them
.addKeywords(Arrays.asList(
new NonValidationKeyword("$schema"),
new NonValidationKeyword("$id"),
new NonValidationKeyword("title"),
new NonValidationKeyword("description"),
new NonValidationKeyword("default"),
new NonValidationKeyword("definitions")
))
.build();
}
}

private static class V7 {
private static String URI = "https://json-schema.org/draft-07/schema";
private static final String ID = "$id";

public static final List<Format> BUILTIN_FORMATS = new ArrayList<Format>(JsonMetaSchema.COMMON_BUILTIN_FORMATS);

static {
// add version specific formats here.
//BUILTIN_FORMATS.add(pattern("phone", "^\\+(?:[0-9] ?){6,14}[0-9]$"));
}

public static JsonMetaSchema getInstance() {
return new Builder(URI)
.idKeyword(ID)
.addFormats(BUILTIN_FORMATS)
.addKeywords(ValidatorTypeCode.getNonFormatKeywords(SpecVersion.VersionFlag.V7))
// keywords that may validly exist, but have no validation aspect to them
.addKeywords(Arrays.asList(
new NonValidationKeyword("$schema"),
new NonValidationKeyword("$id"),
new NonValidationKeyword("title"),
new NonValidationKeyword("description"),
new NonValidationKeyword("default"),
new NonValidationKeyword("definitions"),
new NonValidationKeyword("$comment"),
new NonValidationKeyword("contentMediaType"),
new NonValidationKeyword("contentEncoding"),
new NonValidationKeyword("examples"),
new NonValidationKeyword("message")
))
.build();
}
}

private static class V201909 {
private static String URI = "https://json-schema.org/draft/2019-09/schema";
private static final String ID = "$id";

public static final List<Format> BUILTIN_FORMATS = new ArrayList<Format>(JsonMetaSchema.COMMON_BUILTIN_FORMATS);

static {
// add version specific formats here.
//BUILTIN_FORMATS.add(pattern("phone", "^\\+(?:[0-9] ?){6,14}[0-9]$"));
}

public static JsonMetaSchema getInstance() {
return new Builder(URI)
.idKeyword(ID)
.addFormats(BUILTIN_FORMATS)
.addKeywords(ValidatorTypeCode.getNonFormatKeywords(SpecVersion.VersionFlag.V201909))
// keywords that may validly exist, but have no validation aspect to them
.addKeywords(Arrays.asList(
new NonValidationKeyword("$schema"),
new NonValidationKeyword("$id"),
new NonValidationKeyword("title"),
new NonValidationKeyword("description"),
new NonValidationKeyword("default"),
new NonValidationKeyword("definitions"),
new NonValidationKeyword("$comment"),
new NonValidationKeyword("$defs"), // newly added in 2019-09 release.
new NonValidationKeyword("$anchor"),
new NonValidationKeyword("additionalItems"),
new NonValidationKeyword("deprecated"),
new NonValidationKeyword("contentMediaType"),
new NonValidationKeyword("contentEncoding"),
new NonValidationKeyword("examples"),
new NonValidationKeyword("then")
))
.build();
}
}

public static class Builder {
private Map<String, Keyword> keywords = new HashMap<String, Keyword>();
private Map<String, Format> formats = new HashMap<String, Format>();
Expand Down Expand Up @@ -312,19 +180,19 @@ private JsonMetaSchema(String uri, String idKeyword, Map<String, Keyword> keywor
}

public static JsonMetaSchema getV4() {
return V4.getInstance();
return new Version4().getInstance();
}

public static JsonMetaSchema getV6() {
return V6.getInstance();
return new Version6().getInstance();
}

public static JsonMetaSchema getV7() {
return V7.getInstance();
return new Version7().getInstance();
}

public static JsonMetaSchema getV201909() {
return V201909.getInstance();
return new Version201909().getInstance();
}

/**
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/JsonSchema.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@
public class JsonSchema extends BaseJsonValidator {
private static final Pattern intPattern = Pattern.compile("^[0-9]+$");
private Map<String, JsonValidator> validators;
private final ValidationContext validationContext;
private final JsonMetaSchema metaSchema;
private boolean validatorsLoaded = false;

Expand Down
24 changes: 15 additions & 9 deletions src/main/java/com/networknt/schema/JsonSchemaFactory.java
Original file line number Diff line number Diff line change
Expand Up @@ -240,25 +240,31 @@ public static JsonSchemaFactory getInstance() {
}

public static JsonSchemaFactory getInstance(SpecVersion.VersionFlag versionFlag) {
JsonMetaSchema metaSchema = null;
JsonSchemaVersion jsonSchemaVersion = checkVersion(versionFlag);
JsonMetaSchema metaSchema = jsonSchemaVersion.getInstance();
return builder()
.defaultMetaSchemaURI(metaSchema.getUri())
.addMetaSchema(metaSchema)
.build();
}

public static JsonSchemaVersion checkVersion(SpecVersion.VersionFlag versionFlag){
JsonSchemaVersion jsonSchemaVersion = null;
switch (versionFlag) {
case V201909:
metaSchema = JsonMetaSchema.getV201909();
jsonSchemaVersion = new Version201909();
break;
case V7:
metaSchema = JsonMetaSchema.getV7();
jsonSchemaVersion = new Version7();
break;
case V6:
metaSchema = JsonMetaSchema.getV6();
jsonSchemaVersion = new Version6();
break;
case V4:
metaSchema = JsonMetaSchema.getV4();
jsonSchemaVersion = new Version4();
break;
}
return builder()
.defaultMetaSchemaURI(metaSchema.getUri())
.addMetaSchema(metaSchema)
.build();
return jsonSchemaVersion;
}

public static Builder builder(final JsonSchemaFactory blueprint) {
Expand Down
15 changes: 15 additions & 0 deletions src/main/java/com/networknt/schema/JsonSchemaVersion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package com.networknt.schema;

import java.util.ArrayList;
import java.util.List;

abstract class JsonSchemaVersion {
protected static String URI;
protected static String ID;
public static final List<Format> BUILTIN_FORMATS = new ArrayList<Format>(JsonMetaSchema.COMMON_BUILTIN_FORMATS);
static {
// add version specific formats here.
//BUILTIN_FORMATS.add(pattern("phone", "^\\+(?:[0-9] ?){6,14}[0-9]$"));
}
abstract JsonMetaSchema getInstance();
}
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/MaxItemsValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ public class MaxItemsValidator extends BaseJsonValidator implements JsonValidato

private static final Logger logger = LoggerFactory.getLogger(MaxItemsValidator.class);

private final ValidationContext validationContext;

private int max = 0;

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/MaxLengthValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
public class MaxLengthValidator extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(MaxLengthValidator.class);

private final ValidationContext validationContext;

private int maxLength;

public MaxLengthValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
1 change: 0 additions & 1 deletion src/main/java/com/networknt/schema/MaximumValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public class MaximumValidator extends BaseJsonValidator implements JsonValidator
private boolean excludeEqual = false;

private final ThresholdMixin typedMaximum;
private final ValidationContext validationContext;


public MaximumValidator(String schemaPath, final JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/MinItemsValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
public class MinItemsValidator extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(MinItemsValidator.class);

private final ValidationContext validationContext;

private int min = 0;

public MinItemsValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/MinLengthValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@
public class MinLengthValidator extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(MinLengthValidator.class);

private final ValidationContext validationContext;

private int minLength;

public MinLengthValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/MinimumValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ public class MinimumValidator extends BaseJsonValidator implements JsonValidator
*/
private final ThresholdMixin typedMinimum;

private final ValidationContext validationContext;

public MinimumValidator(String schemaPath, final JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.MINIMUM, validationContext);

Expand Down
2 changes: 0 additions & 2 deletions src/main/java/com/networknt/schema/PatternValidator.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ public Set<ValidationMessage> walk(JsonNode node, JsonNode rootNode, String at,

private static class PatternValidatorJava extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(PatternValidator.class);
private final ValidationContext validationContext;
private String pattern;
private Pattern compiledPattern;

Expand Down Expand Up @@ -110,7 +109,6 @@ public Set<ValidationMessage> validate(JsonNode node, JsonNode rootNode, String

private static class PatternValidatorEcma262 extends BaseJsonValidator implements JsonValidator {
private static final Logger logger = LoggerFactory.getLogger(PatternValidator.class);
private final ValidationContext validationContext;
private String pattern;
private Regex compiledRegex;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public class PropertiesValidator extends BaseJsonValidator implements JsonValida
public static final String PROPERTY = "properties";
private static final Logger logger = LoggerFactory.getLogger(PropertiesValidator.class);
private final Map<String, JsonSchema> schemas = new HashMap<String, JsonSchema>();
private final ValidationContext validationContext;

public PropertiesValidator(String schemaPath, JsonNode schemaNode, JsonSchema parentSchema, ValidationContext validationContext) {
super(schemaPath, schemaNode, parentSchema, ValidatorTypeCode.PROPERTIES, validationContext);
Expand Down
Loading