(republished here following the advice of Gerhard Petracek on [email protected])

Dear all,

I have the following NPE when view pooling is activated and CACHE_EL_EXPRESSIONS is set to alwaysRecompile :

java.lang.NullPointerException at org.apache.myfaces.view.facelets.el.FaceletStateValueExpression.getValue(FaceletStateValueExpression.java:107) at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:68) at org.apache.el.parser.AstValue.getValue(AstValue.java:161) at org.apache.el.parser.AstEmpty.getValue(AstEmpty.java:47) at org.apache.el.parser.AstNot.getValue(AstNot.java:44) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:185) at org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:96) at javax.faces.component._DeltaStateHelper.eval(_DeltaStateHelper.java:377) at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:1211) at javax.faces.component.UIComponentBase._isPhaseExecutable(UIComponentBase.java:2440) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1386) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIForm.processDecodes(UIForm.java:154) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1401) at javax.faces.component.UIViewRoot._processDecodesDefault(UIViewRoot.java:1687) at javax.faces.component.UIViewRoot.access$500(UIViewRoot.java:77) at javax.faces.component.UIViewRoot$ApplyRequestValuesPhaseProcessor.process(UIViewRoot.java:1778) at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1653) at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:869) at org.apache.myfaces.lifecycle.ApplyRequestValuesExecutor.execute(ApplyRequestValuesExecutor.java:42) at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196) at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143) at org.apache.deltaspike.jsf.impl.listener.request.DeltaSpikeLifecycleWrapper.execute(DeltaSpikeLifecycleWrapper.java:89) at javax.faces.lifecycle.LifecycleWrapper.execute(LifecycleWrapper.java:46) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at fr.senat.faces.filters.HibernateNoCacheFilter.doFilter(HibernateNoCacheFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at fr.senat.faces.filters.HibernateSessionConversationFilter.doFilter(HibernateSessionConversationFilter.java:128) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at fr.senat.faces.filters.HibernateUserFromPrincipalFilter.doFilter(HibernateUserFromPrincipalFilter.java:43) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at fr.senat.faces.filters.SessionCreationTrackingFilter.doFilter(SessionCreationTrackingFilter.java:48) 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.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581) 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.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 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:744)

This NPE occurs in the evalutation of an EL expression in a tag component which is "cleanly" included. By clean, I mean it that the inclusion is defined in a "normal" xhtml file, in opposition to some dynamic inclusions I perform sometimes. This tag component is included in my application banner. It is not rendered during login, then displayed once the user is logged. This is done using standard rendered="..." attribute and did not cause a bug before.

In FaceletStateValueExpression#getWrapped(ELContext context)

     public ValueExpression getWrapped(ELContext context)
    {
FacesContext facesContext = (FacesContext) context.getContext(FacesContext.class);
        if (facesContext == null)
        {
            facesContext = FacesContext.getCurrentInstance();
        }
        UIViewRoot root = facesContext.getViewRoot();
        FaceletState map = (FaceletState) root.getAttributes().get(
            ComponentSupport.FACELET_STATE_INSTANCE);
        return map.getBinding(uniqueId, key);
    }

the map is defined but does not contained the keyed value. Thus the NPE in FaceletStateValueExpression#getValue(ELContext context).

The problem completely disappears if I switch to CACHE_EL_EXPRESSIONS = strict.

It occurs with myfaces 2.2.2 and deltaspike 0.7 and 0.8-SNAPSHOT. The above stacktrace is obtained with 0.8-SNAPSHOT. I do not know if I it is a MyFaces of DS bug.

Tell me what additional information I can provide...

Ludovic
|
| AVANT D'IMPRIMER, PENSEZ A L'ENVIRONNEMENT.
|

Reply via email to