Hi Andrus,
yes, comp is a dataobject
Is the delete rule a new feature? I have to take a look, with the new
modeller then.
> Hmm... There were some changes to reverse relationship delete rules.
>
> I understand that "comp" is also a DataObject, right? What delete rule
> is set on relationship from "comp" to "compKpi"? If it is "NULLIFY",
> Cayenne will automatically remove deleted object from the to-many
> collection. And this happens at the same exact time as the iteration
> over the same collection, hence - an exception.
>
> So you may need to clone the list before iterating over it:
>
>> List compKpiList = comp.getHasKpis();
>
> becomes
>
> List compKpiList = new ArrayList(comp.getHasKpis());
>
> Andrus
>
>
>
> On Wednesday, June 4, 2003, at 04:03 AM, Martin Ruff wrote:
>
>> Hi,
>> We've just switched from cayenne-1.0b1.jar to cayenne-1.0b3.jar in our
>> application and now we do have problems with code that worked before.
>> We
>> do not know if it is a bug in our application or it is a new cayenne
>> feature.
>> for example here:
>> List compKpiList = comp.getHasKpis();
>> for (Iterator iter = compKpiList.iterator(); iter.hasNext();) {
>> CmCompKpi compKpi = (CmCompKpi) iter.next();
>> comp.getDataContext().deleteObject(compKpi);
>> }
>> comp.getDataContext().commitChanges(Level.WARN);
>>
>> we get:
>>
>> java.util.ConcurrentModificationException
>> at
>> java.util.AbstractList$Itr.checkForComodification(AbstractList.java:444
>> )
>> at java.util.AbstractList$Itr.next(AbstractList.java:421)
>> at
>> com.winterthur.cm.controller.LocalKpiManager.deleteAllCompKpi(LocalKpiM
>> anager.java:252)
>> at
>> com.winterthur.cm.view.CompetitionSaveAction.updateCompKpi(CompetitionS
>> aveAction.java:342)
>> at
>> com.winterthur.cm.view.CompetitionSaveAction.cmExecute(CompetitionSaveA
>> ction.java:176)
>> at com.winterthur.cm.app.CMBaseAction.execute(CMBaseAction.java:65)
>> at
>> org.apache.struts.action.RequestProcessor.processActionPerform(RequestP
>> rocessor.java:465)
>> at
>> org.apache.struts.action.RequestProcessor.process(RequestProcessor.java
>> :274)
>> at
>> com.winterthur.cm.app.CMRequestProcessor.process(CMRequestProcessor.jav
>> a:33)
>> at
>> org.apache.struts.action.ActionServlet.process(ActionServlet.java:1393)
>> at
>> org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:509)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:760) at
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic
>> ationFilterChain.java:247)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil
>> terChain.java:193)
>> at
>> com.winterthur.cm.utils.Principal2CmUserFilter.doFilter(Principal2CmUse
>> rFilter.java:47)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applic
>> ationFilterChain.java:213)
>> at
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFil
>> terChain.java:193)
>> at
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperVal
>> ve.java:260)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:643)
>> at
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
>> 480)
>> at
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>> at
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextVal
>> ve.java:191)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:643)
>> at
>> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticato
>> rBase.java:493)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:641)
>> at
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
>> 480)
>> at
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>> at
>> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:24
>> 15)
>> at
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.jav
>> a:180)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:643)
>> at
>> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherV
>> alve.java:170)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:641)
>> at
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.jav
>> a:172)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:641)
>> at
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
>> 480)
>> at
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>> at
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve
>> .java:174)
>> at
>> org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.
>> invokeNext(StandardPipeline.java:643)
>> at
>> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
>> 480)
>> at
>> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>> at
>> org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
>> at
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:4
>> 32)
>> at
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process
>> Connection(Http11Protocol.java:386)
>> at
>> org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:5
>> 34)
>> at
>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPoo
>> l.java:530)
>> at java.lang.Thread.run(Thread.java:536)
>>
>> We suppose that the behaviour of
>> comp.getDataContext().deleteObject(compKpi); has changed between
>> cayenne-1.0b1.jar and cayenne-1.0b3.jar, is this correct, and if so
>> what
>> is the correct use?
>> thanks for help
>> martin
>>
>>
>>
>> -------------------------------------------
>> Be the change you want to see in the world.
-------------------------------------------
Be the change you want to see in the world.
This archive was generated by hypermail 2.0.0 : Fri Jun 06 2003 - 05:01:40 EDT