You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by "Paulex Yang (JIRA)" <ji...@apache.org> on 2006/03/07 08:59:39 UTC
[jira] Updated: (HARMONY-184) java.util.TimeZone's default
implementation may cause many classes' serialization non-compatible with RI
[ http://issues.apache.org/jira/browse/HARMONY-184?page=all ]
Paulex Yang updated HARMONY-184:
--------------------------------
Attachment: TimeZone.ser
the serialized file generated by RI is attached.
> 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
> Attachments: TimeZone.ser
>
> 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