Change Log

Version 1.5.0

July 4, 2005
This release brought to you by Wumpscut, "Evoke".

  • The framework will now correctly interpret a non-primitive attribute if the first letter was not a capital (previously, non-primitive attributes needed to have an upper case first character).
  • the framework can read and write object/attribute names using dashes between the words instead of camel case (<sales-lot></sales-lot> instead of <SalesLot></SalesLot>, for instance).
    XmlReader handles the conversion from dashed automatically for you. If you want XmlWriter to produce XML using dashed names, simple use XmlWriter.setDashedNames(true)
  • Fixed a bug (found by Kirill Grouchnikov) where non-primative attributes which were null where actually being written out. Because of limitations in the framework, only primitive attributes that are null can be serialized to XML.

Version 1.4.3

October 21, 2004
This release brought to you by Rasputina.

  • Removed limitation of an object instance not being able to be in the graph as both parent and child. For instance, if you have a class called Cheese, it could not (either directly or indirectly) have a Cheese object instance as a child of itself.

    I used to keep an instance of the current object in a Map which was grabbed each time an attribute needed to be set. The endElement() function would remove the object instance from the map. The object was created and placed in the map only when it's first attribute was set.

    Now I create the object in the startElement() function and the Map contains a collection of objects rather than just one. This will allow you to have as many instances of the same object within the graph.

    For examples of how this can work see the testSimpleChild() and testDeepChild() methods in FunctionalTestXmlReader and testSimpleParentChild() and testDeepParentChild() in FunctionTestXmlWriter.

Version 1.4.2

June 2, 2004

  • Fixed limitation where string properties could not contain &, < or > symbols - these are now converted to entity references by the String print method.

Version 1.4.1

May 28, 2004

  • Generalized collection handling in XmlWriter to support anything that implements a Collection interface (why did I limit it to Sets and Lists?!).
  • Fixed a bug in the way that reader looked up the converter for a property whose type was a collection.
  • Cleaned up the output of attributes when the beautify option of XmlWriter is set to true.
  • Added unit tests to make sure collections are working.

Version 1.4.0

May 25, 2004

  • Converters can now be defined on a per property basis.
  • Rewrote ReaderContentHandler to now use the setters in the PropertyMap objects instead of finding setters in their own way.
  • Removed default configuration file, Date and Timestamp converters are automatically configured and are available through XmlIOConfig.

Version 1.3.3

May 20, 2004

  • Added a Converter for dealing with sql Timestamp.
  • Added unit test for Date/Timestamp writing.
  • Corrected the way that specific converters which have configurable properties (like DateConverter with it's format) are handled in the system so that we don't create a new instance of them each time we do a conversion.

Version 1.3.2

May 5, 2004

  • Resolved critical error in XmlIOConfig that prevented it from loading external configuration files property.
  • Added name mappings for XmlIOConf configuration file using <config> as the root element, <object> to respresent an ObjectMap and <property> to represent a PropertyMap.

Version 1.3.1

May 4, 2004

  • Added support for outputting certain (primative) properties as attributes in the XML instead of being elements.

Version 1.3

April 23, 2004

  • Primatives and objects that map directly to primatives are now parsed from strings and written to strings using a 'converter'
  • Built in converters will handle all primatives and 'primative objects' along with a converter for the Date class. New converters can be added programatically or via an XML configuration file.
  • Converters can handle any type of object/primative
  • XML tags and attributes can be mapped to Java objects/properties which do not exactly match.
  • Setters can start with 'add' in addition to starting with 'set'.
  • All mappings (name and namespace mappings alike) are now stored in the XmlIOConfig class.
  • Singleton objects can now be created if they implement a static getInstance() method.

Version 1.2.5

December 17, 2003

  • Updated ReaderContentHandler to append strings when several calls are made to characters() for text between two <tags>
  • Fixed bug where characters() can be called more than once for a given set of characters between two tags.

Version 1.2.4

October 27, 2003

  • Will now check ALL superclasses to try to find an appropriate setter name for an object.
  • Subclass and Superclass objects may now reside in different packages.
  • Added unit test to make sure that an overloaded setter would default to the 'string' setter.
  • Small changes to work toward better 'guess setter' / 'convert value' support.

Version 1.2.3

October 20, 2003

  • ReaderContentHandler logger level is set to warn unless the system property "xmlio.debug" is set to true
  • Initial support for object/property alias mapping & property file config.
  • full package names in XML tags
  • simple namespace mappings in XmlReader
  • support for null objects using the (kludgy) <null/> tag
  • support for using a setter name higher up the hierarchary than the immediate superclass
  • a superclass can exist in a different package from it's subclasses
  • 'getters' can now start with 'is' rather than needing to start with 'get'
  • Fixed bug with Empty object unmarshalling.

Version 1.2.2

October 14, 2003

  • Added support for primative boolean and Boolean object properties.
  • Added support for multiple packages. Objects must no longer all be in the same package.

Version 1.2.1

October 7, 2003

  • Now using XMLUnit to compare results with expected XML in XmlWriter functional tests.
  • Support for arrays complements the existing support for Lists.

Version 1.2.0

September 23, 2003

  • Moved to JDK logging.
  • Played around with using JAX-B interfaces. Eventually I abandoned them and returned to my old interfaces.

Version 1.1

May 6, 2003

  • Removed dependancy on Xerces; the framework now uses JAXP.

Version 1.0

March 8, 2003

Overview
Initial public release.

  • Initial release to the public.