Skip to content

Commit 31e15cc

Browse files
committed
Improve error message
Signed-off-by: Francis Galiegue <[email protected]>
1 parent b148182 commit 31e15cc

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

src/main/java/com/github/fge/jsonschema/processors/validation/InstanceValidator.java

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121

2222
import com.fasterxml.jackson.databind.JsonNode;
2323
import com.fasterxml.jackson.databind.node.ArrayNode;
24-
import com.fasterxml.jackson.databind.node.ObjectNode;
2524
import com.github.fge.jackson.JacksonUtils;
2625
import com.github.fge.jackson.jsonpointer.JsonPointer;
2726
import com.github.fge.jsonschema.core.exceptions.InvalidSchemaException;
@@ -36,12 +35,16 @@
3635
import com.github.fge.jsonschema.processors.data.SchemaContext;
3736
import com.github.fge.jsonschema.processors.data.ValidatorList;
3837
import com.github.fge.msgsimple.bundle.MessageBundle;
38+
import com.github.fge.uritemplate.URITemplate;
39+
import com.github.fge.uritemplate.URITemplateException;
40+
import com.github.fge.uritemplate.vars.VariableMap;
3941
import com.google.common.base.Equivalence;
4042
import com.google.common.collect.Lists;
4143
import com.google.common.collect.Sets;
4244

4345
import javax.annotation.ParametersAreNonnullByDefault;
4446
import javax.annotation.concurrent.NotThreadSafe;
47+
import java.net.URI;
4548
import java.util.Collections;
4649
import java.util.List;
4750
import java.util.Set;
@@ -230,10 +233,16 @@ public String toString()
230233

231234
private static JsonNode toJson(final FullData data)
232235
{
233-
final ObjectNode node = JacksonUtils.nodeFactory().objectNode();
234-
node.put("schema", data.getSchema().asJson());
235-
node.put("instance", data.getInstance().asJson());
236-
return node;
236+
final SchemaTree tree = data.getSchema();
237+
final URI baseUri = tree.getLoadingRef().getLocator();
238+
try {
239+
final URITemplate template = new URITemplate(baseUri + "{+ptr}");
240+
final VariableMap vars = VariableMap.newBuilder().addScalarValue(
241+
"ptr", tree.getPointer()).freeze();
242+
return JacksonUtils.nodeFactory().textNode(template.toString(vars));
243+
} catch (URITemplateException e) {
244+
throw new IllegalStateException("wtf??", e);
245+
}
237246
}
238247

239248
@ParametersAreNonnullByDefault

src/main/resources/com/github/fge/jsonschema/validator/validation.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,5 @@ err.format.UUID.invalid = input string "%s" is not a valid UUID
7878
#
7979
# Other messages
8080
#
81-
err.common.validationLoop = validation loop detected
81+
err.common.validationLoop = validation loop: same schema visited more than \
82+
once for the same instance

0 commit comments

Comments
 (0)