Object / JCR repository mapping tools ------------------------------------------------
Authors : Sandro Boehme (sandro.boehme at gmx.de), Christophe Lombart (christophe.lombart at gmail.com)
Introduction --------------- The scope of the project is the mapping and the decoration of an arbitrary Java class structure to a JCR item type structure. This enables arbitrary java class models to use the functionality provided by a JCR implementation. The persistence manager class acts as a proxy for JCR-capable classes to hand over JCR functionalities from Java model objects to JCR nodes.
The intention of the project is to be data centric, to support a model driven architecture and to be very easy to use.
The data centric approach makes it easier for different applications to use the unified content provided by the repository. It is archived with the configuration file containing the mappings, decorations and the converter class name(s). Full model driven architecture will not be supported in the first step because we need more investigation for that issue. With well chosen defaults it should be possible to use the JCR funtionality with a minimum of mapping and decoration information. For the sake of an easy use it is also planned to support xdoclet and maybe annotations.
Features -----------
In short term :
- Transparent persistence: Persistent classes don't have to inherit from a persistent base class or to implement an interface.
- The Object / JCR mapping is defined in an XML Repository. Later, we plan to support JDK annotations.
- Map class names to JCR node types
- Map class attributes to node properties or subnode.
- Map class associations (eg. a page contains news) to subnode. Support any kind of collection or maps for 1-n associations.
- Lazy loading - Proxy support
- Simple query language based on the JCR query features (maybe we have to explain more how to make some queries)
- Implement an AOP cache within different cache strategies. The caching stategy is defined in the config xml file.
- pluggable node type registration for different JCR implementations
Later, we plan : - Use JDK annotation and/or xdoclet - Strong caching mechanism
Community --------------
We can expect that a lot of CMS developers will be interested by this kind of tools.
This framework gives the possibility to migrate any CMS application smoothly to the JCR technology.
Futhermore, it gives more abstraction between the content repository and the application itself.
As this project especially needs JCR knowledge, probably an indepedent
subproject of Jackrabbit using the Jackrabbit mailing list would be the perfect place. It would also be natural for a developer to look for a JCR mapping tool in the Jackrabbit project. At the moment it is hosted in the Graffito project so it will not become an orphan if it is not possible to host it in Jackrabbit ;-) .
regards,
Christophe and Sandro
