error running demo because of demo's PreferencesProxy EL getValue
-----------------------------------------------------------------

                 Key: TRINIDAD-1085
                 URL: https://issues.apache.org/jira/browse/TRINIDAD-1085
             Project: MyFaces Trinidad
          Issue Type: Bug
            Reporter: Jeanne Waldman


This is in reference to the DEV list thread entitled 
[TRINIDAD] The email demo and panelPageSkinDemo.jspx fail in the 1.2.8 proposed 
release.

When running these demos, you see this error:

> May 16, 2008 4:42:12 PM javax.faces.webapp._ErrorPageWriter handleException
> SEVERE: An exception occurred
> javax.el.PropertyNotFoundException: Property 'skinFamily' not found on type 
> java.lang.String
>         at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:193)
>         at 
> javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:170)
>         at javax.el.BeanELResolver.property(BeanELResolver.java:279)
>         at javax.el.BeanELResolver.getValue(BeanELResolver.java:60)
>         at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
>         at 
> org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.access$301(FacesCompositeELResolver.java:46)
>         at 
> org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver$4.invoke(FacesCompositeELResolver.java:108)
>         at 
> org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.invoke(FacesCompositeELResolver.java:148)
>         at 
> org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:104)
>         at org.apache.el.parser.AstValue.getValue(AstValue.java:114)
>         at 
> org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
>         at 
> org.apache.myfaces.trinidad.bean.FacesBeanImpl.getProperty(FacesBeanImpl.java:68)
>         at 
> org.apache.myfaces.trinidadinternal.context.RequestContextImpl.getSkinFamily(RequestContextImpl.java:230)
>         at 
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderingContext._initializeSkin(CoreRenderingContext.java:510)
>         at 
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderingContext.<init>(CoreRenderingContext.java:85)
>         at 
> org.apache.myfaces.trinidadinternal.renderkit.core.CoreRenderKit.encodeBegin(CoreRenderKit.java:481)
>         at 
> org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:166)
>         at 
> org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:41)
>         at 
> org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:140)
>         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:152)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoFilter(TrinidadFilterImpl.java:238)
>         at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:195)
>         at 
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:138)
>         at 
> org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>         at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at 
> org.apache.myfaces.trinidaddemo.webapp.RedirectFilter.doFilter(RedirectFilter.java:97)
>         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:286)
>         at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
>         at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>         at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
>         at java.lang.Thread.run(Thread.java:595)


I see the code that is having an issue. It's only in the demo, and it seems 
like EL code.

It's in PreferencesProxy.java. It errors trying to call 
ve.getValue(context.getELContext()).

     if (viewId.indexOf("/email/") >= 0)
       preferencesExpression = "#{email.preferences}";
     else if (viewId.indexOf("SkinDemo") >= 0)
       preferencesExpression = "#{sessionScope}";
     else if (viewId.indexOf("accessibilityProfileDemo") >= 0)
       preferencesExpression = "#{accProfileDemo}";

     if (preferencesExpression != null)
     {
       ValueExpression ve =
         
context.getApplication().getExpressionFactory().createValueExpression(preferencesExpression,
 Object.class);
       return ve.getValue(context.getELContext());
     }

In trinidad-config.xml, we have this:
<skin-family>#{prefs.proxy.skinFamily}</skin-family>
If I change it to be
<skin-family>#{sessionScope.skinFamily}</skin-family>
Then this bit of code doesn't get called, and it works fine (well, as long as 
all the other 'prefs.proxy' EL expressions that are used in trinidad-config.xml 
are fixed up the same way).

In PreferencesProxy, and I see the code was recently changed from JSF1.1 to 
JSF1.2, so that's the difference:

It was:
     if (preferencesExpression != null)
     {
       ValueBinding vb =
         context.getApplication().createValueBinding(preferencesExpression);
       return vb.getValue(context);
     }

and it is now:
     if (preferencesExpression != null)
     {
       ValueExpression ve =
         
context.getApplication().getExpressionFactory().createValueExpression(preferencesExpression,
 Object.class);
       return ve.getValue(context.getELContext());
     } 

The error occurs in ve.getValue(context.getELContext());


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to