Hi,

Can someone review and apply this fix ?.

Thanks,
Prakash

On 11/1/2011 4:15 PM, Prakash Udupa (Created) (JIRA) wrote:
Incomplete serialization implementation in 
AccessibilityProfile$SerializableAccessibilityProfile
------------------------------------------------------------------------------------------------

                  Key: TRINIDAD-2155
                  URL: https://issues.apache.org/jira/browse/TRINIDAD-2155
              Project: MyFaces Trinidad
           Issue Type: Bug
           Components: Archetype
     Affects Versions: 2.0.2-core
             Reporter: Prakash Udupa


Issue:
--------

Regarding the serializable  inner class of AccessibilityProfile...
private static final class SerializableAccessibilityProfile extends 
AccessibilityProfile implements Serializable

The super class no-arg constructor has private access, this will lead to the 
following error...

Exception in thread "main" java.io.InvalidClassException: 
org.apache.myfaces.trinidad.context.AccessibilityProfile$SerializableAccessibilityProfile;
 
org.apache.myfaces.trinidad.context.AccessibilityProfile$SerializableAccessibilityProfile;
 no valid constructor
        at 
java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:713)
        at 
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1733)
        at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
        at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
        at client.AccSerialTest.main(AccSerialTest.java:22)
Caused by: java.io.InvalidClassException: 
org.apache.myfaces.trinidad.context.AccessibilityProfile$SerializableAccessibilityProfile;
 no valid constructor
        at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:471)
        at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:310)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1106)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:326)
        at client.AccSerialTest.main(AccSerialTest.java:19)

Testcase:
--------------

package client;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

import org.apache.myfaces.trinidad.context.AccessibilityProfile;

public class AccSerialTest
{

   public static void main(String[] args)
     throws Exception
   {
     System.out.println("SERIALIZING");
     AccessibilityProfile acc = AccessibilityProfile.getDefaultInstance();
     ObjectOutputStream os = new ObjectOutputStream(new 
FileOutputStream("c:\\Temp\\serial.txt"));
     os.writeObject(acc);
     System.out.println("DE-SERIALIZING");
     ObjectInputStream is = new ObjectInputStream(new 
FileInputStream("c:\\Temp\\serial.txt"));
     is.readObject();
   }
}

Fix:
-----

Make the constructor protected. Patch attached.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



Reply via email to