com.github.fge.jsonschema.library.Library Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of json-schema-validator Show documentation
Show all versions of json-schema-validator Show documentation
A Java implementation of the JSON Schema specification
/*
* Copyright (c) 2014, Francis Galiegue ([email protected])
*
* This software is dual-licensed under:
*
* - the Lesser General Public License (LGPL) version 3.0 or, at your option, any
* later version;
* - the Apache Software License (ASL) version 2.0.
*
* The text of this file and of both licenses is available at the root of this
* project or, if you have the jar distribution, in directory META-INF/, under
* the names LGPL-3.0.txt and ASL-2.0.txt respectively.
*
* Direct link to the sources:
*
* - LGPL 3.0: https://www.gnu.org/licenses/lgpl-3.0.txt
* - ASL 2.0: http://www.apache.org/licenses/LICENSE-2.0.txt
*/
package com.github.fge.jsonschema.library;
import com.github.fge.Frozen;
import com.github.fge.jsonschema.SchemaVersion;
import com.github.fge.jsonschema.cfg.ValidationConfigurationBuilder;
import com.github.fge.jsonschema.core.keyword.syntax.checkers.SyntaxChecker;
import com.github.fge.jsonschema.core.util.Dictionary;
import com.github.fge.jsonschema.format.FormatAttribute;
import com.github.fge.jsonschema.keyword.digest.Digester;
import com.github.fge.jsonschema.keyword.validator.KeywordValidatorFactory;
/**
* A schema keyword library
*
* A library contains all keywords defined for a schema, but also all format
* attributes.
*
* @see ValidationConfigurationBuilder#addLibrary(String, Library)
* @see ValidationConfigurationBuilder#setDefaultLibrary(String, Library)
* @see ValidationConfigurationBuilder#setDefaultVersion(SchemaVersion)
*/
public final class Library
implements Frozen
{
/**
* Dictionary of syntax checkers
*/
final Dictionary syntaxCheckers;
/**
* Dictionary of digesters
*/
final Dictionary digesters;
/**
* Dictionary of keyword validator factories
*/
final Dictionary validators;
/**
* Dictionary of format attributes
*/
final Dictionary formatAttributes;
/**
* Create a new, empty library builder
*
* @return a {@link LibraryBuilder}
*/
public static LibraryBuilder newBuilder()
{
return new LibraryBuilder();
}
/**
* Constructor from a library builder
*
* @param builder the builder
* @see LibraryBuilder#freeze()
*/
Library(final LibraryBuilder builder)
{
syntaxCheckers = builder.syntaxCheckers.freeze();
digesters = builder.digesters.freeze();
validators = builder.validators.freeze();
formatAttributes = builder.formatAttributes.freeze();
}
/**
* Internal constructor, do not use!
*
* @param syntaxCheckers map of syntax checkers
* @param digesters map of digesters
* @param validators map of keyword validator constructors
* @param formatAttributes map of format attributes
*/
Library(final Dictionary syntaxCheckers,
final Dictionary digesters,
final Dictionary validators,
final Dictionary formatAttributes)
{
this.syntaxCheckers = syntaxCheckers;
this.digesters = digesters;
this.validators = validators;
this.formatAttributes = formatAttributes;
}
/**
* Get the dictionary of syntax checkers
*
* @return a dictionary
*/
public Dictionary getSyntaxCheckers()
{
return syntaxCheckers;
}
/**
* Get the dictionary of digesters
*
* @return a dictionary
*/
public Dictionary getDigesters()
{
return digesters;
}
/**
* Get the dictionary of keyword validator constructors
*
* @return a dictionary
*/
public Dictionary getValidators()
{
return validators;
}
/**
* Get the dictionary of format attributes
*
* @return a dictionary
*/
public Dictionary getFormatAttributes()
{
return formatAttributes;
}
/**
* Create a mutable version of this library
*
* @return a {@link LibraryBuilder}
* @see LibraryBuilder#LibraryBuilder(Library)
*/
@Override
public LibraryBuilder thaw()
{
return new LibraryBuilder(this);
}
}