Yeah, the naming is purely coincidental. The two XMLSerializables (and XMLEncoders) are not related to each other in no way. I'd say we rename the util version (I am not so sure to what though).

It is technically possible to switch DataMap (de)serialization to xml.XMLEncoder|Decoder (in fact I am using that mechanism JPA XML loading with great success), but since it works the way it is, and the DataMap format is very stable, I personally have very little motivation to touch this code. Also probably adding 'decodeFromXML' to util.XMLSerializable is not worth the trouble as this is a specialized implementation not intended for general use.

Finally to say something good about "legacy" util.XMLEncoder/ util.XMLSerializable, I really like how it works for manual encoding of a tree. It is very intuitive and has a number of helpful utility methods [1]. Not coincidentally I implemented this interface for all JPA mapping objects (even though they are not using it to load/store themselves). It is invaluable for debugging chunks of the mapping.

Andrus

[1] http://cayenne.apache.org/doc/api/org/apache/cayenne/util/ XMLEncoder.html


On Nov 4, 2007, at 4:09 AM, Aristedes Maniatis wrote:

There are two XMLSerializable interfaces. One in org.apache.cayenne.util and one in org.apache.cayenne.xml.

They are very similar but the xml package one includes decodeFromXML (XMLDecoder). CayenneDataObject is the only class which implements decodeFromXML(XMLDecoder).

On the other hand classes which implement the util version of the package instead use MapLoader to perform the decoding from XML in the form of a SAX parser.

* can we rename these interfaces so they are more different (I think one is a SAX decoder and the other DOM), or

* can CayenneMapEntry be somehow merged with XMLSerializable. They apply to different classes now but I'm not sure why. (doesn't everything in the map need to be XML serializable and everything which is serializable is in the map?), or

* should we merge the two XMLSerializable interfaces and make decodeFromXML a noop where is it not used

Ideally I'd have thought decodeFromXML() and encodeFromXML() are always nice symmetric pairs but I'm thinking this would require a change from using a SAX parser in MapLoader to using a DOM parser.

I'm just trying to understand this code as I navigate through it working on some other things.


Ari




-------------------------->
ish
http://www.ish.com.au
Level 1, 30 Wilson Street Newtown 2042 Australia
phone +61 2 9550 5001   fax +61 2 9550 4001
GPG fingerprint CBFB 84B4 738D 4E87 5E5C  5EFA EF6A 7D2E 3E49 102A



Reply via email to