Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright (c) 2014, Francis Galiegue (
  * 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:
 * - ASL 2.0:
package com.github.fge.jsonschema.examples;
Fourth example: schema loading via URIs, and subschema addressing

link to source code

link to schema

This demonstrates two capabilities of com.github.fge.jsonschema.main.JsonSchemaFactory:

  • the ability to Utils.load schemas via URIs;
  • the ability to address subschemas in a schema.

The implementation provides a resource scheme which allows to Utils.load JSON from files in the classpath. It is strictly equivalent to calling java.lang.Class.getResourceAsStream(java.lang.String).

The URI used is resource:/org/eel/kitchen/jsonschema/examples/fstab-sub.json. Because we want to validate against the fstab subschema, we use com.github.fge.jsonschema.main.JsonSchemaFactory.getJsonSchema(java.lang.String) to Utils.load the actual schema; the URI used as an argument also has a JSON Pointer as a fragment.

Files validated, and the validation outputs, are the same as for Example2.

public final class Example4
    private static final String SCHEMA_URI
        = "resource:/com/github/fge/jsonschema/examples/fstab-sub.json#/fstab";
    public static void main(final String... args)
        throws IOExceptionProcessingException
        final JsonNode good = Utils.loadResource("/fstab-good.json");
        final JsonNode bad = Utils.loadResource("/fstab-bad.json");
        final JsonNode bad2 = Utils.loadResource("/fstab-bad2.json");
        final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
        final JsonSchema schema = factory.getJsonSchema();
        ProcessingReport report;
        report = schema.validate(good);
        report = schema.validate(bad);
        report = schema.validate(bad2);
New to GrepCode? Check out our FAQ X