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
beans-xmlencoder.diff.tar.gz
Description: GNU Zip compressed data
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Classpath-patches mailing list Classpath-patches@gnu.org http://lists.gnu.org/mailman/listinfo/classpath-patches