Hi,

In an attempt to build an informed opinion about the recent package renaming proposals I started thinking about the various internal package dependencies in Jackrabbit. At least the o.a.j.core packages are quite heavily interlinked with each other.

I tried creating a semi-automated package diagram for Jackrabbit, but at least at the moment there seems to be too many interdependencies to produce a good overview diagram. The result of a fully automated run can be found at http://yukatan.fi/2005/09/jcr/jackrabbit-dependencies.png. :-)

Some immediate observations:

* Move the QName constants from o.a.j.Constants to o.a.j.name.QName to
  break the o.a.j <-> o.a.j.name dependency cycle.

* Add a BlobFileSystem property to PMContext to break the direct
  LocalFileSystem dependencies in the persistence managers.

* Move the PersistenceManager, QueryManager, etc. interfaces and
  associated component classes into one or more separate packages
  (I think this was the idea of the .api proposal)

What do you think?

BR,

Jukka Zitting

Reply via email to