jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Rauschenbach <dav...@imap.cc>
Subject Re: JCR2SPI Node.remove causes ConstraintVE("ChangeLog not self-contained")
Date Fri, 14 Sep 2007 15:39:54 GMT
My problem went away after freshening my jars from a fresh trunk build. I
think I caused this problem with mismatched jar files. If so, sorry for
wasting anyone's time.

David




On 9/14/07 4:40 AM, "Marcel Reutegger" <marcel.reutegger@gmx.net> wrote:

> that's very strange. does this also happen if you connect jcr2spi directly
> with 
> spi2jcr without your intermediary layer?
> 
> regards
>   marcel
> 
> David Rauschenbach wrote:
>> My removeNodeTest doesn't seem to want to work through jcr2spi. When I
>> remove a node and save its parent, jcr2spi ChangeLog throws
>> ConstraintViolationException("ChangeLog is not self contained"), because:
>> 
>> 1. opStates (returned by op.getAffectedItemStates()) contains two entries:
>> 
>> 1a. Status.EXISTING_REMOVED of the node being removed
>> 1b. Status.EXISTING_MODIFIED of its parent, the root node.
>> 
>> whereas
>> 
>> 2. affectedStates contains only one entry:
>> 
>> 2a. Status.EXISTING_MODIFIED of the root node
>> 
>> Any idea why the affectedStates var would only contain the one entry, not
>> both? Maybe some metadata drives that?
>> 
>> I'm using a web service SPI I implemented, in conjunction with the jcr2spi
>> and spi2jcr bridges, coupled with a back-end Jackrabbit in-memory
>> filesystem. So there's always the possibility that node or property SPI
>> calls inject errors and cause this downstream problem.
>> 
>> Here's my invoking code;
>> 
>>> final String NODE = "block";
>>> 
>>> Session serverSession = login(repository, creds);
>>> Node serverRootNode = serverSession.getRootNode();
>>> assertFalse(serverRootNode.hasNode(NODE));
>>> Node serverNode = serverRootNode.addNode(NODE, "nt:folder");
>>> serverSession.save();
>>> assertTrue(serverRootNode.hasNode(NODE));
>>> 
>>> Session clientSession = login(clientRepository, creds);
>>> Node clientRootNode = clientSession.getRootNode();
>>> Node clientNode = clientRootNode.getNode(NODE);
>>> clientNode.remove();
>>> clientRootNode.save();  <== THROWS "ChangeLog is not self contained"
>>> 
>>> serverSession.refresh(false);
>>> assertFalse(serverRootNode.hasNode(NODE));
>> 
>> Thanks
>> 
>> 
>> 
> 



Mime
View raw message