harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tim Ellison (JIRA)" <j...@apache.org>
Subject [jira] Assigned: (HARMONY-184) java.util.TimeZone's default implementation may cause many classes' serialization non-compatible with RI
Date Mon, 13 Mar 2006 10:39:12 GMT
     [ http://issues.apache.org/jira/browse/HARMONY-184?page=all ]

Tim Ellison reassigned HARMONY-184:
-----------------------------------

    Assign To: Tim Ellison

> 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
>     Assignee: Tim Ellison
>     Priority: Critical
>  Attachments: TimeZone.patch, 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


Mime
View raw message