The following is a list of items that need to be completed in
Betwixt. Contributions are welcome!
Add strategy documentation.
This needs to be added to the main documentation.
Example code needs to be created.
This code can also be used for more test cases.
Add description of digester-related limitation to FAQ
Create DTD for .betwixt files.
Add XMLIntrospector Setting Documentation.
Add documentation about the XMLIntrospector settings to main documentation.
Make sure that warnings are added about consequences of changing settings.
Add XMLRegistry documentation.
Add documentation about XMLRegistry to main documentation.
Improve Java Docs.
Go through java docs, add any which are missing, correct any mistakes etc.
Test Against Powered By Projects.
Make sure release works with maven and scarab.
BeanWriter is writing too sloppy (empty elements, etc). Fixing it in a clean way
is almost impossible.
Probably a refactor is best anyway to have a less "sloppy" api..
Get an overview of what .betwixt files should really do.
Especially more complicated examples will cause very strange and unexpected results.
If an addFoo() method is found with no matching getFoos() then a warning should be generated.
Consider allowing the parsing of XML to order the properties/elements in the XMLBeanInfo
so that when the XML is output again it follows the same XML ordering again.
There is an example describing this
For example we could add a feature to parse the DTD and order the XMLBeanInfo according to the order in the DTD.
Improved documentation! Improve package level documentation so that new developers can get up
to speed more quickly. Ensure all betwixt features have good user documentation.
More good code examples.
Add support for IDREF's to BeanReader. At the moment, round tripping break when cycles exist.
Add testcase for the BeanReader(SAXParser) and BeanReader(XMLReader). They should behave
the same in all cases.
Create test cases based on real xml examples.
This should help to shake out any problems and help to find out how the design can be improved.
These should also be used as a basis for improved documentation.
Improve internal design.
Betwixt is hard to understand and hard to create patches for.
An improved internal design would help more people to contribute.
Improve test coverage.
Run test coverage tool and improve coverage of key functionality.
Allow customization for update from .betwixt file
Add updater attribute that allows the updater to be specified for an elements.
This should also allow updaters to be ignored for certain properties.
Handle empty elements better.
Add option not to write empty elements. This is required to correctly write some kinds of xml.
The RSS full round tripping will only work with this functionality.
Create design documentation
This will help people understand the betwixt design.
Add verification for all xml writing tests.
At the moment, most of the xml writing tests do not test the output fully.
Need to add comparisons against reference xml documents.
Improve mapping for swing components
Swing classes have lots and lots of properties.
Java 1.4 does a better job of persistance than betwixt for class that have lots of properties.
Binary Data Elements
Some properties should not be treated as beans and therefore mapped to a element graph.
These should be converted to body text of binary data.
A mechanism similar to BeanUtils.ConvertUtils might work.
For example, if you have a colormodel that get's written (an array with a lot of
numbers and an xml-element per array element) betwixt will spend ages converting
it bit by bit.
Improved Support For Interfaces
Customizable ID/IDREF Mapping
Add per element customization for ID/IDREF mappings.
Extra attributes will be added to .betwixt file that specify the ID/IDREF names.
Create a W3C DOM implementation that acts as a facade on top of beans to allow beans to
be transformed in XSLT engines as XML.
Add support for custom class loaders. Probably this means adding a classloader property
and then ensuring all class creation uses that.
The digestion rules which create the
files should use the
classloader property which should
be set by the
Improve integration with digester. At the moment, bean reading is all or nothing. You
either use betwixt to do everything or you use digester to specify rules. It'd be nice
to be able to mix and match.
Create utility methods in BeanWriter to write stuff like prologs and doctype definitions to the
Create a funky image for the betwixt home page.
Using \n as default and now shows a warning when an invalid space character is used.
Adding a check to only accept valid characters as lineEndings, so parsers actually won't choke on the output xml.
BeanWriter should have a setEndOfLine() method to allow configurable EOL strings, defaulting to "\n"
Create a SAXWriter class in the io package that takes a bean and writes to a SAX ContentHandler
rather that outputting textual XML like BeanWriter does.
This will allow Betwixt to work nicely in XML pipelining environments like Cocoon and Jelly.
digester.peek() was giving warning. Now checking if it still has something to peek.
Currently betwixt causes digester to output a warning '[WARN] Digester - -Empty stack (returning null)'.
We should patch the way betwixt uses digester to avoid this warning message.