Class JsonSchemaFactory

java.lang.Object
com.networknt.schema.JsonSchemaFactory

public class JsonSchemaFactory extends Object
Factory for building JsonSchema instances. The factory should be typically be created using getInstance(VersionFlag, Consumer) and should be cached for performance.

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

  • Method Details

    • getSchemaLoader

      public SchemaLoader getSchemaLoader()
    • builder

      public static JsonSchemaFactory.Builder builder()
      Builder without keywords or formats. Typically builder(JsonSchemaFactory) is what is required.
      Returns:
      a builder instance without any keywords or formats - usually not what one needs.
    • getInstance

      public static JsonSchemaFactory getInstance(SpecVersion.VersionFlag versionFlag)
      Creates a factory with a default schema dialect. The schema dialect will only be used if the input does not specify a $schema.
      Parameters:
      versionFlag - the default dialect
      Returns:
      the factory
    • getInstance

      public static JsonSchemaFactory getInstance(SpecVersion.VersionFlag versionFlag, Consumer<JsonSchemaFactory.Builder> customizer)
      Creates a factory with a default schema dialect. The schema dialect will only be used if the input does not specify a $schema.
      Parameters:
      versionFlag - the default dialect
      customizer - to customize the factory
      Returns:
      the factory
    • checkVersion

      public static JsonSchemaVersion checkVersion(SpecVersion.VersionFlag versionFlag)
      Gets the json schema version to get the meta schema.

      This throws an IllegalArgumentException for an unsupported value.

      Parameters:
      versionFlag - the schema dialect
      Returns:
      the version
    • builder

      public static JsonSchemaFactory.Builder builder(JsonSchemaFactory blueprint)
      Builder from an existing JsonSchemaFactory.

      JsonSchemaFactory.builder(JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V201909));

      Parameters:
      blueprint - the existing factory
      Returns:
      the builder
    • newJsonSchema

      protected JsonSchema newJsonSchema(SchemaLocation schemaUri, com.fasterxml.jackson.databind.JsonNode schemaNode, SchemaValidatorsConfig config)
      Creates a json schema from initial input.
      Parameters:
      schemaUri - the schema location
      schemaNode - the schema data node
      config - the config to use
      Returns:
      the schema
    • create

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

      protected SchemaLocation getSchemaLocation(SchemaLocation schemaLocation)
      Gets the base IRI from the schema retrieval IRI if present otherwise return one with a null base IRI.

      Note that the resolving of the $id or id in the schema node will take place in the JsonSchema constructor.

      Parameters:
      schemaLocation - the schema retrieval uri
      Returns:
      the schema location
    • createValidationContext

      protected ValidationContext createValidationContext(com.fasterxml.jackson.databind.JsonNode schemaNode, SchemaValidatorsConfig config)
    • getMetaSchema

      public JsonMetaSchema getMetaSchema(String iri, SchemaValidatorsConfig config)
      Gets the meta-schema that is available to the factory.
      Parameters:
      iri - the IRI of the meta-schema
      config - the schema validators config
      Returns:
      the meta-schema
    • loadMetaSchema

      protected JsonMetaSchema loadMetaSchema(String iri, SchemaValidatorsConfig config)
      Loads the meta-schema from the configured meta-schema factory.
      Parameters:
      iri - the IRI of the meta-schema
      config - the schema validators config
      Returns:
      the meta-schema
    • getSchema

      public JsonSchema getSchema(String schema, SchemaValidatorsConfig config)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schema - the schema data as a string
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(String schema, InputFormat inputFormat, SchemaValidatorsConfig config)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schema - the schema data as a string
      inputFormat - input format
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(String schema)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schema - the schema data as a string
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(String schema, InputFormat inputFormat)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schema - the schema data as a string
      inputFormat - input format
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(InputStream schemaStream, SchemaValidatorsConfig config)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schemaStream - the input stream with the schema data
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(InputStream schemaStream, InputFormat inputFormat, SchemaValidatorsConfig config)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schemaStream - the input stream with the schema data
      inputFormat - input format
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(InputStream schemaStream)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Parameters:
      schemaStream - the input stream with the schema data
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(SchemaLocation schemaUri, SchemaValidatorsConfig config)
      Gets the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      config - the config
      Returns:
      the schema
    • loadSchema

      protected JsonSchema loadSchema(SchemaLocation schemaUri, SchemaValidatorsConfig config)
      Loads the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      config - the config
      Returns:
      the schema
    • createSchemaValidatorsConfig

      protected SchemaValidatorsConfig createSchemaValidatorsConfig()
      Creates a schema validators config.
      Returns:
      the schema validators config
    • getMappedSchema

      protected JsonSchema getMappedSchema(SchemaLocation schemaUri, SchemaValidatorsConfig config)
    • getSchema

      public JsonSchema getSchema(URI schemaUri)
      Gets the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(URI schemaUri, com.fasterxml.jackson.databind.JsonNode jsonNode, SchemaValidatorsConfig config)
      Gets the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      jsonNode - the node
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(URI schemaUri, com.fasterxml.jackson.databind.JsonNode jsonNode)
      Gets the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      jsonNode - the node
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(SchemaLocation schemaUri)
      Gets the schema.
      Parameters:
      schemaUri - the absolute IRI of the schema which can map to the retrieval IRI.
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(SchemaLocation schemaUri, com.fasterxml.jackson.databind.JsonNode jsonNode, SchemaValidatorsConfig config)
      Gets the schema.
      Parameters:
      schemaUri - the base absolute IRI
      jsonNode - the node
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(SchemaLocation schemaUri, com.fasterxml.jackson.databind.JsonNode jsonNode)
      Gets the schema.
      Parameters:
      schemaUri - the base absolute IRI
      jsonNode - the node
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(com.fasterxml.jackson.databind.JsonNode jsonNode, SchemaValidatorsConfig config)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Prefer getSchema(SchemaLocation, JsonNode, SchemaValidatorsConfig) instead to ensure the base IRI if no id is present.

      Parameters:
      jsonNode - the node
      config - the config
      Returns:
      the schema
    • getSchema

      public JsonSchema getSchema(com.fasterxml.jackson.databind.JsonNode jsonNode)
      Gets the schema.

      Using this is not recommended as there is potentially no base IRI for resolving references to the absolute IRI.

      Prefer getSchema(SchemaLocation, JsonNode) instead to ensure the base IRI if no id is present.

      Parameters:
      jsonNode - the node
      Returns:
      the schema
    • normalizeMetaSchemaUri

      protected static String normalizeMetaSchemaUri(String id)
      Normalizes the standard JSON schema dialects.

      This should not normalize any other unrecognized dialects.

      Parameters:
      id - the $schema identifier
      Returns:
      the normalized uri