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);