I've created a new 'federation' branch where the development of the
federation engine, connector framework, caching system, and unified
graph will be done. If you have time, please check out the SPI for
the connector and the graph API. (This is still incomplete, but
hopefully you see where it's going.)
The RepositoryConnector interface has a single "execute" method that
takes a RepositoryCommand, and there are several types of commands.
This makes it easy for us to add new functionality without breaking
the API, and if we do it correctly, connectors can ignore commands
they don't know about. There are three existing commands
(GetPropertiesCommand, GetChildrenCommand, and GetNodeCommand, which
extends the first two), while others might include: SearchCommand,
CreateNodeCommand, DeleteNodeCommand, etc. To make things easier for
connector implementors, we'll probably want to have a visitor
framework that makes it easy to implement behavior for different types
of commands (and inherit no-op methods for behavior that a connector
doesn't care about).
The graph SPI currently has definitions for qualified names, paths,
property types, property values, and factories for some of these.
We'll eventually add nodes, graphs, and some notion of versioning.
The idea is that this SPI provides the different services with a basic
graph language with versioning support. One implementation of these
interfaces will sit on top of the cached and integrated/federated
graph, and will be used by the sequencing system, analyzer service,
reporting service, and view service. This implementation will also be
used by our implementation of the JCR API and (potentially) an
implementation of the UDDI API.
Caching should be for the most part transparent to the users of the
SPI, but we'll start with using JBoss Cache. Ideally, I'd like other
caching systems to be pluggable (as people seem to have almost a
religious preference for one caching library over the others).
As for connectors, for 0.2 we're currently planning a file system
connector that exposes the contents of a directory as nt:file and
nt:folder nodes (
http://jira.jboss.org/jira/browse/DNA-34), a
connector to another JCR repository (
http://jira.jboss.org/jira/browse/DNA-39
), and a connector to SVN or other SCM systems (
http://jira.jboss.org/jira/browse/DNA-36
).
Please log comments or suggestions for the connector API on
http://jira.jboss.org/jira/browse/DNA-68
and the generic graph API on
http://jira.jboss.org/jira/browse/DNA-67.
Regards,
Randall