Hi Stefan,
the correct beahviour should be:
s0 : Read the rootNode
s1 : Read the rootNode
s0 : Modify rootNode : remove testnode-s0
s1 : Modify rootNode : remove testnode-s1 & save() -->ERROR the rootNode
there should be no error at this point, s0 has not been saved yet.
s0 : save()
now there should be an error since s1 saved its state before
s1 : save() -->InvalidItemStateException since the root node has been externally
modifiied (by s0) is has s1's 'copy' has become stale as a result
I dont think that here should be an error, since the last saved
(commited) version of the rootNode is from s1 and the changes from s0
has not been valid and not commited. so the nodes state has not changed.
we'll fix that asap.
Thanks for the discussion. Now I unterstand jackrabbits way of doing.
But in my opinion adding child nodes should not alter the parent node
itself. Just changing some properties is a state change.
Furthermore there should be an error just in the case, that both updates
overwrite the changes of the other -> to prevent lost update problems.
In my example code it´s not the case, so I would prefer no error at all.
What do you think?
cheers,
Walter