-
Notifications
You must be signed in to change notification settings - Fork 281
Closed
Description
Hello,
I'm using json-schema to validate incoming JSON data to a Spring application. Some of the schemas have relative references to other schemas served by the same Spring application. So for example the schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"properties": {
"url": {
"$ref": "/interface#/definitions/Operation"
}
}
}
References another schema called "interface". I've used the following code to set the resolution scope:
String schemaUrl = "http://localhost:8091/ServiceDesign/api/v1/validation/";
SchemaLoader loader = SchemaLoader.builder().schemaJson(schemaJson).resolutionScope(schemaUrl).build();
return loader.load().build();
Unfortunately, it looks like only the host name and port are used in the query, as I get the following stacktrace:
java.io.UncheckedIOException: java.io.FileNotFoundException: http://localhost:8091/interface
at org.everit.json.schema.loader.internal.DefaultSchemaClient.get(DefaultSchemaClient.java:35)
at org.everit.json.schema.loader.internal.JSONPointer.executeWith(JSONPointer.java:81)
at org.everit.json.schema.loader.internal.JSONPointer.lambda$forURL$1(JSONPointer.java:133)
at org.everit.json.schema.loader.internal.JSONPointer.query(JSONPointer.java:152)
at org.everit.json.schema.loader.ReferenceLookup.lookup(ReferenceLookup.java:99)
at org.everit.json.schema.loader.SchemaLoader.buildSchemaWithoutExplicitType(SchemaLoader.java:253)
at org.everit.json.schema.loader.SchemaLoader.lambda$load$0(SchemaLoader.java:290)
at java.util.Optional.orElseGet(Optional.java:267)
at org.everit.json.schema.loader.SchemaLoader.load(SchemaLoader.java:288)
at org.everit.json.schema.loader.SchemaLoader.loadChild(SchemaLoader.java:346)
at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$addPropertySchemaDefinition$4(ObjectSchemaLoader.java:79)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer$IdModifyingTypeConsumerImpl.lambda$then$0(TypeBasedMultiplexer.java:78)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.orElse(TypeBasedMultiplexer.java:233)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.requireAny(TypeBasedMultiplexer.java:243)
at org.everit.json.schema.loader.ObjectSchemaLoader.addPropertySchemaDefinition(ObjectSchemaLoader.java:81)
at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$populatePropertySchemas$3(ObjectSchemaLoader.java:70)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:580)
at org.everit.json.schema.loader.ObjectSchemaLoader.populatePropertySchemas(ObjectSchemaLoader.java:69)
at org.everit.json.schema.loader.ObjectSchemaLoader.lambda$load$0(ObjectSchemaLoader.java:34)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer$IdModifyingTypeConsumerImpl.lambda$then$0(TypeBasedMultiplexer.java:78)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.orElse(TypeBasedMultiplexer.java:233)
at org.everit.json.schema.loader.internal.TypeBasedMultiplexer.requireAny(TypeBasedMultiplexer.java:243)
...
Is this by design? I tried to follow the instructions on the GitHub page, but perhaps I'm using the library wrong?
Metadata
Metadata
Assignees
Labels
No labels