Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-5009335

PIT: Unable to unserialize JInternalFrame in Motif

XMLWordPrintable

      In effect to fix of 4966168 JInternalFrame can be serialized now, But can't be unserialized thus making no sense of its serializing
      functionality.

      Steps to reproduce:
      1) Run the attached testcase TestSerializeInternalFrame
      2) Change Look and Feel > Motif
      3) Click on button "Serialize JInternalFrame" this will serialize JInternalFrame
         in temp.log file in current working directory.
      4) Now click on "Read Serialized JInternalFrame" and It will try to read serialized
         JInternalFrame from temp.log file, But it fails giving following exception



      java.io.InvalidClassException: javax.swing.JMenuItem$MenuItemPropertyChangeListe
      ner; no valid constructor
              at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:428)
              at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:268)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1026)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
              at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
      va:457)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
      :1366)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
      :380)
              at javax.swing.AbstractAction.writeObject(AbstractAction.java:256)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
              at javax.swing.event.EventListenerList.writeObject(EventListenerList.jav
      a:240)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
      :1366)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
      :380)
              at javax.swing.JComponent.writeObject(JComponent.java:5220)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1242)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1066)
              at java.io.ObjectOutputStream.access$100(ObjectOutputStream.java:135)
              at java.io.ObjectOutputStream$PutFieldImpl.writeFields(ObjectOutputStrea
      m.java:1509)
              at java.io.ObjectOutputStream.writeFields(ObjectOutputStream.java:418)
              at java.awt.Container.writeObject(Container.java:3452)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
              at java.beans.PropertyChangeSupport.writeObject(PropertyChangeSupport.ja
      va:457)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java
      :1366)
              at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java
      :380)
              at java.awt.Component.writeObject(Component.java:7365)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
      java:39)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
      sorImpl.java:25)
              at java.lang.reflect.Method.invoke(Method.java:495)
              at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:89
      0)
              at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:13
      30)
              at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.jav
      a:1281)
              at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1070)
              at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:291)
              at TestSerializeInternalFrame$1.actionPerformed(TestSerializeInternalFra
      me.java:24)
              at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:18
      36)
              at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.jav
      a:2154)
              at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel
      .java:420)
              at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258
      )
              at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonL
      istener.java:234)
              at java.awt.Component.processMouseEvent(Component.java:5465)
              at javax.swing.JComponent.processMouseEvent(JComponent.java:3081)
              at java.awt.Component.processEvent(Component.java:5230)
              at java.awt.Container.processEvent(Container.java:1961)
              at java.awt.Component.dispatchEventImpl(Component.java:3933)
              at java.awt.Container.dispatchEventImpl(Container.java:2019)
              at java.awt.Component.dispatchEvent(Component.java:3781)
              at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4203
      )
              at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3883)
              at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3813)
              at java.awt.Container.dispatchEventImpl(Container.java:2005)
              at java.awt.Window.dispatchEventImpl(Window.java:1764)
              at java.awt.Component.dispatchEvent(Component.java:3781)
              at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
              at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchTh
      read.java:234)
              at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
      ad.java:163)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)
              at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)
              at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)


      -------------------------
      Also serializing JInternalFrame in motif is taking around 4 times more space than serializing in other Look and Feels. Following is small comparision
      Metal: 5645 bytes
      Window: 5621 bytes
      Motif: 19895 bytes
      --------------------------

      PIT: 06.March.2004

      ###@###.### 2004-03-08

            draskinsunw Daniel Raskin (Inactive)
            hsinghsunw Hemant Singh (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: