Ah OK, thanks Woonsan. That's how I will handle it then.

I was enticed by the documentation to believe that it might be easier.
https://docs.adobe.com/docs/en/spec/jsr170/javadocs/jcr-2.0/javax/jcr/Workspace.html#copy(java.lang.String,%20java.lang.String)
"When a node N is copied to a location where a node N' already exists, the 
repository may either immediately throw an ItemExistsException or attempt to 
update the node N' by selectively replacing part of its subgraph with a copy of 
the relevant part of the subgraph of N. If the node types of N and N' are 
compatible, the implementation supports update-on-copy for these node types and 
no other errors occur, then the copy will succeed. Otherwise an 
ItemExistsException is thrown."

In practice it is probably better to have control over what is being copied, 
which I guess is what the implementers decided.


Harold Putman


________________________________
From: Woonsan Ko <woon...@apache.org>
Sent: Tuesday, April 23, 2019 9:25 AM
To: users@jackrabbit.apache.org
Subject: Re: Copy over an existing node

On Tue, Apr 23, 2019 at 4:54 AM Harold Putman <harold.put...@lexmark.com> wrote:
>
> I want to copy a source node over a destination node that already exists.
> If I just do
>     workspace.copy(sourcePath, targetPath);
> I get an ItemExistsException.
> I was hoping to  create a new version by
>    VersionManager vm = workspace.getVersionManager();
>    vm.checkout(targetPath);
>    workspace.copy(sourcePath, targetPath);
>    vm.checkin(targetPath);
> but still I get a ItemExistsException.
>
> What is the right way to do this?

Iterating properties and child nodes of the source node and copy each
of those to the target node?
Copying properties is quite straightforward.
'Copying child nodes' is probably your requirement specific.
Sometimes, I removed child nodes first and add new ones. Or sometimes
I resolve the mapping child nodes somehow and copy the properties if
found, etc.

Regards,

Woonsan

>
>
> Harold Putman

Reply via email to