Hi,

I am not that into myfaces and webflow, so I better ask before creating an 
issue. ;)
What exactly should be done by webflow? Should they call 
facesContext.setViewRoot(uiViewRoot) too? Wouldn't that be very... JSF-specific?

Matthias
-------- Original-Nachricht --------
> Datum: Tue, 23 Mar 2010 10:55:10 -0500
> Von: Leonardo Uribe <[email protected]>
> An: MyFaces Discussion <[email protected]>
> Betreff: Re: UIComponentBase.java - context.getViewRoot() returns null

> Hi
> 
> Looking the stack trace provided very carefully, I can see the problem is
> not in myfaces, it is on spring class FlowViewStateManager. Take a look at
> this three lines:
> 
> at
> javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:643)
> 
> at
> org.springframework.faces.webflow.FlowViewStateManager.restoreComponentState(FlowViewStateManager.java:77)
> 
> at
> org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:159)
> 
> 
> The code related is this:
> 
>       public UIViewRoot restoreView(FacesContext context, String viewId,
> String renderKitId) {
>               if (!JsfUtils.isFlowRequest()) {
>                       return delegate.restoreView(context, viewId, 
> renderKitId);
>               }
>               UIViewRoot viewRoot = restoreTreeStructure(context, viewId,
> renderKitId);
>               if (viewRoot != null) {
>                       restoreComponentState(context, viewRoot, renderKitId);
>               }
>               return viewRoot;
>       }
> 
> What's the problem? well, look this code from myfaces JspStateManagerImpl:
> 
>             if (state != null) {
>                 Object[] stateArray = (Object[])state;
>                 TreeStructureManager tsm = new TreeStructureManager();
>                 uiViewRoot = tsm.restoreTreeStructure(stateArray[0]);
> 
>                 if (uiViewRoot != null) {
>                     facesContext.setViewRoot (uiViewRoot);
>                     uiViewRoot.processRestoreState(facesContext,
> stateArray[1]);
>                 }
>             }
> 
> It is supposed after restore the tree structure, that
> facesContext.setViewRoot(uiViewRoot) should be called. Inclusive, in
> DefaultFaceletsStateManagementStrategy we do the same too. An issue should
> be created against spring web flow.
> 
> regards,
> 
> Leonardo Uribe
> 
> 2010/3/23 Jakob Korherr <[email protected]>
> 
> > Yeah, great! Thanks ;)
> >
> > Regards,
> > Jakob
> >
> > 2010/3/23 Matthias Leis <[email protected]>
> >
> > > Hi,
> > >
> > > JIRA link is https://issues.apache.org/jira/browse/MYFACES-2620
> > >
> > > I hope I've done it right ;)
> > >
> > > Matthias
> > > -------- Original-Nachricht --------
> > > > Datum: Tue, 23 Mar 2010 15:59:22 +0100
> > > > Von: Jakob Korherr <[email protected]>
> > > > An: MyFaces Discussion <[email protected]>
> > > > Betreff: Re: UIComponentBase.java - context.getViewRoot() returns
> null
> > >
> > > > Hi,
> > > >
> > > > OK great! I'll take a look at it later ;)
> > > >
> > > > Regards,
> > > > Jakob
> > > >
> > > > 2010/3/23 Matthias Leis <[email protected]>
> > > >
> > > > > Hi,
> > > > >
> > > > > I just saw, that I'm not working with the beta 2 but with the
> > snapshot.
> > > > In
> > > > > beta 2 the NPW is thrown at line 1038 (in snapshot at line 1041).
> > > > > The line is:
> > > > >
> > > > >   String renderKitId = context.getViewRoot().getRenderKitId();
> > > > >
> > > > > And looking at the variables in debugging mode says, that the
> > viewRoot
> > > > is
> > > > > null. Sorry for the confusion :)
> > > > >
> > > > > Of course I don't mind to open a JIRA issue :)
> > > > >
> > > > > PS: I know tomahawk isn't even supposed to work with myfaces 2,
> but
> > in
> > > > > generally it does. This one here is the only compatibility problem
> I
> > > > found
> > > > > (...for now ;) )
> > > > >
> > > > > Matthias
> > > > > -------- Original-Nachricht --------
> > > > > > Datum: Tue, 23 Mar 2010 15:44:32 +0100
> > > > > > Von: Jakob Korherr <[email protected]>
> > > > > > An: MyFaces Discussion <[email protected]>
> > > > > > Betreff: Re: UIComponentBase.java - context.getViewRoot()
> returns
> > > null
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Unfortunately there is no tomahawk port for MyFaces 2.0
> available
> > > yet,
> > > > so
> > > > > > this might be a compatibility problem.
> > > > > >
> > > > > > I traced the Exception down and found out that it happens,
> because
> > > the
> > > > > > RenderKitFactory returns null for the RenderKit here, see the
> code
> > > > from
> > > > > > UIComponentBase:
> > > > > >
> > > > > >         String renderKitId =
> > context.getViewRoot().getRenderKitId();
> > > > > >         RenderKitFactory rkf = (RenderKitFactory)
> > > > > > FactoryFinder.getFactory(FactoryFinder.RENDER_KIT_FACTORY);
> > > > > >         RenderKit renderKit = rkf.getRenderKit(context,
> > renderKitId);
> > > > > >         Renderer renderer = renderKit.getRenderer(getFamily(),
> > > > > > rendererType);
> > > > > >
> > > > > > In the last line renderKit is null and thus we get a NPE.
> > > > > >
> > > > > > Do you mind opening a JIRA issue for this? This would be really
> > > great.
> > > > > >
> > > > > > Thanks!
> > > > > >
> > > > > > Regards,
> > > > > > Jakob
> > > > > >
> > > > > > 2010/3/23 Matthias Leis <[email protected]>
> > > > > >
> > > > > > > Hi,
> > > > > > >
> > > > > > > I'm using myfaces 2.0 beta 2 and currently I'm using a
> > > <h:dataTable>
> > > > on
> > > > > > my
> > > > > > > pages and everything is fine.
> > > > > > > For some reasons (sorting etc.) I want to use the
> <t:dataTable>
> > > > (from
> > > > > > > Tomahawk 1.1.9).
> > > > > > >
> > > > > > > Now, when I click on a link inside the table, I get the
> following
> > > > > > > exception:
> > > > > > > java.lang.NullPointerException
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> javax.faces.component.UIComponentBase.getRenderer(UIComponentBase.java:1041)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.HtmlDataTableHack.getClientId(HtmlDataTableHack.java:111)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.getClientId(AbstractHtmlDataTable.java:135)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.HtmlDataTableHack.setRowIndex(HtmlDataTableHack.java:275)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.component.html.ext.AbstractHtmlDataTable.setRowIndex(AbstractHtmlDataTable.java:276)
> > > > > > >        at
> > javax.faces.component.UIData.visitTree(UIData.java:1257)
> > > > > > >        at
> > > > > >
> javax.faces.component.UIComponent.visitTree(UIComponent.java:770)
> > > > > > >        at
> > > > > >
> javax.faces.component.UIComponent.visitTree(UIComponent.java:770)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > >
> >
> javax.faces.component.UIViewRoot.processRestoreState(UIViewRoot.java:648)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewStateManager.restoreComponentState(FlowViewStateManager.java:77)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:159)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView(ViewDeclarationLanguageBase.java:106)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView(FaceletViewDeclarationLanguage.java:1230)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:240)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> com.sun.facelets.FaceletViewHandler.restoreView(FaceletViewHandler.java:316)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:128)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:75)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.faces.webflow.JsfViewFactory.getView(JsfViewFactory.java:93)
> > > > > > >        at
> > > > > > >
> > > >
> org.springframework.webflow.engine.ViewState.resume(ViewState.java:193)
> > > > > > >        at
> > > > org.springframework.webflow.engine.Flow.resume(Flow.java:545)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:259)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:163)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
> > > > > > >        at
> > > > javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
> > > > > > >        at
> > > > javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:341)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > > >        at
> > > main.util.RendererFilter.doFilter(RendererFilter.java:103)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
> > > > > > >        at
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
> > > > > > >        at
> > > > > > >
> > > >
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> > > > > > >        at java.lang.Thread.run(Unknown Source)
> > > > > > >
> > > > > > > Is this the "fault" of myfaces or tomahawk? Is it possible to
> > > check,
> > > > if
> > > > > > the
> > > > > > > viewId is null, and - if so - create a new one?
> > > > > > >
> > > > > > > Any help is appreciated :)
> > > > > > >
> > > > > > > Thx, Matthias
> > > > > > > --
> > > > > > > GMX DSL: Internet, Telefon und Entertainment für nur 19,99
> > > > EUR/mtl.!
> > > > > > > http://portal.gmx.net/de/go/dsl02
> > > > > > >
> > > > >
> > > > > --
> > > > > Sicherer, schneller und einfacher. Die aktuellen Internet-Browser
> -
> > > > > jetzt kostenlos herunterladen!
> http://portal.gmx.net/de/go/atbrowser
> > > > >
> > >
> > > --
> > > GMX DSL: Internet, Telefon und Entertainment für nur 19,99 EUR/mtl.!
> > > http://portal.gmx.net/de/go/dsl02
> > >
> >

-- 
Sicherer, schneller und einfacher. Die aktuellen Internet-Browser -
jetzt kostenlos herunterladen! http://portal.gmx.net/de/go/atbrowser

Reply via email to