On 1/22/07, Matthias Wessendorf <[EMAIL PROTECTED]> wrote:
I guess since other will run into this, I created a ticket and marked it as fixed for 1.1.0 so the release notes contain that ;) https://issues.apache.org/struts/browse/SHALE-394
Thanks Matthias! Craig On 1/21/07, Adrian Gonzalez <[EMAIL PROTECTED]> wrote:
> 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.HtmlTableRendererBaseencodeInnerHtmlRow is not available. Rowindex = 3 > > > [21/01/07 20:38:38:921 CET] 00000043 HtmlResponseW W > > > org.apache.myfaces.shared_impl.renderkit.html.HtmlResponseWriterImplendElementHTML 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.PhaseListenerManagerinformPhaseListenersAfterException 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 > -- Matthias Wessendorf http://tinyurl.com/fmywh further stuff: blog: http://jroller.com/page/mwessendorf mail: mwessendorf-at-gmail-dot-com