Uses Long.compare for long comparison.
Makes return value of Date, Timestamp
compareTo method compliant with JDK.
Change-Id: I188c3a3245df0f82bb7c4c67babad78323151074
diff --git a/user/super/com/google/gwt/emul/java/math/BigDecimal.java b/user/super/com/google/gwt/emul/java/math/BigDecimal.java
index ffbdfb7..107151d 100644
--- a/user/super/com/google/gwt/emul/java/math/BigDecimal.java
+++ b/user/super/com/google/gwt/emul/java/math/BigDecimal.java
@@ -350,7 +350,7 @@
if (scaledDivisor.bitLength() < SMALL_VALUE_BITS) {
long rem = remainder.longValue();
long divisor = scaledDivisor.longValue();
- compRem = longCompareTo(Math.abs(rem) << 1, Math.abs(divisor));
+ compRem = Long.compare(Math.abs(rem) << 1, Math.abs(divisor));
// To look if there is a carry
compRem = roundingBehavior(quotient.testBit(0) ? 1 : 0, sign
* (5 + compRem), roundingMode);
@@ -395,10 +395,6 @@
return quotient > 0 ? Math.floor(quotient) : Math.ceil(quotient);
}
- private static int longCompareTo(long a, long b) {
- return Long.signum(a - b);
- }
-
private static native double parseUnscaled(String str) /*-{
var unscaledRegex = @java.math.BigDecimal::unscaledRegex;
if (!unscaledRegex) {
@@ -2790,7 +2786,7 @@
// If the discarded fraction is non-zero perform rounding
if (fraction != 0) {
// To check if the discarded fraction >= 0.5
- compRem = longCompareTo(Math.abs(fraction) << 1, sizeOfFraction);
+ compRem = Long.compare(Math.abs(fraction) << 1, sizeOfFraction);
// To look if there is a carry
integer += roundingBehavior(((int) integer) & 1, Long.signum(fraction)
* (5 + compRem), mc.getRoundingMode());
diff --git a/user/super/com/google/gwt/emul/java/sql/Timestamp.java b/user/super/com/google/gwt/emul/java/sql/Timestamp.java
index 8f77f7c..e02af6a 100644
--- a/user/super/com/google/gwt/emul/java/sql/Timestamp.java
+++ b/user/super/com/google/gwt/emul/java/sql/Timestamp.java
@@ -116,15 +116,15 @@
}
public int compareTo(Timestamp o) {
- int sign = Long.signum(getTime() - o.getTime());
- return sign == 0 ? getNanos() - o.getNanos() : sign;
+ int cmp = Long.compare(getTime(), o.getTime());
+ return cmp == 0 ? Integer.compare(getNanos(), o.getNanos()) : cmp;
}
@Override
public boolean equals(Object ts) {
// Timestamps can't be compared to java.util.Date
// This is known to not be symmetric, which follows the JRE.
- return ts instanceof Timestamp ? equals((Timestamp) ts) : false;
+ return (ts instanceof Timestamp) && equals((Timestamp) ts);
}
public boolean equals(Timestamp ts) {
diff --git a/user/super/com/google/gwt/emul/java/util/Date.java b/user/super/com/google/gwt/emul/java/util/Date.java
index 06a4416..d81aa7e 100644
--- a/user/super/com/google/gwt/emul/java/util/Date.java
+++ b/user/super/com/google/gwt/emul/java/util/Date.java
@@ -125,7 +125,7 @@
}
public int compareTo(Date other) {
- return Long.signum(getTime() - other.getTime());
+ return Long.compare(getTime(), other.getTime());
}
@Override