-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
beta3
-
sparc
-
solaris_2.6
Name: dsR10051 Date: 09/18/2001
The method of class java.beans.XMLEncoder
protected void writeObject(Object o)
does not write the java.awt.MenuBar object correctly to the output stream.
It ignores the added menus of the MenuBar.
Here is minimized test:
import java.io.*;
import java.beans.*;
import java.awt.*;
public class Test0015_01 {
public static void main(String[] args) {
MenuBar object = new MenuBar();
Menu menu = new Menu("Label");
MenuItem mi = new MenuItem("MenuItem Label");
menu.add(mi);
object.add(menu);
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());
MenuBar res = (MenuBar) xmlDec.readObject();
Menu res_menu = res.getMenu(0);
if(res_menu.getLabel().equals("Label") &&
res_menu.getItem(0).getLabel().equals("MenuItem Label")) {
System.out.println("OKAY");
} else {
System.out.println("Failed");
System.out.println("MenuBar : " + res);
System.out.println("Expected: " + object);
}
}
}
--- Output ---
$ /set/jdk-builds/JDK1.4.0beta2-b78/solaris/bin/java Test0015_01
OutputStream
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.4.0-beta3" class="java.beans.XMLDecoder">
<object class="java.awt.MenuBar">
<void property="name">
<string>menubar0</string>
</void>
</object>
</java>
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
at java.util.Vector.elementAt(Vector.java:422)
at java.awt.MenuBar.getMenuImpl(MenuBar.java:281)
at java.awt.MenuBar.getMenu(MenuBar.java:273)
at Test0015_01.main(Test0015_01.java:27)
$
======================================================================