Exceptions are thrown when XMLEncoding JTextComponents

XMLWordPrintable

    • Type: Bug
    • Resolution: Fixed
    • Priority: P3
    • 1.4.0
    • Affects Version/s: 1.4.0
    • Component/s: client-libs
    • 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

            Assignee:
            Mark Davidson (Inactive)
            Reporter:
            Mark Davidson (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: