java.util.TimeZone's default implementation may cause many classes' serialization non-compatible with RI --------------------------------------------------------------------------------------------------------
Key: HARMONY-184 URL: http://issues.apache.org/jira/browse/HARMONY-184 Project: Harmony Type: Bug Components: Classlib Reporter: Paulex Yang Priority: Critical Static factory methods, java.util.TimeZone.getInstance(String) and getDefault(), are only ways to get a TimeZone instance, but Harmony and RI uses different classes as default implementation, which cause serialization non-compatible. Further, all classes whose serialization form includes TimeZone won't compatible with RI, too, for example, java.util.Calendar(with subclass), java.text.DateFormat(with subclass), etc. But the incompatiblity is hard to be imputed to Harmony, because Harmony use API class SimpleTimeZone as default implementation, but RI use a non-API class, whose full name is sun.util.calendar.ZoneInfo. The reproduce procedure: 1. To serialize TimeZone object to a file in RI, run codes below in RI public void writeObject(){ TimeZone zone = TimeZone.getTimeZone("GMT"); ObjectOutputStream ooutput = null; try { ooutput = new ObjectOutputStream(new FileOutputStream("TimeZone.ser")); ooutput.writeObject(zone); } finally { try { if (null != ooutput) { ooutput.close(); } } catch (Exception e) { } } } 2. Trying to deserialize this object from file, run codes below public void readObject(){ ObjectInputStream oinput = null; try { oinput = new ObjectInputStream(new FileInputStream("TimeZone.ser")); TimeZone newObj = (TimeZone)oinput.readObject(); } finally { try { if (null != oinput) { oinput.close(); } } catch (Exception e) { } } } Run in RI, passes without any failure Run in Harmony, exception throwed as below: java.lang.ClassNotFoundException: sun.util.calendar.ZoneInfo at java.lang.Class.forName(Class.java:154) at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2226) ... ... -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira