1
1
package org .everit .json .schema ;
2
2
3
- import static java .lang .String .format ;
4
- import static org .everit .json .schema .EnumSchema .toJavaValue ;
3
+ import org .json .JSONObject ;
5
4
6
5
import java .util .ArrayList ;
7
6
import java .util .Collection ;
8
7
import java .util .List ;
9
8
10
- import org .json .JSONObject ;
9
+ import static java .lang .String .format ;
10
+ import static org .everit .json .schema .EnumSchema .toJavaValue ;
11
11
12
12
class ValidatingVisitor extends Visitor {
13
13
@@ -32,27 +32,32 @@ void visit(Schema schema) {
32
32
this .failureReporter = failureReporter ;
33
33
}
34
34
35
- @ Override void visitNumberSchema (NumberSchema numberSchema ) {
35
+ @ Override
36
+ void visitNumberSchema (NumberSchema numberSchema ) {
36
37
numberSchema .accept (new NumberSchemaValidatingVisitor (subject , this ));
37
38
}
38
39
39
- @ Override void visitArraySchema (ArraySchema arraySchema ) {
40
+ @ Override
41
+ void visitArraySchema (ArraySchema arraySchema ) {
40
42
arraySchema .accept (new ArraySchemaValidatingVisitor (subject , this ));
41
43
}
42
44
43
- @ Override void visitBooleanSchema (BooleanSchema schema ) {
45
+ @ Override
46
+ void visitBooleanSchema (BooleanSchema schema ) {
44
47
if (!(subject instanceof Boolean )) {
45
48
failureReporter .failure (Boolean .class , subject );
46
49
}
47
50
}
48
51
49
- @ Override void visitNullSchema (NullSchema nullSchema ) {
52
+ @ Override
53
+ void visitNullSchema (NullSchema nullSchema ) {
50
54
if (!(subject == null || subject == JSONObject .NULL )) {
51
55
failureReporter .failure ("expected: null, found: " + subject .getClass ().getSimpleName (), "type" );
52
56
}
53
57
}
54
58
55
- @ Override void visitConstSchema (ConstSchema constSchema ) {
59
+ @ Override
60
+ void visitConstSchema (ConstSchema constSchema ) {
56
61
if (isNull (subject ) && isNull (constSchema .getPermittedValue ())) {
57
62
return ;
58
63
}
@@ -62,7 +67,8 @@ void visit(Schema schema) {
62
67
}
63
68
}
64
69
65
- @ Override void visitEnumSchema (EnumSchema enumSchema ) {
70
+ @ Override
71
+ void visitEnumSchema (EnumSchema enumSchema ) {
66
72
Object effectiveSubject = toJavaValue (subject );
67
73
for (Object possibleValue : enumSchema .getPossibleValues ()) {
68
74
if (ObjectComparator .deepEquals (possibleValue , effectiveSubject )) {
@@ -72,19 +78,22 @@ void visit(Schema schema) {
72
78
failureReporter .failure (format ("%s is not a valid enum value" , subject ), "enum" );
73
79
}
74
80
75
- @ Override void visitFalseSchema (FalseSchema falseSchema ) {
81
+ @ Override
82
+ void visitFalseSchema (FalseSchema falseSchema ) {
76
83
failureReporter .failure ("false schema always fails" , "false" );
77
84
}
78
85
79
- @ Override void visitNotSchema (NotSchema notSchema ) {
86
+ @ Override
87
+ void visitNotSchema (NotSchema notSchema ) {
80
88
Schema mustNotMatch = notSchema .getMustNotMatch ();
81
89
ValidationException failure = getFailureOfSchema (mustNotMatch , subject );
82
90
if (failure == null ) {
83
91
failureReporter .failure ("subject must not be valid against schema " + mustNotMatch , "not" );
84
92
}
85
93
}
86
94
87
- @ Override void visitReferenceSchema (ReferenceSchema referenceSchema ) {
95
+ @ Override
96
+ void visitReferenceSchema (ReferenceSchema referenceSchema ) {
88
97
Schema referredSchema = referenceSchema .getReferredSchema ();
89
98
if (referredSchema == null ) {
90
99
throw new IllegalStateException ("referredSchema must be injected before validation" );
@@ -95,15 +104,18 @@ void visit(Schema schema) {
95
104
}
96
105
}
97
106
98
- @ Override void visitObjectSchema (ObjectSchema objectSchema ) {
107
+ @ Override
108
+ void visitObjectSchema (ObjectSchema objectSchema ) {
99
109
objectSchema .accept (new ObjectSchemaValidatingVisitor (subject , this ));
100
110
}
101
111
102
- @ Override void visitStringSchema (StringSchema stringSchema ) {
112
+ @ Override
113
+ void visitStringSchema (StringSchema stringSchema ) {
103
114
stringSchema .accept (new StringSchemaValidatingVisitor (subject , this ));
104
115
}
105
116
106
- @ Override void visitCombinedSchema (CombinedSchema combinedSchema ) {
117
+ @ Override
118
+ void visitCombinedSchema (CombinedSchema combinedSchema ) {
107
119
List <ValidationException > failures = new ArrayList <>();
108
120
Collection <Schema > subschemas = combinedSchema .getSubschemas ();
109
121
CombinedSchema .ValidationCriterion criterion = combinedSchema .getCriterion ();
@@ -126,6 +138,11 @@ void visit(Schema schema) {
126
138
}
127
139
}
128
140
141
+ @ Override
142
+ void visitConditionalSchema (ConditionalSchema conditionalSchema ) {
143
+ conditionalSchema .accept (new ConditionalSchemaValidatingVisitor (subject , this ));
144
+ }
145
+
129
146
ValidationException getFailureOfSchema (Schema schema , Object input ) {
130
147
Object origSubject = this .subject ;
131
148
this .subject = input ;
0 commit comments