12
12
13
13
/**
14
14
* Number schema validator.
15
+ * @ThreadSafe
15
16
*/
16
17
public class NumberSchema extends Schema {
17
18
@@ -111,8 +112,6 @@ public static Builder builder() {
111
112
112
113
private final boolean requiresInteger ;
113
114
114
- private final List <ValidationException > validationExceptions ;
115
-
116
115
public NumberSchema () {
117
116
this (builder ());
118
117
}
@@ -133,10 +132,9 @@ public NumberSchema(final Builder builder) {
133
132
this .requiresInteger = builder .requiresInteger ;
134
133
this .exclusiveMinimumLimit = builder .exclusiveMinimumLimit ;
135
134
this .exclusiveMaximumLimit = builder .exclusiveMaximumLimit ;
136
- this .validationExceptions = new ArrayList <>();
137
135
}
138
136
139
- private void checkMaximum (final double subject ) {
137
+ private void checkMaximum (final double subject , final List < ValidationException > validationExceptions ) {
140
138
if (maximum != null ) {
141
139
if (exclusiveMaximum && maximum .doubleValue () <= subject ) {
142
140
validationExceptions .add (failure (subject + " is not less than " + maximum , "exclusiveMaximum" ));
@@ -152,7 +150,7 @@ private void checkMaximum(final double subject) {
152
150
}
153
151
}
154
152
155
- private void checkMinimum (final double subject ) {
153
+ private void checkMinimum (final double subject , final List < ValidationException > validationExceptions ) {
156
154
if (minimum != null ) {
157
155
if (exclusiveMinimum && subject <= minimum .doubleValue ()) {
158
156
validationExceptions .add (failure (subject + " is not greater than " + minimum , "exclusiveMinimum" ));
@@ -167,7 +165,7 @@ private void checkMinimum(final double subject) {
167
165
}
168
166
}
169
167
170
- private void checkMultipleOf (final double subject ) {
168
+ private void checkMultipleOf (final double subject , final List < ValidationException > validationExceptions ) {
171
169
if (multipleOf != null ) {
172
170
BigDecimal remainder = BigDecimal .valueOf (subject ).remainder (
173
171
BigDecimal .valueOf (multipleOf .doubleValue ()));
@@ -212,10 +210,10 @@ public void validate(final Object subject) {
212
210
throw failure (Integer .class , subject );
213
211
}
214
212
double intSubject = ((Number ) subject ).doubleValue ();
215
- validationExceptions . clear ();
216
- checkMinimum (intSubject );
217
- checkMaximum (intSubject );
218
- checkMultipleOf (intSubject );
213
+ final List < ValidationException > validationExceptions = new ArrayList <> ();
214
+ checkMinimum (intSubject , validationExceptions );
215
+ checkMaximum (intSubject , validationExceptions );
216
+ checkMultipleOf (intSubject , validationExceptions );
219
217
ValidationException .throwFor (this , validationExceptions );
220
218
}
221
219
}
0 commit comments