Hello Jeanne,

my response is inline

On Mon, Aug 24, 2009 at 8:46 PM, Jeanne
Waldman<jeanne.wald...@oracle.com> wrote:
> Hi Matthias,
> My response is inline.
>
> Matthias Wessendorf wrote, On 8/15/2009 2:02 AM PT:
>
> On Sat, Aug 15, 2009 at 2:57 AM, Jeanne
> Waldman<jeanne.wald...@oracle.com> wrote:
>
>
> If I change Trinidad's demo faces-config.xml file to use a bogus
> default-render-kit-id, I get a NPE.
>
>     <!-- Use the Trinidad RenderKit -->
>     <default-render-kit-id>
>       org.apache.myfaces.trinidad.coreBAD
>     </default-render-kit-id>
>
> I get this:
>
> java.lang.NullPointerException
>     at
> com.sun.faces.renderkit.RenderKitUtils.getResponseStateManager(RenderKitUtils.java:246)
>     at
> com.sun.faces.lifecycle.RestoreViewPhase.isPostback(RestoreViewPhase.java:267)
>     at
> com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:172)
>     at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
>     at
> com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:104)
>     Truncated. see log file for complete stacktrace
>
>
> This seems to me to be a bug in
> com.sun.faces.renderkit.RenderKitUtils.getResponseStateManager:
>
> 3                   renderKit = factory.getRenderKit(context, renderKitId);
>   244               }
>   245           }
>   246           return renderKit.getResponseStateManager();
>
> Has anyone seen this or have an opinion about this? I would have liked to
> have had a log message telling me why I got a NPE at least so I didn't have
> to track it down.
>
>
> Question: Is the myfaces jsf-impl better here?
> I don't know as I haven't done something like the above.
> Sure, on first thought the bug is kinda stupid, but heck - typos can happen
> :-)
>
> So a better "warning" like a FAcesException ("there is no damn
> 'org.apache.myfaces.trinidad.coreBAD' renderkit")
> would be way better.
>
>
> I get a similar error in MyFaces.
> SEVERE: An exception occurred
> java.lang.NullPointerException
>     at
> org.apache.myfaces.shared_impl.renderkit.RendererUtils.getResponseStateManager(RendererUtils.java:1178)
>     at
> org.apache.myfaces.lifecycle.DefaultRestoreViewSupport.isPostback(DefaultRestoreViewSupport.java:127)
>     at
> org.apache.myfaces.lifecycle.RestoreViewExecutor.execute(RestoreViewExecutor.java:80)
>     at
> org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:103)
>     at
> org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:76)
>
> My use case was that someone was using an 'old' application and they let
> JDeveloper migrate it. JDev doesn't touch
> the default-render-kit-id and it was no longer valid, and then they got this
> NPE which was impossible for them to know why from
> looking at the call stack.
>
> How should I follow up on this ?

I looked at Trinidad's CoreRenderKitFactory.getRenderKit()

<snip>
  public RenderKit getRenderKit(FacesContext context, String renderKitId)
  {
    if (CoreRenderKit.getId().equals(renderKitId))
    {
      renderKitId = CoreRenderKit.chooseRenderKit(context);
    }

    return _factory.getRenderKit(context, renderKitId);
  }
</snip>

the call basically delegates back to what ever has been passed in.
So, I ended up fixing the problem in MyFaces, see this revision:
http://svn.apache.org/viewvc?view=rev&revision=807541

IMO you should file a bug against the JSF RI. "Fixing" the problem in Trinidad
would basically decorate the delegate call by checking for NPE - IMO that should
be handled by the used JSF RT implementation.

-Matthias


>
> Thanks!
> Jeanne
>
> -M
>
>
>
> I suppose I could write out a warning message in Trinidad's
> FacesContextFactoryImpl.java if it returns null.
>
> Thanks,
> Jeanne
>
>
>
>
>



-- 
Matthias Wessendorf

blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf

Reply via email to