Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright (c) 2013, Francis Galiegue <fgaliegue@gmail.com>
   *
   * 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 <http://www.gnu.org/licenses/>.
  */
 
 package com.github.fge.jsonschema.processing.ref;
 
 
 import java.net.URI;
A JSON Schema registry

All schema registering and downloading is done through this class.

Note that if the id of a schema is not absolute (that is, the URI itself is absolute and it has no fragment part, or an empty fragment), then the whole schema will be considered anonymous.

This class is thread safe.

 
 public final class SchemaLoader
 {
    
The default namespace
 
     private final JsonRef namespace;

    
Schema cache
 
     private final LoadingCache<URIJsonNodecache;

    
Our dereferencing mode
 
     private final Dereferencing dereferencing;

    
Constructor

Parameters:
manager the URI manager to use
namespace this registry's namespace
dereferencing our Dereferencing mode
 
     public SchemaLoader(final URIManager managerfinal URI namespace,
         final Dereferencing dereferencing)
     {
         this. = dereferencing;
         this. = JsonRef.fromURI(namespace);
          = CacheBuilder.newBuilder().maximumSize(100L)
             .build(new CacheLoader<URIJsonNode>()
             {
                 @Override
                 public JsonNode load(final URI key)
                     throws ProcessingException
                 {
                     return manager.getContent(key);
                 }
             });
     }
 
     public JsonSchemaTree load(final JsonNode schema)
     {
         Preconditions.checkNotNull(schema"cannot register null schema");
         return .newTree(schema);
     }

    
Get a schema tree from the given URI

Note that if the URI is relative, it will be resolved against this registry's namespace, if any.

Parameters:
uri the URI
Returns:
a schema tree
    public JsonSchemaTree get(final URI uri)
        throws ProcessingException
    {
        final JsonRef ref = .resolve(JsonRef.fromURI(uri));
        final ProcessingMessage msg = new ProcessingMessage()
            .put("uri"ref);
        if (!ref.isAbsolute())
            throw new ProcessingException(msg.msg("URI is not absolute"));
        final URI realURI = ref.toURI();
        try {
            final JsonNode node = .get(realURI);
            return .newTree(refnode);
        } catch (ExecutionException e) {
            throw (ProcessingExceptione.getCause();
        }
    }

    
Load a schema bundle into this registry

As a schema bundle is guaranteed to have well-formed locators, schemas from a bundle can be directly injected into the cache.

    public void addBundle(final SchemaBundle bundle)
    {
        .putAll(bundle.getSchemas());
    }
    @Override
    public String toString()
    {
        return .stats().toString();
    }
New to GrepCode? Check out our FAQ X