root / home / tseaver / obzervationz / 2005 / jsr170_doodling_20050711 Doodling with JSR-170This specification, also called "Content Repository for Java(TM) technology API", is somewhat painful to work with from within the Zope and Python world.
Created by tseaver. Last modified 2005-07-11 20:06:22. |
The spec is available here and provides some 300 pages of heavy sledding.
In particular, it is entertaining to see the hoops they have to jump through
to get "dynamic typing" working from within the shackles imposed by Java.
They devise a set of class-like type definitions (node types, property
types, even an abstract item type as a base), including subobject and
attribute specifications and constraints, and have lots of isinstance
/ issubclass
sorts of APIs among them.
Beyond the entertainment value of watching B&D language bigots reinvent loose / dynamic typing, the real reason for pursuing this API is that it promises to be a gateway for content migration. Such migration has a couple of interesting use cases:
This is basically the same set of usecases for Zope3's filesystem synchronization, with (potential) interoperability thrown in as lagniappe.
A downside: the "lossless" representation (the spec's "system view") is not any friendlier to filesystem tools than Zope's XML pickles (in fact, it is probably isomorphic with them!)
As I worked my way through it, I modeled the API as a set of Python modules,
with zope.interface
interfaces for each of the components. I have
uploaded a snapshot
and would appreciate comments from those who have also worked with the spec.
Subversion for the work is currently:
svn+ssh://svn.zope.org/specialprojects/paris/jsr170
I intend to continue experimenting with my mapping, including a couple of possible avenues: