Hi,
the big and evil XMLEncoder patch is finally ready for the public. :)

First the good news: It works and behaves in many ways like the JDK.

And the bad one: There is an evil problem with object references. These
happen when you write an object twice or more to the stream. It is fine if
you do this explicitly, eg.

        o = new Object();
        encoder.writeObject(o);
        encoder.writeObject(o);

But when it happens as part of the encoding process:
        o = new Object();
        map = new HashMap();
        map.put("bla", o);

        encoder.writeObject(o);
        encoder.writeObject(map);

Then the object reference wont show up.

I know this is evil and should be fixed. But this isnt as easy as it sound
because the reason the object does not show up as a reference is because the
encoder thinks it has been processed already. But if you change the code that
controls this you will run into and endless recursion.

I explain this in a bug report later and then I hope I wake up one morning and
have the brilliant idea to fix this ... or someone else. :)

Here is the ChangeLog:

2006-01-05  Robert Schuster  <[EMAIL PROTECTED]>

        * java/beans/Statement.java: Doc fixes.
        (doExecute): Workaround for Class.forName call.
        (toString): Made output look more like on the JDK.
        * java/beans/Expression.java: Doc fixes.
        (toString): Made output look more like on the JDK.
        * java/beans/PersistenceDelegate.java,
        java/beans/DefaultPersistenceDelegate.java,
        java/beans/Encoder.java,
        java/beans/XMLEncoder.java: New file.
        * gnu/java/beans/encoder/ArrayPersistenceDelegate.java,
        gnu/java/beans/encoder/ClassPersistenceDelegate.java,
        gnu/java/beans/encoder/CollectionPersistenceDelegate.java,
        gnu/java/beans/encoder/Context.java,
        gnu/java/beans/encoder/GenericScannerState.java,
        gnu/java/beans/encoder/IgnoringScannerState.java,
        gnu/java/beans/encoder/MapPersistenceDelegate.java,
        gnu/java/beans/encoder/ObjectId.java,
        gnu/java/beans/encoder/PrimitivePersistenceDelegate.java,
        gnu/java/beans/encoder/ReportingScannerState.java,
        gnu/java/beans/encoder/Root.java,
        gnu/java/beans/encoder/ScanEngine.java,
        gnu/java/beans/encoder/ScannerState.java,
        gnu/java/beans/encoder/StAXWriter.java,
        gnu/java/beans/encoder/Writer.java: New file.
        * gnu/java/beans/encoder/elements/Array_Get.java,
        gnu/java/beans/encoder/elements/Element.java,
        gnu/java/beans/encoder/elements/List_Set.java,
        gnu/java/beans/encoder/elements/Array_Set.java,
        gnu/java/beans/encoder/elements/NullObject.java,
        gnu/java/beans/encoder/elements/StaticMethodInvocation.java,
        gnu/java/beans/encoder/elements/StaticFieldAccess.java,
        gnu/java/beans/encoder/elements/StringReference.java,
        gnu/java/beans/encoder/elements/ClassResolution.java,
        gnu/java/beans/encoder/elements/ArrayInstantiation.java,
        gnu/java/beans/encoder/elements/PrimitiveInstantiation.java,
        gnu/java/beans/encoder/elements/ObjectReference.java,
        gnu/java/beans/encoder/elements/ObjectInstantiation.java,
        gnu/java/beans/encoder/elements/List_Get.java,
        gnu/java/beans/encoder/elements/MethodInvocation.java: New file.

The patch is 189kB in plain text, thats why it is compressed. :)

cya
Robert

Attachment: beans-xmlencoder.diff.tar.gz
Description: GNU Zip compressed data

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Classpath-patches mailing list
Classpath-patches@gnu.org
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to