jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Rauschenbach (JIRA)" <j...@apache.org>
Subject [jira] Closed: (JCR-1122) JCR2SPI Node.addMixin ignored and not added to ChangeLog
Date Fri, 14 Sep 2007 05:36:32 GMT

     [ https://issues.apache.org/jira/browse/JCR-1122?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

David Rauschenbach closed JCR-1122.

    Resolution: Cannot Reproduce

I just noticed that I cannot reproduce this problem from the command-line. It only fails from
within Eclipse. Therefore I have some sort of other issue interfering.

> JCR2SPI Node.addMixin ignored and not added to ChangeLog
> --------------------------------------------------------
>                 Key: JCR-1122
>                 URL: https://issues.apache.org/jira/browse/JCR-1122
>             Project: Jackrabbit
>          Issue Type: Bug
>          Components: SPI
>    Affects Versions: 1.4
>            Reporter: David Rauschenbach
> The Node.addMixin(String) method does not result in any state change being recorded.
A subsequent save then becomes a noop, because there are no affected nodes.
> The addMixin method is called on an existing node that does not yet contain a jcr:mixinTypes
property, so SessionItemStateManager performs addPropertyState, and then performs nState.markModified().
> When rootNode (parent of the node used above) save() is called, getItemState() is immediately
called by save, and returns state.status = Status.EXISTING. However there are pending changes,
so save falls through and calls getChangeLog, which returns an empty log because NodeEntryImpl.collectStates
returns nothing, because getAllChildEntries also returns nothing, not even a propertyEntry
for the new transient jcr:mixinTypes property.
> Test code:
> 		final String NODE = "testNode";
> 		Session serverSession = login(repository, creds);
> 		Node serverRootNode = serverSession.getRootNode();
> 		Node serverNode = serverRootNode.addNode(NODE, "nt:unstructured");
> 		serverSession.save();
> 		assertEquals(0, serverNode.getMixinNodeTypes().length);
> 		Session clientSession = login(clientRepository, creds);
> 		Node clientNode = clientSession.getRootNode().getNode(NODE);
> 		clientNode.addMixin("mix:referenceable"); <== Doesn't mark anything modified
> 		clientSession.save(); <== Does nothing
> 		serverNode.refresh(false);
> 		assertEquals(1, serverNode.getMixinNodeTypes().length); <== fails
> I'm using an 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.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message