Hello everybody,

I have a problem when retrieving childnodes from a frozen node. When I first 
add the childnodes and then make a checkin with the parent node, everything is 
fine. When I then checkout the parent node, change something on the childnodes 
and checkin the parent again, I get ItemNotFoundExceptions when trying to read 
something (propertys or childnodes) from the second version of the frozen 
parent node. 

Caused by: javax.jcr.ItemNotFoundException: failed to build path of 
72530f73-9d5d-4a2b-832a-0109320b95dc: 0f1ecab6-c3a8-436a-b66e-648b29e661ad has 
no child entry for 72530f73-9d5d-4a2b-832a-0109320b95dc
                at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:289)
                at 
org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:195)
                at 
org.apache.jackrabbit.core.HierarchyManagerImpl.buildPath(HierarchyManagerImpl.java:278)
                at 
org.apache.jackrabbit.core.CachingHierarchyManager.buildPath(CachingHierarchyManager.java:195)
                at 
org.apache.jackrabbit.core.HierarchyManagerImpl.getPath(HierarchyManagerImpl.java:393)
                at 
org.apache.jackrabbit.core.CachingHierarchyManager.getPath(CachingHierarchyManager.java:229)
                at 
org.apache.jackrabbit.core.ItemImpl.getPrimaryPath(ItemImpl.java:213)
                at 
org.apache.jackrabbit.core.NodeImpl.getPrimaryPath(NodeImpl.java:3240)
                at 
org.apache.jackrabbit.core.ItemImpl.getPath(ItemImpl.java:1271)


This is basically the main code I want to run:
                        
                        Node elementNode = 
session.getNodeByUUID(entity.getUuid());
                        
                        if (elementNode == null) {
                             return null;      
                        }

                      VersionHistory history = elementNode.getVersionHistory();
                      VersionIterator it = history.getAllVersions();
                      //Skip RootVersion
                      it.skip(1);
                      while(it.hasNext()) {
                        Version version = it.nextVersion();

                        NodeIterator nodeIterator = 
version.getNodes("jcr:frozenNode");

                      
                        ContentMapper contentMapper = cmf.createInstance(qType);
                        
                        while (nodeIterator.hasNext()) {
                              Node node = nodeIterator.nextNode();
                              jcrElements.add(contentMapper.map(node, 
ContentLoading.NONE));
                        }   
                      }

The ContentMappers make something similiar to the OCM Framework – they convert 
jcrnodes to business entities. When I try to access child informations in the 
last expression, the exception above is thrown. This is only the case with the 
second version of the elementNode (that is after first checkingout the version 
after the rootVersionNode).

The code for saving the second version is the following:

                node.checkout();
                saveAttributes(node, businessEntity);
                mergeAssociations(session, node, businesEntity);
                node.save();
                node.checkin();

Any advices?

Best Regards

Stephan Eichmann

-- 
GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate und Telefonanschluss
für nur 17,95 Euro/mtl.!* http://portal.gmx.net/de/go/dsl02

Reply via email to