File tree Expand file tree Collapse file tree 2 files changed +88
-0
lines changed
java/com/github/fge/jsonschema/processors/validation Expand file tree Collapse file tree 2 files changed +88
-0
lines changed Original file line number Diff line number Diff line change @@ -157,6 +157,28 @@ public void circularReferencingDuringValidationIsDetected()
157
157
assertTrue (true );
158
158
}
159
159
160
+ /*
161
+ * Issue #112: what was called a "validation loop" in issue #102 was in fact
162
+ * not really one; it is possible to enter the same subschema using
163
+ * different paths.
164
+ *
165
+ * The real thing which must be checked for is a full schema pointer loop.
166
+ */
167
+ @ Test
168
+ public void enteringSamePointerWithDifferentPathsDoesNotThrowException ()
169
+ throws IOException , ProcessingException
170
+ {
171
+ final JsonNode node = JsonLoader .fromResource ("/other/issue112.json" );
172
+ final JsonNode schemaNode = node .get ("schema" );
173
+ final JsonSchemaFactory factory = JsonSchemaFactory .byDefault ();
174
+ final JsonValidator validator = factory .getValidator ();
175
+
176
+ final JsonNode instance = node .get ("instance" );
177
+
178
+ assertTrue (validator .validate (schemaNode , instance ).isSuccess ());
179
+ assertTrue (true );
180
+ }
181
+
160
182
public static final class K1Validator
161
183
extends AbstractKeywordValidator
162
184
{
Original file line number Diff line number Diff line change
1
+ {
2
+ "schema" :
3
+ {
4
+ "$schema" : " http://json-schema.org/draft-04/schema#" ,
5
+
6
+ "definitions" : {
7
+ "unit-value" : {
8
+ "type" : " object" ,
9
+ "properties" : {
10
+ "unit" : {
11
+ "type" : " string"
12
+ },
13
+ "value" : {
14
+ "type" : " number"
15
+ }
16
+ }
17
+ },
18
+ "length-unit-value" : {
19
+ "type" : " object" ,
20
+ "allOf" : [
21
+ {
22
+ "$ref" : " #/definitions/unit-value"
23
+ },
24
+ {
25
+ "properties" : {
26
+ "unit" : {
27
+ "type" : " string" ,
28
+ "enum" : [
29
+ " cm" ,
30
+ " in"
31
+ ]
32
+ }
33
+ }
34
+ }
35
+ ]
36
+ },
37
+ "something-containing-unit-value" : {
38
+ "type" : " object" ,
39
+ "properties" : {
40
+ "unit-value" : {
41
+ "$ref" : " #/definitions/unit-value"
42
+ }
43
+ },
44
+ "required" : [ " unit-value" ]
45
+ }
46
+ },
47
+
48
+ "type" : " object" ,
49
+ "allOf" : [
50
+ {
51
+ "$ref" : " #/definitions/something-containing-unit-value"
52
+ },
53
+ {
54
+ "properties" : {
55
+ "unit-value" : {
56
+ "$ref" : " #/definitions/length-unit-value"
57
+ }
58
+ }
59
+ }
60
+ ]
61
+ },
62
+ "instance" : {
63
+ "unit" : " cm" ,
64
+ "unit-value" : { "unit" : " " }
65
+ }
66
+ }
You can’t perform that action at this time.
0 commit comments