Class BaseJsonValidator

java.lang.Object
com.networknt.schema.ValidationMessageHandler
com.networknt.schema.BaseJsonValidator
All Implemented Interfaces:
JsonValidator, JsonSchemaWalker
Direct Known Subclasses:
AdditionalPropertiesValidator, AllOfValidator, AnyOfValidator, BaseFormatJsonValidator, ConstValidator, ContainsValidator, ContentEncodingValidator, ContentMediaTypeValidator, DependenciesValidator, DependentRequired, DependentSchemas, DiscriminatorValidator, DynamicRefValidator, EnumValidator, ExclusiveMaximumValidator, ExclusiveMinimumValidator, FalseValidator, IfValidator, ItemsValidator, ItemsValidator202012, JsonSchema, MaximumValidator, MaxItemsValidator, MaxLengthValidator, MaxPropertiesValidator, MinimumValidator, MinItemsValidator, MinLengthValidator, MinMaxContainsValidator, MinPropertiesValidator, MultipleOfValidator, NotAllowedValidator, NotValidator, OneOfValidator, PatternPropertiesValidator, PatternValidator, PrefixItemsValidator, PropertiesValidator, PropertyNamesValidator, ReadOnlyValidator, RecursiveRefValidator, RefValidator, RequiredValidator, TrueValidator, TypeValidator, UnevaluatedItemsValidator, UnevaluatedPropertiesValidator, UnionTypeValidator, UniqueItemsValidator, WriteOnlyValidator

public abstract class BaseJsonValidator extends ValidationMessageHandler implements JsonValidator
  • Field Details

    • suppressSubSchemaRetrieval

      protected final boolean suppressSubSchemaRetrieval
    • schemaNode

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

      protected final ValidationContext validationContext
  • Constructor Details

    • BaseJsonValidator

      public BaseJsonValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, com.fasterxml.jackson.databind.JsonNode schemaNode, JsonSchema parentSchema, ValidatorTypeCode validatorType, ValidationContext validationContext)
    • BaseJsonValidator

      public BaseJsonValidator(SchemaLocation schemaLocation, JsonNodePath evaluationPath, com.fasterxml.jackson.databind.JsonNode schemaNode, JsonSchema parentSchema, ErrorMessageType errorMessageType, Keyword keyword, ValidationContext validationContext, boolean suppressSubSchemaRetrieval)
    • BaseJsonValidator

      protected BaseJsonValidator(boolean suppressSubSchemaRetrieval, com.fasterxml.jackson.databind.JsonNode schemaNode, ValidationContext validationContext, ErrorMessageType errorMessageType, String errorMessageKeyword, MessageSource messageSource, Keyword keyword, JsonSchema parentSchema, SchemaLocation schemaLocation, JsonNodePath evaluationPath, JsonSchema evaluationParentSchema, Map<String,String> errorMessage)
      Constructor to create a copy using fields.
      Parameters:
      suppressSubSchemaRetrieval - to suppress sub schema retrieval
      schemaNode - the schema node
      validationContext - the validation context
      errorMessageType - the error message type
      errorMessageKeyword - the error message keyword
      messageSource - the message source
      keyword - the keyword
      parentSchema - the parent schema
      schemaLocation - the schema location
      evaluationPath - the evaluation path
      evaluationParentSchema - the evaluation parent schema
      errorMessage - the error message
  • Method Details

    • equals

      protected static boolean equals(double n1, double n2)
    • debug

      public static void debug(org.slf4j.Logger logger, ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node, com.fasterxml.jackson.databind.JsonNode rootNode, JsonNodePath instanceLocation)
    • checkDiscriminatorMatch

      protected static void checkDiscriminatorMatch(DiscriminatorContext currentDiscriminatorContext, com.fasterxml.jackson.databind.node.ObjectNode discriminator, String discriminatorPropertyValue, JsonSchema jsonSchema)
      Checks based on the current DiscriminatorContext whether the provided JsonSchema a match against the current discriminator.
      Parameters:
      currentDiscriminatorContext - the currently active DiscriminatorContext
      discriminator - the discriminator to use for the check
      discriminatorPropertyValue - the value of the discriminator/propertyName field
      jsonSchema - the JsonSchema to check
    • registerAndMergeDiscriminator

      protected static void registerAndMergeDiscriminator(DiscriminatorContext currentDiscriminatorContext, com.fasterxml.jackson.databind.node.ObjectNode discriminator, JsonSchema schema, JsonNodePath instanceLocation)
      Rolls up all nested and compatible discriminators to the root discriminator of the type. Detects attempts to redefine the propertyName or mappings.
      Parameters:
      currentDiscriminatorContext - the currently active DiscriminatorContext
      discriminator - the discriminator to use for the check
      schema - the value of the discriminator/propertyName field
      instanceLocation - the logging prefix
    • getSchemaLocation

      public SchemaLocation getSchemaLocation()
      Description copied from interface: JsonValidator
      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 JsonValidator
      Returns:
      the schema location
    • getEvaluationPath

      public JsonNodePath getEvaluationPath()
      Description copied from interface: JsonValidator
      The evaluation path is the set of keys, starting from the schema root, through which evaluation passes to reach the schema object that produced a specific result.
      Specified by:
      getEvaluationPath in interface JsonValidator
      Returns:
      the evaluation path
    • getKeyword

      public String getKeyword()
      Description copied from interface: JsonValidator
      The keyword of the validator.
      Specified by:
      getKeyword in interface JsonValidator
      Returns:
      the keyword
    • getSchemaNode

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

      public JsonSchema getParentSchema()
      Gets the parent schema.

      This is the lexical parent schema.

      Returns:
      the parent schema
    • getEvaluationParentSchema

      public JsonSchema getEvaluationParentSchema()
      Gets the evaluation parent schema.

      This is the dynamic parent schema when following references.

      Returns:
      the evaluation parent schema
      See Also:
    • fetchSubSchemaNode

      protected JsonSchema fetchSubSchemaNode(ValidationContext validationContext)
    • validate

      public Set<ValidationMessage> validate(ExecutionContext executionContext, com.fasterxml.jackson.databind.JsonNode node)
    • getNodeFieldType

      protected String getNodeFieldType()
    • preloadJsonSchemas

      protected void preloadJsonSchemas(Collection<JsonSchema> schemas)
    • atRoot

      protected JsonNodePath atRoot()
      Get the root path.
      Returns:
      The path.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • hasAdjacentKeywordInEvaluationPath

      protected boolean hasAdjacentKeywordInEvaluationPath(String keyword)
      Determines if the keyword exists adjacent in the evaluation path.

      This does not check if the keyword exists in the current meta schema as this can be a cross-draft case where the properties keyword is in a Draft 7 schema and the unevaluatedProperties keyword is in an outer Draft 2020-12 schema.

      The fact that the validator exists in the evaluation path implies that the keyword was valid in whatever meta schema for that schema it was created for.

      Parameters:
      keyword - the keyword to check
      Returns:
      true if found
    • message

      Overrides:
      message in class ValidationMessageHandler
    • collectAnnotations

      protected boolean collectAnnotations(ExecutionContext executionContext)
      Determine if annotations should be reported.
      Parameters:
      executionContext - the execution context
      Returns:
      true if annotations should be reported
    • collectAnnotations

      protected boolean collectAnnotations(ExecutionContext executionContext, String keyword)
      Determine if annotations should be reported.
      Parameters:
      executionContext - the execution context
      keyword - the keyword
      Returns:
      true if annotations should be reported
    • putAnnotation

      protected void putAnnotation(ExecutionContext executionContext, Consumer<JsonNodeAnnotation.Builder> customizer)
      Puts an annotation.
      Parameters:
      executionContext - the execution context
      customizer - to customize the annotation