Start line:  
End line:  

Snippet Preview

Snippet HTML Code

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

Fifth example: setting a URI namespace; relative URI resolution

link to source code

This example demonstrates another capability of com.github.fge.jsonschema.main.JsonSchemaFactory: the ability to set a URI namespace. This requires to customize the factory, and therefore go through com.github.fge.jsonschema.main.JsonSchemaFactory.Builder, and more precisely com.github.fge.jsonschema.main.JsonSchemaFactory.Builder.setNamespace(java.lang.String). After this, com.github.fge.jsonschema.main.JsonSchemaFactory.fromURI(java.lang.String) and assimilates will resolve all URIs against this namespace (which is empty by default).

The schemas are split in two:

  • one describing fstab: here;
  • another describing an entry: here.

The first refers to the second one via the relative URI mntent.json. This works precisely because a URI namespace has been set: all URIs are resolved against this namespace.

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

public final class Example5
    extends ExampleBase
    private static final String NAMESPACE
        = "resource:/com/github/fge/jsonschema/examples/split/";
    public static void main(final String... args)
        throws IOExceptionJsonSchemaException
    {
        final JsonNode good = loadResource("/fstab-good.json");
        final JsonNode bad = loadResource("/fstab-bad.json");
        final JsonNode bad2 = loadResource("/fstab-bad2.json");
        final JsonSchemaFactory factory = JsonSchemaFactory.builder()
            .setNamespace().build();
        final JsonSchema schema = factory.fromURI("fstab.json");
        ValidationReport report;
        report = schema.validate(good);
        printReport(report);
        report = schema.validate(bad);
        printReport(report);
        report = schema.validate(bad2);
        printReport(report);
    }
New to GrepCode? Check out our FAQ X