dev.harrel:json-schema Help

Resolver examples

HTTP resolver

import dev.harrel.jsonschema.SchemaResolver; import java.io.IOException; import java.io.UncheckedIOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class HttpResolver implements SchemaResolver { private final HttpClient httpClient = HttpClient.newHttpClient(); @Override public Result resolve(String uriString) { URI uri = URI.create(uriString); if (!uri.getScheme().equals("http") && !uri.getScheme().equals("https")) { return Result.empty(); } try { HttpRequest request = HttpRequest.newBuilder() .uri(uri) .GET() .build(); HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString()); if (response.statusCode() == 200) { return Result.fromString(response.body()); } return Result.empty(); } catch (IOException e) { throw new UncheckedIOException("Failed to read schema via http(s): " + uri, e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); throw new IllegalArgumentException(e); } } }

Classpath resolver

import dev.harrel.jsonschema.SchemaResolver; import java.io.IOException; import java.io.InputStream; import java.io.UncheckedIOException; import java.net.URI; import java.nio.charset.StandardCharsets; public class ClasspathResolver implements SchemaResolver { @Override public Result resolve(String uriString) { URI uri = URI.create(uriString); if (!uri.getScheme().equals("classpath")) { return Result.empty(); } try (InputStream is = ClasspathResolver.class.getResourceAsStream(uri.getSchemeSpecificPart())) { if (is == null) { return Result.empty(); } String schema = new String(is.readAllBytes(), StandardCharsets.UTF_8); return Result.fromString(schema); } catch (IOException e) { throw new UncheckedIOException("Failed to read classpath resource: " + uri, e); } } }
04 August 2025