NPE from rendering button with missing resource URL
---------------------------------------------------

                 Key: MYFACES-2991
                 URL: https://issues.apache.org/jira/browse/MYFACES-2991
             Project: MyFaces Core
          Issue Type: Bug
          Components: General
    Affects Versions: 2.0.3-SNAPSHOT
            Reporter: David Jencks
         Attachments: MYFACES-2991.patch

I ran into this with the tck in geronimo.  The test appears to be trying to 
render a button that is just created and not part of a view to test the EL bits 
of encodeBegin.  There's no resource info associated with this button so the 
resource URL is null, and trying to encode it throws an NPE.  Some comments in 
the code seem to indicate that something else should be happening.  In any case 
this can be fixed by testing for a null resourceURL and not trying to encode 
null.

Code involved and comments that make be wonder what should be happening are in

HtmlOutcomeTargetButtonRendererBase line 115:
            String href = facesContext.getExternalContext().encodeResourceURL(
                    HtmlRendererUtils.getOutcomeTargetLinkHref(facesContext,
                            (UIOutcomeTarget) uiComponent));



ServletExternalContextImpl line 325:
    @Override
    public String encodeResourceURL(final String url)
    {
        checkNull(url, "url");
        checkHttpServletRequest();
        return ((HttpServletResponse) _servletResponse).encodeURL(url);
    }


HtmlRendererUtils line 1771:

    public static String getOutcomeTargetLinkHref(
            FacesContext facesContext, UIOutcomeTarget component) throws 
IOException {
...
        // when navigation case is null, force the "link" to be rendered as text
        if (navigationCase == null) {
            return null;
        }
...

Result appears to be that when there is no navigation case the first method 
will throw an NPE, although the comment in getOutcomeTargetLinkHref seems to 
indicate something else should happen.

I haven't yet figured out how to add an appropriate renderer to the mock 
renderkit to write a unit test showing the problem.


-- 
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