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

XMLEncoder.writeObject does not write java.awt.MenuShortcut object

XMLWordPrintable

    • beta2
    • sparc
    • solaris_2.6



      Name: dsR10051 Date: 04/09/2001


      Method
      protected void writeObject(Object o) of class java.beans.XMLEncoder
      does not write java.awt.MenuShortcut object to the output stream.

      Here is minimized test:
      import java.io.*;
      import java.beans.*;
      import java.awt.*;

      public class Test0012 {

          public static void main(String[] args) {

              MenuShortcut object = new MenuShortcut(java.awt.event.KeyEvent.VK_1, true);

              ByteArrayOutputStream os = new ByteArrayOutputStream();
              XMLEncoder xmlEnc = new XMLEncoder(os);
              xmlEnc.writeObject(object);
              xmlEnc.flush();
              xmlEnc.close();

              ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
              XMLDecoder xmlDec = new XMLDecoder(in);
              System.out.println("OutputStream");
              System.out.println(os.toString());

              MenuShortcut res = (MenuShortcut) xmlDec.readObject();
              if(res.equals(object)) {
                  System.out.println("OKAY");
              } else {
                  System.out.println("Failed");
                  System.out.println("MenuShortcut: " + res);
                  System.out.println("Expected : " + object);
              }
          }
      }

      --- output ---
      %java -version
      java version "1.4.0-beta"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta-b58)
      Java HotSpot(TM) Client VM (build 1.4.0-beta-b58, mixed mode)
      %java Test0012
      Warning:
          Cannot allocate colormap entry for default background

      java.lang.InstantiationException: java.awt.MenuShortcut
      Continuing ...
      java.lang.Exception: discarding statement XMLEncoder0.writeObject(MenuShortcut0);
      Continuing ...
      OutputStream
      <?xml version="1.0" encoding="UTF-8"?>
      <java version="1.4.0-beta" class="java.beans.XMLDecoder">
      </java>

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException
              at java.beans.ObjectHandler.dequeueResult(XMLDecoder.java:270)
              at java.beans.XMLDecoder.readObject(XMLDecoder.java:148)
              at Test0012.main(Test0012.java:22)

      ======================================================================

      Name: dsR10051 Date: 04/09/2001



      Besides, method ignores the MenuShortcut property
      of java.awt.MenuItem object when it writes MenuItem. Example:
      import java.io.*;
      import java.beans.*;
      import java.awt.*;

      public class Test0014 {

          public static void main(String[] args) {

              MenuItem object = new MenuItem("Label");
              MenuShortcut ms = new MenuShortcut(java.awt.event.KeyEvent.VK_1, true);
              object.setShortcut(ms);

              ByteArrayOutputStream os = new ByteArrayOutputStream();
              XMLEncoder xmlEnc = new XMLEncoder(os);
              xmlEnc.writeObject(object);
              xmlEnc.flush();
              xmlEnc.close();

              ByteArrayInputStream in = new ByteArrayInputStream(os.toByteArray());
              XMLDecoder xmlDec = new XMLDecoder(in);
              System.out.println("OutputStream");
              System.out.println(os.toString());

              MenuItem res = (MenuItem) xmlDec.readObject();
              if(res.getShortcut().equals(ms)) {
                  System.out.println("OKAY");
              } else {
                  System.out.println("Failed");
                  System.out.println("MenuItem: " + res);
                  System.out.println("Expected: " + object);
              }
          }
      }
      --- output ---
      %java Test0014
      Warning:
          Cannot allocate colormap entry for default background

      java.lang.InstantiationException: java.awt.MenuShortcut
      Continuing ...
      java.lang.RuntimeException: failed to evaluate: <unbound>=MenuShortcut.new();
      Continuing ...
      OutputStream
      <?xml version="1.0" encoding="UTF-8"?>
      <java version="1.4.0-beta" class="java.beans.XMLDecoder">
        <object class="java.awt.MenuItem">
          <void property="actionCommand">
            <string>Label</string>
          </void>
          <void property="label">
            <string>Label</string>
          </void>
          <void property="name">
            <string>menuitem0</string>
          </void>
        </object>
      </java>

      Exception in thread "main" java.lang.NullPointerException
              at Test0014.main(Test0014.java:25)


      ======================================================================

            pmilnesunw Philip Milne (Inactive)
            sdasunw Sda Sda (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: