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;
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.JsonSchemaFactoryBuilder again.

In order to set a URI namespace, we must grab a com.github.fge.jsonschema.core.load.configuration.LoadingConfigurationBuilder, set the namespace, freeze it, and pass it to the factory builder and then freeze the factory.

The net effect is that all schema loading done by com.github.fge.jsonschema.core.load.SchemaLoader will now resolve against this namespace, and this includes arguments to com.github.fge.jsonschema.main.JsonSchemaFactory.getJsonSchema(java.lang.String).

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
     private static final String NAMESPACE
         = "resource:/com/github/fge/jsonschema/examples/split/";
     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 URITranslatorConfiguration translatorCfg
             = URITranslatorConfiguration.newBuilder()
         final LoadingConfiguration cfg = LoadingConfiguration.newBuilder()
         final JsonSchemaFactory factory = JsonSchemaFactory.newBuilder()
         final JsonSchema schema = factory.getJsonSchema("fstab.json");
         ProcessingReport report;
         report = schema.validate(good);
         report = schema.validate(bad);
         report = schema.validate(bad2);
New to GrepCode? Check out our FAQ X