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