jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Miro Walker" <miro.wal...@cognifide.com>
Subject RE: Fwd: Copy versioned nodes
Date Fri, 03 Mar 2006 11:15:15 GMT
Hi David,

While this topic is being discussed I thought I'd add something that
we've struggled with on our project. This is the fact that there is no
way to clone/merge/update a node across workspaces _without_ also taking
the node's subtree with it. Our use case is around using workspaces to
represent localised releases of the entire content structure. When
content is "published" we need to update all the localised dependent
releases with the changes in the published release. This is achieved by
comparing workspaces and "cloning" nodes that need to be updated, while
leaving (versionable) sub-nodes alone.

For example a localised release may have added some pages to a folder,
so we don't want to simply replace the entire folder node and its
sub-tree or all of these pages would be lost. However, it is possible
that the parent release has modified the folder metadata in some way
(folder name, description, etc.) - these details must be copied.

The solution we've had to use is to create an additional temporary
workspace, copy everything into it, then selectively delete / restore
nodes to get it to the state we need, and then throw away the old
workspace. Needless to say this is a very expensive process. 

Is there any way we could get an "update-without-subtree" into the API.
We'd be quite happy to write it ourselves, but I'm not sure how we could
do that given the spec is fixed...? 


-----Original Message-----
From: David Nuescheler [mailto:david.nuescheler@gmail.com] 
Sent: 03 March 2006 10:11
To: jackrabbit-dev@incubator.apache.org
Subject: Re: Fwd: Copy versioned nodes

hi thomas,

i think you may describe something in your use case that
may well be taken care of by two separate workspaces in jcr.

one would be the "live" workspace that displays a
specifically tagged version, while there may be a number of
"work-in-progress" or "user" workspaces.

you may want to use clone(), merge(), update() or
restore() to get a particular version into the "live"

this also has the effect that the nodes in the different
workspaces share the same version history.


View raw message