Duplicate :
|
|
Relates :
|
|
Relates :
|
FULL PRODUCT VERSION : java version "1.5.0" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64) Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing) and java version "1.4.2_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_06-b03) Java HotSpot(TM) Client VM (build 1.4.2_06-b03, mixed mode) ADDITIONAL OS VERSION INFORMATION : Microsoft Windows XP Version 2002 Service pack 1 IE 6.0.2800 EXTRA RELEVANT SYSTEM CONFIGURATION : Pentium P4m 1.9Ghz 512 Ram A DESCRIPTION OF THE PROBLEM : I'm working on some Sun API (XMLEncoder) to obtain a Swing applet, and add some code for understanding the XMLEncoder. The calling method works fine when I call the method getDocument() direct from the applet, from the getDocument() applet button. But something goes wrong with writeObject when I call the method getDocument() from the html file? I think that this must be some bug with the Java Plug-in in IE because with Nescape or with Mozilla using 1.4.2_04 there is no problem... STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : Some people and me write a simple applet to show the problem...to see step-by-step the bug process. 1) Work great in IE: key pressed the applet's button "GET", calling the applet method: 2) works for the html button: "String 22", calling the method --> public String getDocument(String obj) 3) bug for the html button: "Integer 22 passed by script", calling the method: --> public String getDocument(Integer obj) (this is the same method that works great from an direct calling from the applet button "GET") 3) bug for the html button: "Integer 22 hardcoded in applet", calling the method: --> public String getDocument() EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - I would like the same result for all calling situations: A right Object xml encoding: <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> <string>22</string> </java> ACTUAL - Results for case: 1) String getDocument(Integer obj) <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> <int>22</int> </java> 2) <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> <string>22</string> </java> 3) ERROR BUG!!!!!!!!! Nothing is encode String getDocument(Integer obj) java.lang.NullPointerException Continuing ... java.lang.Exception: discarding statement XMLEncoder0.writeObject(Integer0); Continuing ... <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> </java> 4) ERROR BUG!!!!!!!!! Nothing is encode ava.lang.NullPointerException Continuing ... java.lang.Exception: discarding statement XMLEncoder0.writeObject(Integer0); Continuing ... <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> </java> ERROR MESSAGES/STACK TRACES THAT OCCUR : Results for case: I would like the same result as the 1) & 2) but: 3) ERROR BUG!!!!!!!!! Nothing is encode String getDocument(Integer obj) java.lang.NullPointerException Continuing ... java.lang.Exception: discarding statement XMLEncoder0.writeObject(Integer0); Continuing ... <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> </java> 4) ERROR BUG!!!!!!!!! Nothing is encode ava.lang.NullPointerException Continuing ... java.lang.Exception: discarding statement XMLEncoder0.writeObject(Integer0); Continuing ... <?xml version="1.0" encoding="UTF-8"?> <java version="1.4.2_03" class="java.beans.XMLDecoder"> </java> REPRODUCIBILITY : This bug can be reproduced always. ---------- BEGIN SOURCE ---------- the applet code: import java.awt.*; import java.awt.event.*; import java.applet.*; import javax.swing.*; import java.io.ByteArrayOutputStream; import java.io.BufferedOutputStream; public class Applethtml extends Applet { private boolean isStandalone = false; JPanel jPanel1 = new JPanel(); BorderLayout borderLayout1 = new BorderLayout(); JTextPane jTextPane1 = new JTextPane(); JButton jButton = new JButton(); public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } public Applethtml() {} public void init() { try { jbInit(); } catch (Exception e) { e.printStackTrace(); } } private void jbInit() throws Exception { jPanel1.setLayout(borderLayout1); jTextPane1.setText("Exemple"); jButton.setText("Get"); jButton.addKeyListener(new Applethtml_jButton_keyAdapter(this)); this.addMouseListener(new Applethtml_this_mouseAdapter(this)); this.addMouseListener(new Applethtml_this_mouseAdapter (this)); this.add(jPanel1, null); this.add(jTextPane1, null); this.add(jButton, null); } public void start() {} public void stop() {} public void destroy() {} public String getAppletInfo() { return "Information applet"; } public String[][] getParameterInfo() { return null; } public String getDocument(String obj) { String enc = encode( (Object) obj); System.out.println(enc); return enc; } public String getDocument(Integer obj) { System.out.println("String getDocument(Integer obj)"); String enc = encode( (Object) obj); System.out.println(enc); return enc; } public String getDocument() { Integer obj = new Integer(22); System.out.println( (Object) obj); String enc = encode( (Object) obj); System.out.println(enc); return enc; } private String encode(Object obj) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); baos.reset(); java.beans.XMLEncoder xmlencoder = new java.beans.XMLEncoder(new BufferedOutputStream(baos)); xmlencoder.writeObject(obj); xmlencoder.close(); return baos.toString(); } String jButton_keyPressed(KeyEvent e) { String codeRetour = (String) getDocument(new Integer(22)); System.out.println("RESULT: " + codeRetour); return codeRetour; } String this_mouseClicked(MouseEvent e) { String codeRetour = (String) getDocument(new Integer(33)); System.out.println("RESULT: " + codeRetour); return codeRetour; } } class Applethtml_jButton_keyAdapter extends java.awt.event.KeyAdapter { Applethtml adaptee; Applethtml_jButton_keyAdapter(Applethtml adaptee) { this.adaptee = adaptee; } public void keyPressed(KeyEvent e) { adaptee.jButton_keyPressed(e); } } class Applethtml_this_mouseAdapter extends java.awt.event.MouseAdapter { Applethtml adaptee; Applethtml_this_mouseAdapter(Applethtml adaptee) { this.adaptee = adaptee; } public void mouseClicked(MouseEvent e) { adaptee.this_mouseClicked(e); } } ---------------------------------------------------------------------------------------------------- htmlfile: <html> <head> <title> test_HTML</title> </head> <body>Exemple test<br> <applet codebase = "." code = "Applethtml.class" archive="Applethtml.jar" name = "AppletTest" width = "400" height = "300" hspace = "0" vspace = "0" align = "middle"> </applet> <BR> <input type="button" value="String 22" onClick="alert(AppletTest.getDocument('22'))"> <input type="button" value="Integer 22 passed by script" onClick="alert(AppletTest.getDocument(22))"> <input type="button" value="Integer 22 hardcoded in applet" onClick="alert(AppletTest.getDocument())"> </body> </html> ---------- END SOURCE ---------- ###@###.### 2004-12-06 21:12:47 GMT
|