Revision: 8362
Author: r...@google.com
Date: Wed Jul  7 04:47:08 2010
Log: 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: j...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=8362

Modified:
 /trunk/user/super/com/google/gwt/emul/java/sql/Timestamp.java
 /trunk/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java

=======================================
--- /trunk/user/super/com/google/gwt/emul/java/sql/Timestamp.java Mon Jan 4 19:21:08 2010 +++ /trunk/user/super/com/google/gwt/emul/java/sql/Timestamp.java Wed Jul 7 04:47:08 2010
@@ -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) {
=======================================
--- /trunk/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java Mon Jan 4 11:06:23 2010 +++ /trunk/user/test/com/google/gwt/emultest/java/sql/SqlTimestampTest.java Wed Jul 7 04:47:08 2010
@@ -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);

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to