harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Paulex Yang (JIRA)" <j...@apache.org>
Subject [jira] Created: (HARMONY-184) java.util.TimeZone's default implementation may cause many classes' serialization non-compatible with RI
Date Tue, 07 Mar 2006 07:57:38 GMT
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


Mime
View raw message