jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bilobag <bilo...@hotmail.com>
Subject Re: Node remove. Removing reference property problem.
Date Thu, 12 Jul 2007 15:07:56 GMT

So after some more research I realized that it is throwing an exception
because for some reason jackrabbit is calling
SharedItemStateManager.getNodeReferences() to find a reference to one of the
version history nodes.  Now it looks like it checks the persistent manager
first and then checks the virtual providers for a reference to this version
node.  Now, I am using an oracle db for my persistent mgr and when I check
the REFS table, there are no rows in there.  I know versionable nodes
contains reference properties, but it seems like they aren't stored in the
database REFS table.  Is this correct?  So this error occurs when i try to
remove my ng:file node which is versionable and contains an nt:resource
property.  To me, it looks like either my repository isn't storing the node
references in the db or virtual providers when i add the node, or when i
remove the ng:file node, the references get deleted and for some reason
jackrabbit tries to access them after they are deleted and can not save. 
Please advise, i have been looking at this for days now.  Thanks.



bilobag wrote:
> 
> Hi have defined the following custom node:
> 
> [ng:file] > ng:content,  mix:versionable
> 	orderable
>  -	ng:filename	(string)		mandatory
>  - 	ng:filesize	(long)
>  + 	jcr:content		(nt:resource)	primary mandatory
>  + * (ng:comment) = ng:comment multiple version 
> 
> 
> I have successfully added a ng:file node with a jcr:content file as a
> reference property.  However, when call the following code:
> 
> 
> Node jcrNode = getJcrDAO().getNodeByUUID(uuid);
> jcrNode.remove();
> getJcrDAO().save();
> 
> 
> I get the following exception on the save:
> 
> 
> org.apache.jackrabbit.core.state.NoSuchItemStateException:
> 09d25013-044a-47bd-95bf-98b722a33dc6
> 	at
> org.apache.jackrabbit.core.state.SharedItemStateManager.getNodeReferences(SharedItemStateManager.java:332)
> 	at
> org.apache.jackrabbit.core.state.SharedItemStateManager.updateReferences(SharedItemStateManager.java:1317)
> 	at
> org.apache.jackrabbit.core.state.SharedItemStateManager$Update.begin(SharedItemStateManager.java:550)
> 	at
> org.apache.jackrabbit.core.state.SharedItemStateManager.beginUpdate(SharedItemStateManager.java:825)
> 	at
> org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedItemStateManager.java:855)
> 	at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:326)
> 	at
> org.apache.jackrabbit.core.state.XAItemStateManager.update(XAItemStateManager.java:313)
> 	at
> org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemStateManager.java:302)
> 	at
> org.apache.jackrabbit.core.state.SessionItemStateManager.update(SessionItemStateManager.java:306)
> 	at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1214)
> 	at org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:849)
> 	at org.springmodules.jcr.JcrTemplate$23.doInJcr(JcrTemplate.java:461)
> 	at org.springmodules.jcr.JcrTemplate.execute(JcrTemplate.java:76)
> 	at org.springmodules.jcr.JcrTemplate.save(JcrTemplate.java:456)
> 	at org.bmpcoe.cwe5.dao.impl.JcrBaseDAO.save(JcrBaseDAO.java:138)
> 	at
> org.bmpcoe.cwe5.service.impl.NodeServiceImpl.removeNode(NodeServiceImpl.java:87)
> 	at
> org.bmpcoe.cwe5.webapp.action.TestPageBean.getTestGetFile(TestPageBean.java:243)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> 	at java.lang.reflect.Method.invoke(Unknown Source)
> 	at com.sun.el.parser.AstValue.invoke(AstValue.java:157)
> 	at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:283)
> 	at
> com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
> 	at
> com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:69)
> 	at
> org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
> 	at javax.faces.component.UICommand.broadcast(UICommand.java:109)
> 	at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.processEvents(AjaxViewRoot.java:180)
> 	at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:158)
> 	at
> org.ajax4jsf.framework.ajax.AjaxViewRoot.processApplication(AjaxViewRoot.java:329)
> 	at
> org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
> 	at
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
> 	at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
> 	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:61)
> 	at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96)
> 	at
> org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
> 	at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.springmodules.jcr.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:93)
> 	at
> org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:77)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
> 	at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
> 	at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
> 	at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
> 	at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
> 	at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> 	at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
> 	at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
> 	at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
> 	at
> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
> 	at
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
> 	at
> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
> 	at
> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
> 	at java.lang.Thread.run(Unknown Source)
> 
> 
> Now, i assumed that when i remove the ng:file node, that the jcr:content
> reference property would also be removed.  Is this correct?  Do I need to
> remove the reference property first?  If so, what is the reasoning behind
> this?  The exception i get points to a process that checks the state of
> the repository, but for some reason it can't find the jcr:content
> reference node property.  Is this because I just removed it?  If so, why
> is it trying to get a reference to it.  Any help is appreciated.  Thanks.
> 
> 
> 

-- 
View this message in context: http://www.nabble.com/Node-remove.--Removing-reference-property-problem.-tf4062111.html#a11562103
Sent from the Jackrabbit - Dev mailing list archive at Nabble.com.


Mime
View raw message