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

exception in XMLEncoder while serializing JMenuItem

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • 1.4.0
    • 1.4.0
    • client-libs
    • beta3
    • x86
    • windows_2000

      EncodeBug2.main(XmlEncodeBug2.java:122)
      (Review ID: 129457)
      ======================================================================


      Name: nt126004 Date: 08/06/2001


      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b65)
      Java HotSpot(TM) Client VM (build 1.4.0-beta-b65, mixed mode)


      There is an exception thrown when a JMenu with a JMenuItem is encoded
      by an XMLEncoder.

      Here is the source code
      ------------------------------------------------------------
      **********************************************************
      -------------------------------------------------------------

      import java.awt.*;
      import java.beans.*;
      import java.io.*;
      import java.text.DateFormat;
      import java.text.SimpleDateFormat;
      import java.util.Date;
      import java.net.URL;
      import javax.swing.*;

      public class XmlEncodeBug2
      {
         private XMLDecoder decoder = null;
         private XMLEncoder encoder = null;
         private String fileName;

         public XmlEncodeBug2()
         {
            DateFormat nameExt = new SimpleDateFormat("yyyyMMdd_HHmmssSSS");
            String name = "XmlEncode_" + nameExt.format(new Date()) + ".xml";
            fileName = name;
         }

         public XmlEncodeBug2(String file)
         {
            fileName = file;
         }


         public void load() throws IOException
         {
            decoder = new XMLDecoder(
                      new BufferedInputStream(
                      new FileInputStream(fileName)));
            decoder.setExceptionListener(new ExceptionListener() {
               public void exceptionThrown(Exception ex) {
                  xmlException(ex);
               }});
         }

         public void store() throws IOException
         {
            encoder = new XMLEncoder(
                      new BufferedOutputStream(
                      new FileOutputStream(fileName)));
            encoder.setExceptionListener(new ExceptionListener() {
               public void exceptionThrown(Exception ex) {
                  xmlException(ex);
               }});
         }

         public Object decode() throws IOException
         {
            return decoder.readObject();
         }

         public void encode(Object o)
         {
                encoder.writeObject(o);
         }

         public void close()
         {
            if (decoder != null)
            {
               try
               {
                  decoder.close();
               }
               catch(Exception ex) {}
               finally
               {
                  decoder = null;
               }
            }
            if (encoder != null)
            {
               try
               {
                  encoder.close();
               }
               catch(Exception ex) {}
               finally
               {
                  encoder = null;
               }
            }
         }

         public static void xmlException(Exception ex)
         {
            System.out.println("xmlException: " + ex.toString());
            ex.printStackTrace();
         }

         public static void main(String[] args)
         {
            try
            {
               UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());


               //
               JFrame frame = new JFrame("Original Test Frame");
               frame.getContentPane().setBackground(Color.cyan);
               frame.getContentPane().setForeground(Color.blue);
               frame.setSize(new Dimension(300, 300));

               JMenuBar jmenubar = new JMenuBar();
               JMenu menu = new JMenu("File");
               JMenuItem item = new JMenuItem("Open");
               menu.add(item);
               jmenubar.add(menu);
               frame.setJMenuBar(jmenubar);

               //
               frame.pack();
               frame.setVisible(true);

               XmlEncodeBug2 dec = new XmlEncodeBug2("SimpleEncode.xml");
               dec.store();
               dec.encode(frame);
               dec.close();

               dec.load();
               JFrame test = (JFrame) dec.decode();
               dec.close();

               test.setTitle("Rebuilt Test Frame");
               test.setVisible(true);
            }
            catch(IOException ioex)
            {
               ioex.printStackTrace();
            }
            catch(Exception ex)
            {
               ex.printStackTrace();
            }
         }
      }

      -----------------------------------------------------------
      Here is the trace
      ------------------------------------------------------------
      **********************************************************
      -------------------------------------------------------------
      C:\Java\jdk1.4\bin\javaw -
      classpath "D:\Donaldo\JavaProjects\SimpleEncode\classes;D:\abacus\mainline\olf\j
      ava\lib;C:\Java\jdk1.4\demo\jfc\Java2D\Java2Demo.jar;C:\Java\jdk1.4
      \docs\guide\imf\spi-sample\CityIM.jar;C:\Java\jdk1.4
      \jre\lib\ext\dnsns.jar;C:\Java\jdk1.4\jre\lib\ext\ldapsec.jar;C:\Java\jdk1.4
      \jre\lib\ext\sunjce_provider.jar;C:\Java\jdk1.4\jre\lib\i18n.jar;C:\Java\jdk1.4
      \jre\lib\jaws.jar;C:\Java\jdk1.4\jre\lib\jce.jar;C:\Java\jdk1.4
      \jre\lib\jsse.jar;C:\Java\jdk1.4\jre\lib\rt.jar;C:\Java\jdk1.4
      \jre\lib\sunrsasign.jar;C:\Java\jdk1.4\lib\dt.jar;C:\Java\jdk1.4
      \lib\htmlconverter.jar;C:\Java\jdk1.4\lib\tools.jar" XmlEncodeBug2
      xmlException: java.lang.InstantiationException:
      javax.swing.JMenuItem$AccessibleJMenuItem
      java.lang.InstantiationException: javax.swing.JMenuItem$AccessibleJMenuItem
      at java.lang.Class.newInstance0(Class.java:276)
      at java.lang.Class.newInstance(Class.java:249)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:30)
      at sun.reflect.InflatableMethodAccessorImpl.invoke(InflatableMethodAccessorImpl.java:48)
      at java.lang.reflect.Method.invoke(Method.java:306)
      at java.beans.Statement.invoke(Statement.java:421)
      at java.beans.Expression.getValue(Expression.java:103)
      at java.beans.Encoder.getValue(Encoder.java:86)
      at java.beans.Encoder.get(Encoder.java:187)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:100)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:286)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:346)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.javax_swing_JMenu_PersistenceDelegate.initialize(MetaData.java:522)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.java_awt_Container_PersistenceDelegate.initialize(MetaData.java:360)
      at java.beans.PersistenceDelegate.initialize(PersistenceDelegate.java:194)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:344)
      at java.beans.javax_swing_JComponent_PersistenceDelegate.initialize(MetaData.java:481)
      at java.beans.PersistenceDelegate.initialize(PersistenceDelegate.java:194)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:344)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
      at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:243)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:346)
      at java.beans.javax_swing_JFrame_PersistenceDelegate.initialize(MetaData.java:421)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:266)
      at XmlEncodeBug2.encode(XmlEncodeBug2.java:59)
      at XmlEncodeBug2.main(XmlEncodeBug2.java:122)
      xmlException: java.lang.Exception: discarding statement
      JMenuItem0.addChangeListener(JMenuItem$AccessibleJMenuItem0);
      java.lang.Exception: discarding statement JMenuItem0.addChangeListener
      (JMenuItem$AccessibleJMenuItem0);
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:338)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:286)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:346)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.javax_swing_JMenu_PersistenceDelegate.initialize(MetaData.java:522)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.DefaultPersistenceDelegate.invokeStatement(DefaultPersistenceDelegate.java:231)
      at java.beans.java_awt_Container_PersistenceDelegate.initialize(MetaData.java:360)
      at java.beans.PersistenceDelegate.initialize(PersistenceDelegate.java:194)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:344)
      at java.beans.javax_swing_JComponent_PersistenceDelegate.initialize(MetaData.java:481)
      at java.beans.PersistenceDelegate.initialize(PersistenceDelegate.java:194)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:344)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
      at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:243)
      at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:346)
      at java.beans.javax_swing_JFrame_PersistenceDelegate.initialize(MetaData.java:421)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeExpression(Encoder.java:261)
      at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:354)
      at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
      at java.beans.Encoder.writeObject(Encoder.java:57)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:262)
      at java.beans.Encoder.writeObject1(Encoder.java:193)
      at java.beans.Encoder.cloneStatement(Encoder.java:206)
      at java.beans.Encoder.writeStatement(Encoder.java:237)
      at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:325)
      at java.beans.XMLEncoder.writeObject(XMLEncoder.java:266)
      at XmlEncodeBug2.encode(XmlEncodeBug2.java:59)
      at Xml

            mdavidsosunw Mark Davidson (Inactive)
            nthompsosunw Nathanael Thompson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: