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

Reply via email to