[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] RFC: XMLEncoder and related infrastructure
From: |
Robert Schuster |
Subject: |
[cp-patches] RFC: XMLEncoder and related infrastructure |
Date: |
Thu, 05 Jan 2006 20:35:02 +0100 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; de-AT; rv:1.7.12) Gecko/20051208 |
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 <address@hidden>
* 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
beans-xmlencoder.diff.tar.gz
Description: GNU Zip compressed data
signature.asc
Description: OpenPGP digital signature
- [cp-patches] RFC: XMLEncoder and related infrastructure,
Robert Schuster <=