Class Schema

java.lang.Object
com.networknt.schema.Schema
All Implemented Interfaces:
Validator, Walker

public class Schema extends Object implements Validator
Used for creating a schema with validators for validating inputs. This is created using SchemaRegistry#withDefaultDialect(Version, Consumer) and should be cached for performance.

This is the core of json constraint implementation. It parses json constraint file and generates KeywordValidators. The class is thread safe, once it is constructed, it can be used to validate multiple json data concurrently.

Schema instances are thread-safe provided its configuration is not modified.

  • Field Details

    • schemaNode

      protected final com.fasterxml.jackson.databind.JsonNode schemaNode
    • parentSchema

      protected final Schema parentSchema
    • schemaLocation

      protected final SchemaLocation schemaLocation
    • schemaContext

      protected final SchemaContext schemaContext
    • suppressSubSchemaRetrieval

      protected final boolean suppressSubSchemaRetrieval
  • Constructor Details

    • Schema

      protected Schema(List<KeywordValidator> validators, boolean validatorsLoaded, boolean recursiveAnchor, TypeValidator typeValidator, String id, boolean suppressSubSchemaRetrieval, com.fasterxml.jackson.databind.JsonNode schemaNode, SchemaContext schemaContext, Schema parentSchema, SchemaLocation schemaLocation, Map<String,String> errorMessage)
      Constructor to create a copy using fields.
      Parameters:
      validators - the validators
      validatorsLoaded - whether the validators are preloaded
      recursiveAnchor - whether this is has a recursive anchor
      id - the id
      suppressSubSchemaRetrieval - to suppress sub schema retrieval
      schemaNode - the schema node
      schemaContext - the schema context
      parentSchema - the parent schema
      schemaLocation - the schema location
      errorMessage - the error message
  • Method Details

    • getSchemaNode

      public com.fasterxml.jackson.databind.JsonNode getSchemaNode()
    • getSchemaLocation

      public SchemaLocation getSchemaLocation()
      Description copied from interface: Validator
      The schema location is the canonical URI of the schema object plus a JSON Pointer fragment indicating the subschema that produced a result. In contrast with the evaluation path, the schema location MUST NOT include by-reference applicators such as $ref or $dynamicRef.
      Specified by:
      getSchemaLocation in interface Validator
      Returns:
      the schema location
    • getParentSchema

      public Schema getParentSchema()
    • isSuppressSubSchemaRetrieval

      public boolean isSuppressSubSchemaRetrieval()
    • fetchSubSchemaNode

      protected Schema fetchSubSchemaNode(SchemaContext schemaContext)
    • validate

      public void validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node)
    • atRoot

      protected NodePath atRoot()
      Get the root path.
      Returns:
      The path.
    • getSchemaContext

      public SchemaContext getSchemaContext()
    • hasKeyword

      public boolean hasKeyword(String keyword)
    • getRefSchemaNode

      public com.fasterxml.jackson.databind.JsonNode getRefSchemaNode(String ref)
      Find the schema node for $ref attribute.
      Parameters:
      ref - String
      Returns:
      JsonNode
    • getRefSchema

      public Schema getRefSchema(NodePath fragment)
    • getSubSchema

      public Schema getSubSchema(NodePath fragment)
      Gets the sub schema given the json pointer fragment.
      Parameters:
      fragment - the json pointer fragment
      Returns:
      the schema
    • getNode

      protected com.fasterxml.jackson.databind.JsonNode getNode(Object propertyOrIndex)
    • getNode

      protected com.fasterxml.jackson.databind.JsonNode getNode(com.fasterxml.jackson.databind.JsonNode node, Object propertyOrIndex)
    • findLexicalRoot

      public Schema findLexicalRoot()
    • findSchemaResourceRoot

      public Schema findSchemaResourceRoot()
      Finds the root of the schema resource.

      This is either the schema document root or the subschema resource root.

      Returns:
      the root of the schema
    • isSchemaResourceRoot

      public boolean isSchemaResourceRoot()
      Determines if this schema resource is a schema resource root.

      This is either the schema document root or the subschema resource root.

      Returns:
      if this schema is a schema resource root
    • getId

      public String getId()
    • findAncestor

      public Schema findAncestor()
    • validate

      public void validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode jsonNode, com.fasterxml.jackson.databind.JsonNode rootNode, NodePath instanceLocation)
      START OF VALIDATE METHODS
      Specified by:
      validate in interface Validator
      Parameters:
      executionContext - the execution context
      jsonNode - the instance node being processed
      rootNode - the instance document that the instance node belongs to
      instanceLocation - the location of the instance node being processed
    • validate

      public List<Error> validate(com.fasterxml.jackson.databind.JsonNode rootNode)
      Validate the given root JsonNode, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      rootNode - the root node
      Returns:
      A list of Error if there is any validation error, or an empty list if there is no error.
    • validate

      public List<Error> validate(com.fasterxml.jackson.databind.JsonNode rootNode, ExecutionContextCustomizer executionCustomizer)
      Validate the given root JsonNode, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      rootNode - the root node
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public List<Error> validate(com.fasterxml.jackson.databind.JsonNode rootNode, Consumer<ExecutionContext> executionCustomizer)
      Validate the given root JsonNode, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      rootNode - the root node
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public <T> T validate(com.fasterxml.jackson.databind.JsonNode rootNode, OutputFormat<T> format)
      Validates the given root JsonNode, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      rootNode - the root node
      format - the formatter
      Returns:
      the result
    • validate

      public <T> T validate(com.fasterxml.jackson.databind.JsonNode rootNode, OutputFormat<T> format, ExecutionContextCustomizer executionCustomizer)
      Validates the given root JsonNode, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      rootNode - the root node
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(com.fasterxml.jackson.databind.JsonNode rootNode, OutputFormat<T> format, Consumer<ExecutionContext> executionCustomizer)
      Validates the given root JsonNode, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      rootNode - the root node
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public List<Error> validate(String input, InputFormat inputFormat)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      Returns:
      A list of Error if there is any validation error, or an empty list if there is no error.
    • validate

      public List<Error> validate(String input, InputFormat inputFormat, ExecutionContextCustomizer executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public List<Error> validate(String input, InputFormat inputFormat, Consumer<ExecutionContext> executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public <T> T validate(String input, InputFormat inputFormat, OutputFormat<T> format)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      Returns:
      the result
    • validate

      public <T> T validate(String input, InputFormat inputFormat, OutputFormat<T> format, ExecutionContextCustomizer executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(String input, InputFormat inputFormat, OutputFormat<T> format, Consumer<ExecutionContext> executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public List<Error> validate(AbsoluteIri input, InputFormat inputFormat)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      Returns:
      A list of Error if there is any validation error, or an empty list if there is no error.
    • validate

      public List<Error> validate(AbsoluteIri input, InputFormat inputFormat, ExecutionContextCustomizer executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public List<Error> validate(AbsoluteIri input, InputFormat inputFormat, Consumer<ExecutionContext> executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public <T> T validate(AbsoluteIri input, InputFormat inputFormat, OutputFormat<T> format)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      Returns:
      the result
    • validate

      public <T> T validate(AbsoluteIri input, InputFormat inputFormat, OutputFormat<T> format, ExecutionContextCustomizer executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(AbsoluteIri input, InputFormat inputFormat, OutputFormat<T> format, Consumer<ExecutionContext> executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public List<Error> validate(ExecutionContext executionContext, String input, InputFormat inputFormat)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      Returns:
      A list of Error if there is any validation error, or an empty list if there is no error.
    • validate

      public List<Error> validate(ExecutionContext executionContext, String input, InputFormat inputFormat, ExecutionContextCustomizer executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public List<Error> validate(ExecutionContext executionContext, String input, InputFormat inputFormat, Consumer<ExecutionContext> executionCustomizer)
      Validate the given input string using the input format, starting at the root of the data path.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      executionCustomizer - the execution customizer
      Returns:
      the assertions
    • validate

      public <T> T validate(ExecutionContext executionContext, String input, InputFormat inputFormat, OutputFormat<T> format)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      Returns:
      the result
    • validate

      public <T> T validate(ExecutionContext executionContext, String input, InputFormat inputFormat, OutputFormat<T> format, ExecutionContextCustomizer executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(ExecutionContext executionContext, String input, InputFormat inputFormat, OutputFormat<T> format, Consumer<ExecutionContext> executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the inputFormat
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> format)
      Validates to a format.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      node - the node
      format - the format
      Returns:
      the result
    • validate

      public <T> T validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> format, Consumer<ExecutionContext> executionCustomizer)
      Validates the given input string using the input format, starting at the root of the data path. The output will be formatted using the formatter specified.

      Note that since Draft 2019-09 by default format generates only annotations and not assertions.

      Use ExecutionConfig.BuilderSupport.formatAssertionsEnabled(Boolean) to override the default.

      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      node - the node
      format - the formatter
      executionCustomizer - the execution customizer
      Returns:
      the result
    • validate

      public <T> T validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> format, ExecutionContextCustomizer executionCustomizer)
      Validates to a format.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      node - the node
      format - the format
      executionCustomizer - the customizer
      Returns:
      the result
    • walk

      public Result walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the JSON node.
      Parameters:
      executionContext - the execution context
      node - the input
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public <T> T walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> outputFormat, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the JSON node.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      node - the input
      outputFormat - the output format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, boolean validate, Consumer<ExecutionContext> executionCustomizer)
      Walk the JSON node.
      Parameters:
      executionContext - the execution context
      node - the input
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public <T> T walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> outputFormat, boolean validate, Consumer<ExecutionContext> executionCustomizer)
      Walk the JSON node.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      node - the input
      outputFormat - the output format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, boolean validate)
      Walk the JSON node.
      Parameters:
      executionContext - the execution context
      node - the input
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(ExecutionContext executionContext, String input, InputFormat inputFormat, boolean validate)
      Walk the input.
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public <T> T walk(ExecutionContext executionContext, String input, InputFormat inputFormat, OutputFormat<T> outputFormat, boolean validate)
      Walk the input.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the input format
      outputFormat - the output format
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(ExecutionContext executionContext, String input, InputFormat inputFormat, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the input.
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public <T> T walk(ExecutionContext executionContext, String input, InputFormat inputFormat, OutputFormat<T> outputFormat, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the input.
      Type Parameters:
      T - the result type
      Parameters:
      executionContext - the execution context
      input - the input
      inputFormat - the input format
      outputFormat - the output format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(com.fasterxml.jackson.databind.JsonNode node, boolean validate)
      Walk the JSON node.
      Parameters:
      node - the input
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(com.fasterxml.jackson.databind.JsonNode node, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the JSON node.
      Parameters:
      node - the input
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(com.fasterxml.jackson.databind.JsonNode node, boolean validate, Consumer<ExecutionContext> executionCustomizer)
      Walk the JSON node.
      Parameters:
      node - the input
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public <T> T walk(com.fasterxml.jackson.databind.JsonNode node, OutputFormat<T> outputFormat, boolean validate)
      Walk the JSON node.
      Type Parameters:
      T - the result type
      Parameters:
      node - the input
      outputFormat - the output format
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(String input, InputFormat inputFormat, boolean validate)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(String input, InputFormat inputFormat, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(String input, InputFormat inputFormat, boolean validate, Consumer<ExecutionContext> executionCustomizer)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(AbsoluteIri input, InputFormat inputFormat, boolean validate)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public Result walk(AbsoluteIri input, InputFormat inputFormat, boolean validate, ExecutionContextCustomizer executionCustomizer)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walk

      public Result walk(AbsoluteIri input, InputFormat inputFormat, boolean validate, Consumer<ExecutionContext> executionCustomizer)
      Walk the input.
      Parameters:
      input - the input
      inputFormat - the input format
      validate - true to validate the input against the schema
      executionCustomizer - the customizer
      Returns:
      the validation result
    • walkAtNode

      public Result walkAtNode(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, com.fasterxml.jackson.databind.JsonNode rootNode, NodePath instanceLocation, boolean validate)
      Walk at the node.
      Parameters:
      executionContext - the execution content
      node - the current node
      rootNode - the root node
      instanceLocation - the instance location
      validate - true to validate the input against the schema
      Returns:
      the validation result
    • walk

      public void walk(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, com.fasterxml.jackson.databind.JsonNode rootNode, NodePath instanceLocation, boolean shouldValidateSchema)
      Description copied from interface: Validator
      This is default implementation of walk method. Its job is to call the validate method if shouldValidateSchema is enabled.
      Specified by:
      walk in interface Validator
      Specified by:
      walk in interface Walker
      Parameters:
      executionContext - the execution context
      node - the instance node being processed
      rootNode - the instance document that the instance node belongs to
      instanceLocation - the location of the instance node being processed
      shouldValidateSchema - true to validate the schema while walking
    • toString

      public String toString()
      END OF WALK METHODS
      Overrides:
      toString in class Object
    • getValidators

      public List<KeywordValidator> getValidators()
    • initializeValidators

      public void initializeValidators()
      Initializes the validators' Schema instances. For avoiding issues with concurrency, in 1.0.49 the Schema instances affiliated with validators were modified to no more preload the schema and lazy loading is used instead.

      This comes with the issue that this way you cannot rely on validating important schema features, in particular $ref resolution at instantiation from SchemaRegistry.

      By calling initializeValidators you can enforce preloading of the Schema instances of the validators.

    • isRecursiveAnchor

      public boolean isRecursiveAnchor()
    • createExecutionContext

      public ExecutionContext createExecutionContext()
      Creates an execution context.
      Returns:
      the execution context