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.6
Show newest version
/*
 * Copyright (c) 2013, Francis Galiegue 
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the Lesser GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * Lesser GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see .
 */

package com.github.fge.jsonschema.library;

import com.github.fge.jsonschema.SchemaVersion;
import com.github.fge.jsonschema.cfg.ValidationConfigurationBuilder;
import com.github.fge.jsonschema.format.FormatAttribute;
import com.github.fge.jsonschema.keyword.digest.Digester;
import com.github.fge.jsonschema.keyword.syntax.SyntaxChecker;
import com.github.fge.jsonschema.keyword.validator.KeywordValidator;
import com.github.fge.jsonschema.util.Frozen;

import java.lang.reflect.Constructor;

/**
 * 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 constructors */ 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