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