@@ -329,8 +329,28 @@ else if (this.maximum != null && data.maximum == null)
329
329
return ;
330
330
else if (this .maximum == null && data .maximum != null )
331
331
this .maximum = data .maximum ;
332
- else if (data .maximum .doubleValue () > this .maximum .doubleValue ()) {
333
- this .maximum = data .maximum ;
332
+ else {
333
+ /* TODO: This is ugly and how to handle number overflow? */
334
+ if (this .maximum instanceof BigDecimal || data .maximum instanceof BigDecimal ) {
335
+ if (((BigDecimal )data .maximum ).compareTo (((BigDecimal )this .maximum ))==1 )
336
+ this .maximum = data .maximum ;
337
+ } else if (this .maximum instanceof BigInteger || data .maximum instanceof BigInteger ) {
338
+ if (((BigInteger )data .maximum ).compareTo (((BigInteger )this .maximum ))==1 )
339
+ this .maximum = data .maximum ;
340
+ } else if (this .maximum instanceof Long || data .maximum instanceof Long ) {
341
+ if (((Long )data .maximum ).compareTo (((Long )this .maximum ))==1 )
342
+ this .maximum = data .maximum ;
343
+ } else if (this .maximum instanceof Double || data .maximum instanceof Double ) {
344
+ if (((Double )data .maximum ).compareTo (((Double )this .maximum ))==1 )
345
+ this .maximum = data .maximum ;
346
+ } else if (this .maximum instanceof Float || data .maximum instanceof Float ) {
347
+ if (((Float )data .maximum ).compareTo (((Float )this .maximum ))==1 )
348
+ this .maximum = data .maximum ;
349
+ } else {
350
+ // Integer
351
+ if (((Integer )data .maximum ).compareTo (((Integer )this .maximum ))==1 )
352
+ this .maximum = data .maximum ;
353
+ }
334
354
}
335
355
}
336
356
@@ -449,8 +469,28 @@ else if (this.minimum != null && data.minimum == null)
449
469
return ;
450
470
else if (this .minimum == null && data .minimum != null )
451
471
this .minimum = data .minimum ;
452
- else if (data .minimum .doubleValue () < this .minimum .doubleValue ()) {
453
- this .minimum = data .minimum ;
472
+ else {
473
+ /* TODO: This is ugly and how to handle number overflow? */
474
+ if (this .minimum instanceof BigDecimal || data .minimum instanceof BigDecimal ) {
475
+ if (((BigDecimal )data .minimum ).compareTo (((BigDecimal )this .minimum ))==-1 )
476
+ this .minimum = data .minimum ;
477
+ } else if (this .minimum instanceof BigInteger || data .minimum instanceof BigInteger ) {
478
+ if (((BigInteger )data .minimum ).compareTo (((BigInteger )this .minimum ))==-1 )
479
+ this .minimum = data .minimum ;
480
+ } else if (this .minimum instanceof Long || data .minimum instanceof Long ) {
481
+ if (((Long )data .minimum ).compareTo (((Long )this .minimum ))==-1 )
482
+ this .minimum = data .minimum ;
483
+ } else if (this .minimum instanceof Double || data .minimum instanceof Double ) {
484
+ if (((Double )data .minimum ).compareTo (((Double )this .minimum ))==-1 )
485
+ this .minimum = data .minimum ;
486
+ } else if (this .minimum instanceof Float || data .minimum instanceof Float ) {
487
+ if (((Float )data .minimum ).compareTo (((Float )this .minimum ))==-1 )
488
+ this .minimum = data .minimum ;
489
+ } else {
490
+ // Integer
491
+ if (((Integer )data .minimum ).compareTo (((Integer )this .minimum ))==-1 )
492
+ this .minimum = data .minimum ;
493
+ }
454
494
}
455
495
}
456
496
0 commit comments