xpertss.json.schema.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 Show documentation
Show all versions of json-schema Show documentation
A Java implementation of the JSON Schema specification.
The newest version!
package xpertss.json.schema.library;
import com.github.fge.Frozen;
import xpertss.json.schema.SchemaVersion;
import xpertss.json.schema.cfg.ValidationConfigurationBuilder;
import xpertss.json.schema.core.keyword.syntax.checkers.SyntaxChecker;
import xpertss.json.schema.core.util.Dictionary;
import xpertss.json.schema.format.FormatAttribute;
import xpertss.json.schema.keyword.digest.Digester;
import xpertss.json.schema.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(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(Dictionary syntaxCheckers,
Dictionary digesters,
Dictionary validators,
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);
}
}