Thank you very much. So, I suppose I don't need to open an issue anymore ?
----- Message d'origine ---- De : Matthias Wessendorf <[EMAIL PROTECTED]> À : user@shale.apache.org Envoyé le : Dimanche, 21 Janvier 2007, 23h40mn 24s Objet : Re: [Shale view 1.0.4] fixed already in current trunk (see svn commit: r497775) or http://svn.apache.org/viewvc/shale/framework/trunk/shale-view/src/main/java/org/apache/shale/view/faces/ViewPhaseListener.java?view=diff&r1=497774&r2=497775&pathrev=497775 thx, Matt On 1/21/07, Craig McClanahan <[EMAIL PROTECTED]> wrote: > On 1/21/07, Adrian Gonzalez <[EMAIL PROTECTED]> wrote: > > > > > > Hello, > > > > I think there's a little bug on shale view 1.0.4. > > > > Shale View : Bug on render response phase when removing view from request > > map. > > > > Error in org.apache.shale.view.faces.ViewPhaseListener, method > > afterRenderResponse, lien 233 : > > iterator obtained from map, code calling map.remove, and afterward using > > iterator which generated ConcurrentModificationException. > > > > Just change this order : > > - remove FacesConstants.VIEWS_INITIALIZED from map. > > - obtain iterator. > > - use iterator. > > > > I've just changed this piece of code in order to have : > > private void afterRenderResponse(PhaseEvent event) { > > /*AFTER CHANGE*/ > > // Initialize local values we will need > > Map map = event.getFacesContext > > ().getExternalContext().getRequestMap(); > > List list = new ArrayList(); > > > > // Remove our list of initialized views explicitly > > map.remove(FacesConstants.VIEWS_INITIALIZED); > > > > Iterator entries = map.entrySet().iterator(); > > > > instead of : > > /*BEFORE CHANGE > > // Initialize local values we will need > > Map map = event.getFacesContext > > ().getExternalContext().getRequestMap(); > > List list = new ArrayList(); > > Iterator entries = map.entrySet().iterator(); > > > > // Remove our list of initialized views explicitly > > map.remove(FacesConstants.VIEWS_INITIALIZED); > > > > And it's ok (or it seems). > > > Adrian, > > Thanks very much for the thorough analysis ... it looks like you are on > target (although it likely depends on your VM's implementation of the > iterator methods so the problem may or may not manifest itself everywhere). > > Could you do me a favor and file a bug in our issue tracking system[1] for > this? That way, the eventual fix will automatically be included in the > release notes for the next version. > > Craig > > [1] https://issues.apache.org/struts/browse/SHALE > > > > Here's the stack trace I had : > > [21/01/07 20:38:36:453 CET] 00000043 helper I BEFORE > > RENDER_RESPONSE(6) > > [21/01/07 20:38:38:765 CET] 00000043 HtmlTableRend E > > org.apache.myfaces.shared_tomahawk.renderkit.html.HtmlTableRendererBaseencodeInnerHtml > > Row is not available. Rowindex = 3 > > [21/01/07 20:38:38:921 CET] 00000043 HtmlResponseW W > > org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImplendElement > > HTML nesting warning on closing tbody: element tr rendered by > > component : {Component-Path : [Class: > > org.ajax4jsf.framework.ajax.AjaxViewRootRIOneOne,ViewId: > > /userList.jsp][Class: javax.faces.component.html.HtmlForm,Id: > > editUser][Class: org.apache.myfaces.component.html.ext.HtmlDataTable,Id: > > userList]} not explicitly closed > > [21/01/07 20:38:40:250 CET] 00000043 PhaseListener E > > org.apache.myfaces.lifecycle.PhaseListenerManagerinformPhaseListenersAfter > > Exception in PhaseListener RENDER_RESPONSE(6) > > afterPhase > > java.util.ConcurrentModificationException > > at java.util.HashMap$HashIterator.nextEntry(HashMap.java:942) > > at java.util.HashMap$KeyIterator.next(HashMap.java:978) > > at com.ibm.ws.webcontainer.srt.SRTServletRequest$1.nextElement( > > SRTServletRequest.java:177) > > at > > org.apache.myfaces.context.servlet.AbstractAttributeMap$KeyIterator.next( > > AbstractAttributeMap.java:210) > > at > > org.apache.myfaces.context.servlet.AbstractAttributeMap$EntryIterator.next > > (AbstractAttributeMap.java:306) > > at org.apache.shale.view.faces.ViewPhaseListener.afterRenderResponse( > > ViewPhaseListener.java:233) > > at org.apache.shale.view.faces.ViewPhaseListener.afterPhase( > > ViewPhaseListener.java:106) > > at > > org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter > > (PhaseListenerManager.java:89) > > at org.apache.myfaces.lifecycle.LifecycleImpl.render( > > LifecycleImpl.java:391) > > at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138) > > at org.apache.myfaces.webapp.MyFacesServlet.service( > > MyFacesServlet.java:74) > > at com.ibm.ws.webcontainer.servlet.ServletWrapper.service( > > ServletWrapper.java:1282) > > at com.ibm.ws.webcontainer.servlet.ServletWrapper.service( > > ServletWrapper.java:1239) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:136) > > at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter( > > ExtensionsFilter.java:144) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter( > > BaseXMLFilter.java:67) > > at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter( > > BaseFilter.java:223) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.firsttest.webapp.filter.MessageFilter.doFilter( > > MessageFilter.java:45) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter( > > UrlRewriteFilter.java:375) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at net.sf.ehcache.constructs.web.filter.GzipFilter.doFilter( > > GzipFilter.java:75) > > at net.sf.ehcache.constructs.web.filter.Filter.doFilter(Filter.java > > :89) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.displaytag.filter.ResponseOverrideFilter.doFilter( > > ResponseOverrideFilter.java:125) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.firsttest.webapp.filter.LocaleFilter.doFilterInternal( > > LocaleFilter.java:55) > > at org.springframework.web.filter.OncePerRequestFilter.doFilter( > > OncePerRequestFilter.java:77) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at com.opensymphony.clickstream.ClickstreamFilter.doFilter( > > ClickstreamFilter.java:42) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at > > org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal > > (OpenSessionInViewFilter.java:174) > > at org.springframework.web.filter.OncePerRequestFilter.doFilter( > > OncePerRequestFilter.java:77) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:264) > > at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke( > > FilterSecurityInterceptor.java:107) > > at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter( > > FilterSecurityInterceptor.java:72) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter( > > ExceptionTranslationFilter.java:110) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at > > org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter( > > AnonymousProcessingFilter.java:125) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter > > (RememberMeProcessingFilter.java:142) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at > > org.acegisecurity.wrapper.SecurityContextHolderAwareRequestFilter.doFilter > > (SecurityContextHolderAwareRequestFilter.java:81) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at org.acegisecurity.ui.AbstractProcessingFilter.doFilter( > > AbstractProcessingFilter.java:217) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java > > :108) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at > > org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter( > > HttpSessionContextIntegrationFilter.java:193) > > at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter > > (FilterChainProxy.java:274) > > at org.acegisecurity.util.FilterChainProxy.doFilter( > > FilterChainProxy.java:148) > > at org.acegisecurity.util.FilterToBeanProxy.doFilter( > > FilterToBeanProxy.java:98) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter( > > WebAppFilterChain.java:121) > > at > > org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal( > > CharacterEncodingFilter.java:78) > > at org.springframework.web.filter.OncePerRequestFilter.doFilter( > > OncePerRequestFilter.java:77) > > at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter( > > FilterInstanceWrapper.java:142) > > > > > > > > > > > > > > > > > > > > ___________________________________________________________________________ > > D�couvrez une nouvelle fa�on d'obtenir des r�ponses � toutes vos questions > > ! > > Profitez des connaissances, des opinions et des exp�riences des > > internautes sur Yahoo! Questions/R�ponses > > http://fr.answers.yahoo.com > > > > -- Matthias Wessendorf http://tinyurl.com/fmywh further stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com ___________________________________________________________________________ Découvrez une nouvelle façon d'obtenir des réponses à toutes vos questions ! Profitez des connaissances, des opinions et des expériences des internautes sur Yahoo! Questions/Réponses http://fr.answers.yahoo.com