All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.fge.jsonschema.library.Library Maven / Gradle / Ivy

There is a newer version: 2.2.14
Show newest version
/*
 * 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); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy