-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
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)
======================================================================