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

XMLEncoder.writeObject does not write java.awt.Menu correctly

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.Menu object correctly to the output stream.
      It ignores the added menu items of the Menu.

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

      public class Test0015 {

          public static void main(String[] args) {

              Menu object = new Menu("Label");
              MenuItem mi = new MenuItem("MenuItem Label");
              object.add(mi);

              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());

              Menu res = (Menu) xmlDec.readObject();
              if(res.getLabel().equals("Label") &&
                      res.getItem(0).getLabel().equals("MenuItem Label")) {
                  System.out.println("OKAY");
              } else {
                  System.out.println("Failed");
                  System.out.println("Menu : " + 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 Test0015
      Warning:
          Cannot allocate colormap entry for default background

      OutputStream
      <?xml version="1.0" encoding="UTF-8"?>
      <java version="1.4.0-beta" class="java.beans.XMLDecoder">
        <object class="java.awt.Menu">
          <void property="actionCommand">
            <string>Label</string>
          </void>
          <void property="label">
            <string>Label</string>
          </void>
          <void property="name">
            <string>menu0</string>
          </void>
        </object>
      </java>

      Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
              at java.util.Vector.elementAt(Vector.java:420)
              at java.awt.Menu.getItemImpl(Menu.java:230)
              at java.awt.Menu.getItem(Menu.java:222)
              at Test0015.main(Test0015.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: