You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by Apache <ap...@ss78.shared.server-system.net> on 2006/02/14 11:42:05 UTC

ConcurrentModificationException

Hi!

I got a page with a list of objects and a listener for deleting a object. After deleting a obejct I get the following exception:

--------------------------------------------------
org.apache.hivemind.ApplicationRuntimeException
location: 
java.util.ConcurrentModificationException
    *  java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
    * java.util.AbstractList$Itr.next(AbstractList.java:420)
    * org.apache.tapestry.components.Foreach.renderComponent(Foreach.java:99)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
    * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
    * org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:564)
    * org.apache.tapestry.form.Form.renderComponent(Form.java:226)
    * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
    * org.apache.tapestry.form.Form.rewind(Form.java:327)
    * org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:439)
    * org.apache.tapestry.form.Form.trigger(Form.java:338)
    * org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146)
    * org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
    * $IEngineService_10967f5b166.service($IEngineService_10967f5b166.java)
    * org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
    * org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
    * org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
    * $WebRequestServicer_10967f5b144.service($WebRequestServicer_10967f5b144.java)
    * $WebRequestServicer_10967f5b140.service($WebRequestServicer_10967f5b140.java)
    * org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
    * $ServletRequestServicer_10967f5b124.service($ServletRequestServicer_10967f5b124.java)
    * org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
    * $ServletRequestServicerFilter_10967f5b120.service($ServletRequestServicerFilter_10967f5b120.java)
    * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
    * org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
    * $ServletRequestServicerFilter_10967f5b11e.service($ServletRequestServicerFilter_10967f5b11e.java)
    * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
    * org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
    * $ServletRequestServicerFilter_10967f5b122.service($ServletRequestServicerFilter_10967f5b122.java)
    * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
    * $ServletRequestServicer_10967f5b118.service($ServletRequestServicer_10967f5b118.java)
    * org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
    * org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:168)
    * javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
    * javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    * org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    * org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
    * org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    * org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    * org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    * org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    * org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    * org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    * org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    * org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    * org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
    * org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
    * org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    * org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    * org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    * java.lang.Thread.run(Thread.java:595)
--------------------------------------------------

My code for deleting is:
--------------------------------------------------
public void deleteAktion(Integer aktionPK1, Integer gewichtPK2) {
    log.debug("deleting AktionPK1="+ aktionPK1 +" GewichtPK2="+ gewichtPK2);
    Aktion temp = null;
    boolean found = false;
    for(int i = 0; i < aktionen.size() && !found; i++) {
        temp = aktionen.get(i);
        if(temp.getAktionPK1().equals(aktionPK1) &&
                temp.getGewichtPK2().equals(gewichtPK2)) {
            found = true;
            aktionen.remove(i);
        }
    }
    Aktion dbAktion = this.getDAO().getAktion(aktionPK1, gewichtPK2); 
    if(dbAktion != null) this.getDAO().deleteAktion(dbAktion);
}
--------------------------------------------------

Does anybody know what the problem is?


Alex.


-------------------- m2f --------------------

Sent from www.TapestryForums.com

Read this topic online here: <<topic_link>>

http://www.tapestryforums.com/viewtopic.php?p=14413#14413

-------------------- m2f --------------------



Re: ConcurrentModificationException

Posted by Ron Piterman <rp...@gmx.net>.
you can not change a collection from inside an iteration of the same.
use action parameters instead of listener, that will usually do the 
trick ( you have to pass a parameter though...)
Cheers,
Ron


Apache wrote:
> Hi!
> 
> I got a page with a list of objects and a listener for deleting a object. After deleting a obejct I get the following exception:
> 
> --------------------------------------------------
> org.apache.hivemind.ApplicationRuntimeException
> location: 
> java.util.ConcurrentModificationException
>     *  java.util.AbstractList$Itr.checkForComodification(AbstractList.java:449)
>     * java.util.AbstractList$Itr.next(AbstractList.java:420)
>     * org.apache.tapestry.components.Foreach.renderComponent(Foreach.java:99)
>     * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>     * org.apache.tapestry.AbstractComponent.renderBody(AbstractComponent.java:434)
>     * org.apache.tapestry.form.FormSupportImpl.rewind(FormSupportImpl.java:564)
>     * org.apache.tapestry.form.Form.renderComponent(Form.java:226)
>     * org.apache.tapestry.AbstractComponent.render(AbstractComponent.java:617)
>     * org.apache.tapestry.form.Form.rewind(Form.java:327)
>     * org.apache.tapestry.engine.RequestCycle.rewindForm(RequestCycle.java:439)
>     * org.apache.tapestry.form.Form.trigger(Form.java:338)
>     * org.apache.tapestry.engine.DirectService.triggerComponent(DirectService.java:146)
>     * org.apache.tapestry.engine.DirectService.service(DirectService.java:132)
>     * $IEngineService_10967f5b166.service($IEngineService_10967f5b166.java)
>     * org.apache.tapestry.services.impl.EngineServiceOuterProxy.service(EngineServiceOuterProxy.java:66)
>     * org.apache.tapestry.engine.AbstractEngine.service(AbstractEngine.java:248)
>     * org.apache.tapestry.services.impl.InvokeEngineTerminator.service(InvokeEngineTerminator.java:60)
>     * $WebRequestServicer_10967f5b144.service($WebRequestServicer_10967f5b144.java)
>     * $WebRequestServicer_10967f5b140.service($WebRequestServicer_10967f5b140.java)
>     * org.apache.tapestry.services.impl.WebRequestServicerPipelineBridge.service(WebRequestServicerPipelineBridge.java:56)
>     * $ServletRequestServicer_10967f5b124.service($ServletRequestServicer_10967f5b124.java)
>     * org.apache.tapestry.request.DecodedRequestInjector.service(DecodedRequestInjector.java:55)
>     * $ServletRequestServicerFilter_10967f5b120.service($ServletRequestServicerFilter_10967f5b120.java)
>     * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
>     * org.apache.tapestry.multipart.MultipartDecoderFilter.service(MultipartDecoderFilter.java:52)
>     * $ServletRequestServicerFilter_10967f5b11e.service($ServletRequestServicerFilter_10967f5b11e.java)
>     * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
>     * org.apache.tapestry.services.impl.SetupRequestEncoding.service(SetupRequestEncoding.java:53)
>     * $ServletRequestServicerFilter_10967f5b122.service($ServletRequestServicerFilter_10967f5b122.java)
>     * $ServletRequestServicer_10967f5b126.service($ServletRequestServicer_10967f5b126.java)
>     * $ServletRequestServicer_10967f5b118.service($ServletRequestServicer_10967f5b118.java)
>     * org.apache.tapestry.ApplicationServlet.doService(ApplicationServlet.java:123)
>     * org.apache.tapestry.ApplicationServlet.doPost(ApplicationServlet.java:168)
>     * javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
>     * javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
>     * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
>     * org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     * org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
>     * org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
>     * org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
>     * org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
>     * org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>     * org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
>     * org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
>     * org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
>     * org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
>     * org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
>     * org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:868)
>     * org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:663)
>     * org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
>     * org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
>     * org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
>     * java.lang.Thread.run(Thread.java:595)
> --------------------------------------------------
> 
> My code for deleting is:
> --------------------------------------------------
> public void deleteAktion(Integer aktionPK1, Integer gewichtPK2) {
>     log.debug("deleting AktionPK1="+ aktionPK1 +" GewichtPK2="+ gewichtPK2);
>     Aktion temp = null;
>     boolean found = false;
>     for(int i = 0; i < aktionen.size() && !found; i++) {
>         temp = aktionen.get(i);
>         if(temp.getAktionPK1().equals(aktionPK1) &&
>                 temp.getGewichtPK2().equals(gewichtPK2)) {
>             found = true;
>             aktionen.remove(i);
>         }
>     }
>     Aktion dbAktion = this.getDAO().getAktion(aktionPK1, gewichtPK2); 
>     if(dbAktion != null) this.getDAO().deleteAktion(dbAktion);
> }
> --------------------------------------------------
> 
> Does anybody know what the problem is?
> 
> 
> Alex.
> 
> 
> -------------------- m2f --------------------
> 
> Sent from www.TapestryForums.com
> 
> Read this topic online here: <<topic_link>>
> 
> http://www.tapestryforums.com/viewtopic.php?p=14413#14413
> 
> -------------------- m2f --------------------
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-user-help@jakarta.apache.org