Class JsonSchema

  • All Implemented Interfaces:
    JsonValidator, JsonSchemaWalker

    public class JsonSchema
    extends BaseJsonValidator
    This is the core of json constraint implementation. It parses json constraint file and generates JsonValidators. The class is thread safe, once it is constructed, it can be used to validate multiple json data concurrently.
    • Constructor Detail

      • JsonSchema

        @Deprecated
        public JsonSchema​(ValidationContext validationContext,
                          URI baseUri,
                          com.fasterxml.jackson.databind.JsonNode schemaNode)
        Deprecated.
        Use JsonSchemaFactory#create(ValidationContext, String, JsonNode, JsonSchema)
        Parameters:
        validationContext - validation context
        baseUri - base URL
        schemaNode - schema node
      • JsonSchema

        @Deprecated
        public JsonSchema​(ValidationContext validationContext,
                          String schemaPath,
                          URI currentUri,
                          com.fasterxml.jackson.databind.JsonNode schemaNode,
                          JsonSchema parent)
        Deprecated.
        Use JsonSchemaFactory#create(ValidationContext, String, JsonNode, JsonSchema)
        Parameters:
        validationContext - validation context
        schemaPath - schema path
        currentUri - current URI
        schemaNode - schema node
        parent - parent schema
      • JsonSchema

        @Deprecated
        public JsonSchema​(ValidationContext validationContext,
                          URI baseUri,
                          com.fasterxml.jackson.databind.JsonNode schemaNode,
                          boolean suppressSubSchemaRetrieval)
        Deprecated.
        Use JsonSchemaFactory#create(ValidationContext, String, JsonNode, JsonSchema)
        Parameters:
        validationContext - validation context
        baseUri - base URI
        schemaNode - schema node
        suppressSubSchemaRetrieval - suppress sub schema retrieval
    • Method Detail

      • createChildSchema

        public JsonSchema createChildSchema​(String schemaPath,
                                            com.fasterxml.jackson.databind.JsonNode schemaNode)
      • getCurrentUri

        public URI getCurrentUri()
      • getRefSchemaNode

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

        public Set<ValidationMessage> validate​(com.fasterxml.jackson.databind.JsonNode node)
        START OF VALIDATE METHODS
        Specified by:
        validate in interface JsonValidator
        Overrides:
        validate in class BaseJsonValidator
        Parameters:
        node - JsonNode
        Returns:
        A list of ValidationMessage if there is any validation error, or an empty list if there is no error.
      • validate

        public Set<ValidationMessage> validate​(com.fasterxml.jackson.databind.JsonNode jsonNode,
                                               com.fasterxml.jackson.databind.JsonNode rootNode,
                                               String at)
        Description copied from interface: JsonValidator
        Validate the given JsonNode, the given node is the child node of the root node at given data path.
        Parameters:
        jsonNode - JsonNode
        rootNode - JsonNode
        at - String
        Returns:
        A list of ValidationMessage if there is any validation error, or an empty list if there is no error.
      • validateAndCollect

        public ValidationResult validateAndCollect​(com.fasterxml.jackson.databind.JsonNode node)
      • walk

        public ValidationResult walk​(com.fasterxml.jackson.databind.JsonNode node,
                                     boolean shouldValidateSchema)
        Walk the JSON node
        Parameters:
        node - JsonNode
        shouldValidateSchema - indicator on validation
        Returns:
        result of ValidationResult
      • walkAtNode

        public ValidationResult walkAtNode​(com.fasterxml.jackson.databind.JsonNode node,
                                           com.fasterxml.jackson.databind.JsonNode rootNode,
                                           String at,
                                           boolean shouldValidateSchema)
      • walk

        public Set<ValidationMessage> walk​(com.fasterxml.jackson.databind.JsonNode node,
                                           com.fasterxml.jackson.databind.JsonNode rootNode,
                                           String at,
                                           boolean shouldValidateSchema)
        Description copied from class: BaseJsonValidator
        This is default implementation of walk method. Its job is to call the validate method if shouldValidateSchema is enabled.
        Specified by:
        walk in interface JsonSchemaWalker
        Specified by:
        walk in interface JsonValidator
        Overrides:
        walk in class BaseJsonValidator
        Parameters:
        node - JsonNode
        rootNode - JsonNode
        at - String
        shouldValidateSchema - boolean
        Returns:
        a set of validation messages if shouldValidateSchema is true.
      • hasRequiredValidator

        public boolean hasRequiredValidator()
      • getRequiredValidator

        public JsonValidator getRequiredValidator()
      • hasTypeValidator

        public boolean hasTypeValidator()
      • initializeValidators

        public void initializeValidators()
        Initializes the validators' JsonSchema instances. For avoiding issues with concurrency, in 1.0.49 the JsonSchema 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 JsonSchemaFactory.

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