Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  * Copyright (c) 2012, 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
 * 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.examples;
import static com.github.fge.jsonschema.main.JsonSchemaFactory.*;

Tenth example: registering schemas

link to source code

In this example, we register a custom schema into our factory with a given URI, and initiate the schema instance using that URI.

The only necessary condition for the URI is for it to be an absolute JSON reference (see com.github.fge.jsonschema.ref.JsonRef.isAbsolute()), and you can register as many schemas as you want. Here, we register both schemas from Example5. You will notice that the scheme for these URIs is xxx: it does not matter in the slightest that it is not a supported scheme by default, the schema is registered all the same.

This also shows that reference resolution still works in such a case, since the mntent schema is referred to via a relative URI from the fstab schema.

public final class Example10
    extends ExampleBase
    private static final String URI_BASE = "xxx://";
    public static void main(final String... args)
        throws IOExceptionJsonSchemaException
        final JsonSchemaFactory.Builder builder = JsonSchemaFactory.builder();
        JsonNode node;
        String uri;
        node = loadResource("/split/fstab.json");
        uri =  + "fstab.json";
        node = loadResource("/split/mntent.json");
        uri =  + "mntent.json";
        final JsonSchemaFactory factory =;
        final JsonSchema schema = factory.fromURI( + "fstab.json");
        final JsonNode good = loadResource("/fstab-good.json");
        final JsonNode bad = loadResource("/fstab-bad.json");
        final JsonNode bad2 = loadResource("/fstab-bad2.json");
        ValidationReport report;
        report = schema.validate(good);
        report = schema.validate(bad);
        report = schema.validate(bad2);
New to GrepCode? Check out our FAQ X