Fix external issue 4711 - java.sql.Timestamp#compareTo(java.util.Date) silently crashes in Firefox and Chrome
Review at http://gwt-code-reviews.appspot.com/634802
Review by: jat@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@8362 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 bf9aa00..8e2c62a 100644
--- a/user/super/com/google/gwt/emul/java/sql/Timestamp.java
+++ b/user/super/com/google/gwt/emul/java/sql/Timestamp.java
@@ -108,8 +108,11 @@
@Override
public int compareTo(java.util.Date o) {
- // JavaDoc says a ClassCastException is correct behavior
- return compareTo((Timestamp) o);
+ if (o instanceof Timestamp) {
+ return compareTo((Timestamp) o);
+ } else {
+ return compareTo(new Timestamp(o.getTime()));
+ }
}
public int compareTo(Timestamp o) {
diff --git a/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java b/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java
index b211971..99210c9 100644
--- a/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java
+++ b/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java
@@ -15,7 +15,6 @@
*/
package com.google.gwt.emultest.java.sql;
-import com.google.gwt.core.client.GWT;
import com.google.gwt.junit.client.GWTTestCase;
import java.sql.Timestamp;
@@ -59,16 +58,9 @@
assertEquals("d2, t", d2, t);
assertEquals("hashcode", d2.hashCode(), t.hashCode());
assertFalse("t.equals(d2)", t.equals(d2));
-
- if (GWT.isScript()) {
- // It looks like not all JVMs will throw the CCE, just check web mode.
- try {
- t.compareTo(d2);
- fail("Should throw ClassCastException");
- } catch (ClassCastException e) {
- // Correct
- }
- }
+
+ // t is later then d2 by some number of nanoseconds
+ assertEquals(1, t.compareTo(d2));
Timestamp t2 = new Timestamp(d.getTime());
t2.setNanos(t.getNanos() + 1);