@@ -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 ();
@@ -132,11 +144,9 @@ void visitConditionalSchema(ConditionalSchema conditionalSchema) {
132
144
(!conditionalSchema .getThenSchema ().isPresent () && !conditionalSchema .getElseSchema ().isPresent ())) {
133
145
return ;
134
146
}
135
- try {
136
- conditionalSchema .getIfSchema ().get ().validate (subject );
137
- } catch (ValidationException ifSchemaValidationException ) {
138
- Schema elseSchema = conditionalSchema .getElseSchema ().orElseThrow (() -> ifSchemaValidationException );
139
- elseSchema .validate (subject );
147
+ ValidationException exception = getFailureOfSchema (conditionalSchema .getIfSchema ().get (), subject );
148
+ if (exception != null ) {
149
+ conditionalSchema .getElseSchema ().ifPresent (elseSchema -> elseSchema .validate (subject ));
140
150
return ;
141
151
}
142
152
conditionalSchema .getThenSchema ().ifPresent (schema -> schema .validate (subject ));
0 commit comments