tells about another open source project, alike: XMLField, and about avc-binding-yaml.

See Also

Some interesting projects to visit if you like avc-binding-dom.

See Also: XMLField

Another open source project uses the same annotation system to bind Java interfaces to XML documents (DOM): XMLField, hosted at Sourceforge's. It uses Subversion for source code management and Mantis for issue tracking.

I happened to be one of the main contributors of that project in the fall of 2010 (it was private at the time, and not called "XMLField"), and I was regularly and anxiously asking for its source to become open.

This was actually done a few months later, and was a Good Thing™.

Yet, I recently chose to create a new and similar project, for the following reasons :

  • I rather use a Distributed VCS.
  • I need to import classes from some projects of mine.
  • Mantis?… seriously, folks.
  • Still some comments are in French.
  • I am using a different type of abstraction than the original designed in XMLField so I can bind Java interfaces also to YAML streams (see below, avc-binding-yaml.)
  • I have not yet understood SLF4J.

I am also trying to bring the following:

  • Documentation through another point of view.
  • Fail-functions (see XPath Expressions.)
  • Maps.
  • Usage of Groovy to write tests (well, some day. I am used to them in some other projects.)

That said, one must consider that the XMLField project has a lot of nice features my own project doesn't have:

  • It contains many test cases; It has lived its way in many projects I guess.
  • Performances issues were raised, and were solved.
  • It allows DOM modification with setter methods. Yeah, we wrote the API that way at the very beginning :-) Naming conventions: setXxx(), addToXxx(), removeFromXxx().
  • It implements toString(), hashCode() and equals().
  • It implements all primitive types, and enums.
  • It provides static validation via annotations.
  • It instantiates a static factory from a property file in the classpath.
  • It uses Jaxen.
  • It provides caching.

See Also: avc-binding-yaml

With the same @XPath annotation as in avc-binding-dom, I started writing another tool, avc-binding-yaml, that enables binding Java interfaces to YAML streams.

There is no documentation yet, but the aim is exactly the same as for avc-binding-dom.

Note: The @Nodes annotation, which is common to both projects (it is in avc-binding-common), is specific to my parsing of YAML streams into DOM-like structures.