@@ -8,27 +8,23 @@ class NumberSchemaValidatingVisitor extends Visitor {
8
8
9
9
private final Object subject ;
10
10
11
- private final ValidationFailureReporter failureReporter ;
11
+ private final ValidatingVisitor owner ;
12
12
13
13
private boolean exclusiveMinimum ;
14
14
15
15
private boolean exclusiveMaximum ;
16
16
17
17
private double numberSubject ;
18
18
19
- NumberSchemaValidatingVisitor (Object subject , ValidationFailureReporter failureReporter ) {
19
+ NumberSchemaValidatingVisitor (Object subject , ValidatingVisitor owner ) {
20
20
this .subject = subject ;
21
- this .failureReporter = failureReporter ;
21
+ this .owner = owner ;
22
22
}
23
23
24
24
@ Override void visitNumberSchema (NumberSchema numberSchema ) {
25
- if (!(subject instanceof Number )) {
26
- if (numberSchema .isRequiresNumber ()) {
27
- failureReporter .failure (Number .class , subject );
28
- }
29
- } else {
25
+ if (owner .passesTypeCheck (Number .class , numberSchema .isRequiresNumber (), numberSchema .isNullable ())) {
30
26
if (!(subject instanceof Integer || subject instanceof Long ) && numberSchema .requiresInteger ()) {
31
- failureReporter .failure (Integer .class , subject );
27
+ owner .failure (Integer .class , subject );
32
28
} else {
33
29
this .numberSubject = ((Number ) subject ).doubleValue ();
34
30
super .visitNumberSchema (numberSchema );
@@ -45,16 +41,16 @@ class NumberSchemaValidatingVisitor extends Visitor {
45
41
return ;
46
42
}
47
43
if (exclusiveMinimum && numberSubject <= minimum .doubleValue ()) {
48
- failureReporter .failure (subject + " is not greater than " + minimum , "exclusiveMinimum" );
44
+ owner .failure (subject + " is not greater than " + minimum , "exclusiveMinimum" );
49
45
} else if (numberSubject < minimum .doubleValue ()) {
50
- failureReporter .failure (subject + " is not greater or equal to " + minimum , "minimum" );
46
+ owner .failure (subject + " is not greater or equal to " + minimum , "minimum" );
51
47
}
52
48
}
53
49
54
50
@ Override void visitExclusiveMinimumLimit (Number exclusiveMinimumLimit ) {
55
51
if (exclusiveMinimumLimit != null ) {
56
52
if (numberSubject <= exclusiveMinimumLimit .doubleValue ()) {
57
- failureReporter .failure (subject + " is not greater than " + exclusiveMinimumLimit , "exclusiveMinimum" );
53
+ owner .failure (subject + " is not greater than " + exclusiveMinimumLimit , "exclusiveMinimum" );
58
54
}
59
55
}
60
56
}
@@ -64,9 +60,9 @@ class NumberSchemaValidatingVisitor extends Visitor {
64
60
return ;
65
61
}
66
62
if (exclusiveMaximum && maximum .doubleValue () <= numberSubject ) {
67
- failureReporter .failure (subject + " is not less than " + maximum , "exclusiveMaximum" );
63
+ owner .failure (subject + " is not less than " + maximum , "exclusiveMaximum" );
68
64
} else if (maximum .doubleValue () < numberSubject ) {
69
- failureReporter .failure (subject + " is not less or equal to " + maximum , "maximum" );
65
+ owner .failure (subject + " is not less or equal to " + maximum , "maximum" );
70
66
}
71
67
}
72
68
@@ -77,7 +73,7 @@ class NumberSchemaValidatingVisitor extends Visitor {
77
73
@ Override void visitExclusiveMaximumLimit (Number exclusiveMaximumLimit ) {
78
74
if (exclusiveMaximumLimit != null ) {
79
75
if (numberSubject >= exclusiveMaximumLimit .doubleValue ()) {
80
- failureReporter .failure (format ("is not less than " + exclusiveMaximumLimit ), "exclusiveMaximum" );
76
+ owner .failure (format ("is not less than " + exclusiveMaximumLimit ), "exclusiveMaximum" );
81
77
}
82
78
}
83
79
}
@@ -87,7 +83,7 @@ class NumberSchemaValidatingVisitor extends Visitor {
87
83
BigDecimal remainder = BigDecimal .valueOf (numberSubject ).remainder (
88
84
BigDecimal .valueOf (multipleOf .doubleValue ()));
89
85
if (remainder .compareTo (BigDecimal .ZERO ) != 0 ) {
90
- failureReporter .failure (subject + " is not a multiple of " + multipleOf , "multipleOf" );
86
+ owner .failure (subject + " is not a multiple of " + multipleOf , "multipleOf" );
91
87
}
92
88
}
93
89
}
0 commit comments