Hi All
Just to keep everyone not in Munich in the loop - this morning we've been
discussing the extra data needed from the repository connector by the atom
pub server binding. (To return the cmis response as atompub, you need to
supply some extra data such as parents and dates)
In OpenCMIS at the moment, there are two SPIs, one for client side and one
for server side. On the server side, the SPI is slightly different, as an
ObjectInfo can be passed in. If passed in, the repository is alerted that
lots of extra information is required, and populates it. Downsides include
this not being OO, the need for two different SPIs (one with and one
without the extra parameter), and forcing all the work onto the repo.
In Chemistry at the moment, there is only the one SPI. The Atom Pub layer
is forced to make a large number of calls to fetch the information it
needs for its response. Downsides include lots of method calls, and not
all repos being able to cache / prefetch the required data as they don't
know in advance what's needed.
There's a proposal for a third way, where the call context is populated
with hints on what's needed. A common SPI could potentially be used to
request the data from the repo for the atompub (and ws) layer. A wrapped
object can be returned if the repo wishes to, which contains extra
information and object references. Calls will be made to fetch the extra
information as needed, but potentially they could simply grab the data out
of the wrapped object.
We're going to try to implement this third way shortly, to test to see if
it will really work or not. If it does work, the code will be committed to
svn so everyone else can review and comment.
Nick