[ 
https://issues.apache.org/jira/browse/MYFACES-3720?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13656605#comment-13656605
 ] 

Leonardo Uribe commented on MYFACES-3720:
-----------------------------------------

Thanks Howard for let us know what's inside pf_ViewOther.xhtml .

It is good to know that the exception does not occur in typical situations.

It is clear the stacktrace shows the exception occur in a postback, when the 
view is being restored. The evidence suggest there is no duplicate id exception 
too. 

The HashMap is not related to p:dataTable. 

To put it in simple words, the exception suggest a state is being saved under 
the key "ordersViewForm:orderViewTabView:j_id_b_1_4q_1", but when it is 
restored the state does not match with the current component holding the key as 
clientId. That's very unlikely, because the algorithm was designed to produce 
stable client ids, and has been widely tested.

But it can be possible to get an exception like that in development time. Press 
F5 send the last command to the page, in this case a POST with a valid 
viewState token. But let's suppose a change happen on the page between the last 
request and the new one. The result is have a valid POST, the viewState pass 
the check but when it is restored, the state is obviously not synchronized with 
the facelet page and the exception is thrown. You see the exception, but later 
when you try something else it just disappear, because the invalid data is gone.

In production environment this will never happen, because in that case .xhtml 
files does not change (no refresh period and no updates on the pages).

Since it only occur under very special situations, I wouldn't worry about that 
exception, because it is not a real bug. It is not possible to do anything from 
MyFaces side to deal with this, and it does not suppose a problem in production 
environment. 
                
> [restoreView/restoreState] java.lang.ClassCastException: java.util.HashMap 
> cannot be cast to javax.faces.convert.Converter
> --------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MYFACES-3720
>                 URL: https://issues.apache.org/jira/browse/MYFACES-3720
>             Project: MyFaces Core
>          Issue Type: Bug
>    Affects Versions: 2.1.10, 2.1.11
>         Environment: 1. TomEE 1.6.0 snapshot (2013-04-29) which includes 
> MyFaces 2.1.11
> 2. PrimeFaces 3.5 and PrimeFaces 4.0 snapshot
>            Reporter: Howard W. Smith, Jr.
>   Original Estimate: 28h
>  Remaining Estimate: 28h
>
> Originally reported as OmniFaces issue # 167 (please take a look at this, as 
> I attached some files there in OmniFaces issue tracker)
> https://code.google.com/p/omnifaces/issues/detail?id=167
> OmniFaces response was the following:
> Project Member #3 balusc
> This problem is indeed not related to o:enableRestorableView. The only 
> occurrence in the stack trace is just the delegation to super (i.e. the 
> process continues less or more as if the o:enableRestorableView was never 
> involved):
>     UIViewRoot restoredView = super.restoreView(context, viewId);
> Below is stack trace with TomEE 1.6.0 (2013-04-29), myFaces 2.1.11, and 
> PrimeFaces 4.0 snapshot. Is this a MyFaces bug or user error?
> May 09, 2013 8:06:54 AM org.apache.catalina.core.StandardWrapperValve invoke
> SEVERE: Servlet.service() for servlet [Faces Servlet] in context with path 
> [/mcmsweb] threw exception [Error restoring component: 
> ordersViewForm:orderViewTabView:j_id_b_1_4q_1] with root cause
> java.lang.ClassCastException: java.util.HashMap cannot be cast to 
> javax.faces.convert.Converter
>       at javax.faces.component.UIOutput.restoreState(UIOutput.java:248)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:687)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreStateFromMap(DefaultFaceletsStateManagementStrategy.java:706)
>       at 
> org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.restoreView(DefaultFaceletsStateManagementStrategy.java:340)
>       at 
> org.apache.myfaces.application.StateManagerImpl.restoreView(StateManagerImpl.java:129)
>       at 
> org.apache.myfaces.shared.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
>       at 
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:2118)
>       at 
> org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:300)
>       at 
> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
>       at 
> org.omnifaces.viewhandler.RestorableViewHandler.restoreView(RestorableViewHandler.java:66)
>       at 
> javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:83)
>       at 
> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:127)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:170)
>       at 
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
>       at javax.faces.webapp.FacesServlet.service(FacesServlet.java:197)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.omnifaces.filter.GzipResponseFilter.doFilter(GzipResponseFilter.java:148)
>       at org.omnifaces.filter.HttpFilter.doFilter(HttpFilter.java:75)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at pf.LoginFilter.doFilter(LoginFilter.java:244)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
>       at org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:45)
>       at 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
>       at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
>       at 
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
>       at 
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
>       at 
> org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1686)
>       at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>       at java.lang.Thread.run(Thread.java:722)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to