-
Bug
-
Resolution: Fixed
-
P3
-
1.4.0
-
None
-
beta3
-
x86
-
windows_nt
When a JTextField or any component which inherits from javax.swing.text.JTextComponent is written using the new XML encoder, an exception is thrown. The Bean is correctly serialized but the java.awt.font.TextAttributes cannot be instantiated so an exception is thrown.
This bug was introduced in merlin beta refresh 1.4 b63a as a result of the i18n fix 4300552. A reference to TextAttribute was added to both JTextComponent and AbstractDocument so the archiver could not handle the decoding of that class.
The following is the output from the attached application:
Exception thrown during serialization:
java.lang.InstantiationException: java.awt.font.TextAttribute
at java.lang.Class.newInstance0(Class.java:288)
at java.lang.Class.newInstance(Class.java:256)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Method.java:311)
at java.beans.Statement.invoke(Statement.java:424)
at java.beans.Expression.getValue(Expression.java:103)
at java.beans.Encoder.getValue(Encoder.java:86)
at java.beans.Encoder.get(Encoder.java:188)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeExpression(Encoder.java:261)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.java_util_Map_PersistenceDelegate.initialize(MetaData.java:266)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeStatement(Encoder.java:238)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:322)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:255)
at TextAttributeTest.main(TextAttributeTest.java:23)
Exception thrown during serialization:
java.lang.RuntimeException: failed to evaluate: <unbound>=TextAttribute.new();
at java.beans.Encoder.getValue(Encoder.java:90)
at java.beans.Encoder.get(Encoder.java:188)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeExpression(Encoder.java:261)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.java_util_Map_PersistenceDelegate.initialize(MetaData.java:266)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeStatement(Encoder.java:238)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:322)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:255)
at TextAttributeTest.main(TextAttributeTest.java:23)
Test Finished
This bug was introduced in merlin beta refresh 1.4 b63a as a result of the i18n fix 4300552. A reference to TextAttribute was added to both JTextComponent and AbstractDocument so the archiver could not handle the decoding of that class.
The following is the output from the attached application:
Exception thrown during serialization:
java.lang.InstantiationException: java.awt.font.TextAttribute
at java.lang.Class.newInstance0(Class.java:288)
at java.lang.Class.newInstance(Class.java:256)
at sun.reflect.GeneratedMethodAccessor7.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Method.java:311)
at java.beans.Statement.invoke(Statement.java:424)
at java.beans.Expression.getValue(Expression.java:103)
at java.beans.Encoder.getValue(Encoder.java:86)
at java.beans.Encoder.get(Encoder.java:188)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeExpression(Encoder.java:261)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.java_util_Map_PersistenceDelegate.initialize(MetaData.java:266)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeStatement(Encoder.java:238)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:322)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:255)
at TextAttributeTest.main(TextAttributeTest.java:23)
Exception thrown during serialization:
java.lang.RuntimeException: failed to evaluate: <unbound>=TextAttribute.new();
at java.beans.Encoder.getValue(Encoder.java:90)
at java.beans.Encoder.get(Encoder.java:188)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:100)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeExpression(Encoder.java:261)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.java_util_Map_PersistenceDelegate.initialize(MetaData.java:266)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.DefaultPersistenceDelegate.doProperty(DefaultPersistenceDelegate.java:222)
at java.beans.DefaultPersistenceDelegate.initBean(DefaultPersistenceDelegate.java:257)
at java.beans.DefaultPersistenceDelegate.initialize(DefaultPersistenceDelegate.java:360)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:106)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeExpression(Encoder.java:262)
at java.beans.XMLEncoder.writeExpression(XMLEncoder.java:353)
at java.beans.PersistenceDelegate.writeObject(PersistenceDelegate.java:103)
at java.beans.Encoder.writeObject(Encoder.java:57)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:252)
at java.beans.Encoder.writeObject1(Encoder.java:194)
at java.beans.Encoder.cloneStatement(Encoder.java:207)
at java.beans.Encoder.writeStatement(Encoder.java:238)
at java.beans.XMLEncoder.writeStatement(XMLEncoder.java:322)
at java.beans.XMLEncoder.writeObject(XMLEncoder.java:255)
at TextAttributeTest.main(TextAttributeTest.java:23)
Test Finished