Package org.apache.johnzon.jsonschema
Class JsonSchemaValidatorFactory
- java.lang.Object
-
- org.apache.johnzon.jsonschema.JsonSchemaValidatorFactory
-
- All Implemented Interfaces:
AutoCloseable
public class JsonSchemaValidatorFactory extends Object implements AutoCloseable
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classJsonSchemaValidatorFactory.ChainedValueAccessorprivate static classJsonSchemaValidatorFactory.ValidationsFunction
-
Field Summary
Fields Modifier and Type Field Description private List<ValidationExtension>extensionsprivate booleanfailFastprivate static Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>NO_VALIDATIONprivate AtomicReference<Function<String,Predicate<CharSequence>>>regexFactoryprivate static String[]ROOT_PATH
-
Constructor Summary
Constructors Constructor Description JsonSchemaValidatorFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description JsonSchemaValidatorFactoryappendExtensions(ValidationExtension... extensions)private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>buildAdditionalPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)private Stream<Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>>buildDirectValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>buildPatternPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>buildPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>buildValidator(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)voidclose()List<ValidationExtension>createDefaultValidations()private static jakarta.json.JsonValueextractValidable(jakarta.json.JsonValue root, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)booleanisFailFast()JsonSchemaValidatornewInstance(jakarta.json.JsonObject schema)private Predicate<CharSequence>newRegexFactory(String regex)JsonSchemaValidatorFactorysetExtensions(ValidationExtension... extensions)JsonSchemaValidatorFactorysetFailFast(boolean failFast)Whentrue, validation stops at the first failing keyword instead of evaluating all keywords and aggregating all errors.JsonSchemaValidatorFactorysetRegexFactory(Function<String,Predicate<CharSequence>> factory)private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>toFunction(List<Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>> validations)
-
-
-
Field Detail
-
ROOT_PATH
private static final String[] ROOT_PATH
-
NO_VALIDATION
private static final Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> NO_VALIDATION
-
extensions
private final List<ValidationExtension> extensions
-
regexFactory
private final AtomicReference<Function<String,Predicate<CharSequence>>> regexFactory
-
failFast
private boolean failFast
-
-
Method Detail
-
newRegexFactory
private Predicate<CharSequence> newRegexFactory(String regex)
-
isFailFast
public boolean isFailFast()
-
setFailFast
public JsonSchemaValidatorFactory setFailFast(boolean failFast)
Whentrue, validation stops at the first failing keyword instead of evaluating all keywords and aggregating all errors. The valid/invalid verdict is identical, only the reported errors are reduced to the first failing keyword ones. Since keywords are evaluated with the cheap structural ones first (type,maxItems, ...), enabling it prevents expensive keywords (uniqueItems, nestedproperties, ...) from being evaluated on hostile payloads, which is recommended when validating untrusted inputs.- Parameters:
failFast- whether to stop the validation at the first failing keyword- Returns:
- this
-
createDefaultValidations
public List<ValidationExtension> createDefaultValidations()
-
appendExtensions
public JsonSchemaValidatorFactory appendExtensions(ValidationExtension... extensions)
-
setExtensions
public JsonSchemaValidatorFactory setExtensions(ValidationExtension... extensions)
-
setRegexFactory
public JsonSchemaValidatorFactory setRegexFactory(Function<String,Predicate<CharSequence>> factory)
-
newInstance
public JsonSchemaValidator newInstance(jakarta.json.JsonObject schema)
-
close
public void close()
- Specified by:
closein interfaceAutoCloseable
-
buildValidator
private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> buildValidator(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
buildDirectValidations
private Stream<Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>> buildDirectValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
buildPropertiesValidations
private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> buildPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
buildPatternPropertiesValidations
private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> buildPatternPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
buildAdditionalPropertiesValidations
private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> buildAdditionalPropertiesValidations(String[] path, jakarta.json.JsonObject schema, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
extractValidable
private static jakarta.json.JsonValue extractValidable(jakarta.json.JsonValue root, Function<jakarta.json.JsonValue,jakarta.json.JsonValue> valueProvider)
-
toFunction
private Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>> toFunction(List<Function<jakarta.json.JsonValue,Stream<ValidationResult.ValidationError>>> validations)
-
-