Jay Sartoris created MYFACES-4175:
-------------------------------------

             Summary: template XHTML file fails to load when in /resources dir
                 Key: MYFACES-4175
                 URL: https://issues.apache.org/jira/browse/MYFACES-4175
             Project: MyFaces Core
          Issue Type: Bug
    Affects Versions: 2.3.0-beta
            Reporter: Jay Sartoris
            Priority: Minor
         Attachments: JSFTestResources.war

Please consider the following scenario, I've attached a sample app. 

I have a template in the resources/templates directory.  The request to 
localhost:8080/JSFTestResources/mapViewIdToResource.jsf fails when MyFaces to 
load the basicTemplate.xhtml  file which is located in the /resources/templates 
directory for the composite component.  The backing bean uses the 
ResourceHandler to create the view resources.
The reason this fails in JSF 2.3 is due to the change in the 
org.apache.myfaces.resource.RootExternalContextResourceLoader.getResourceURL(String)
 method.  
In JSF 2.3, the method added a check to see if the resourceId starts wiht the 
contractsDirectory or resourcesDirectory.  If it does then the getResourceURL 
returns null which tells the ResourceLoader that the resource does not exist.  
In JSF 2.2, those checks were not there.

I checked the change history for this class and I see that MYFACES-4105 added 
this change.  In that JIRA I see the comment made that says:
"One last review is required to check if xhtml files under forbidden extensions 
are being loaded (/resources, /contracts and so on)."

Therefore, this falls in to the JIRA comment mentioned above.  To me, the test 
I've attached seems to be a valid scenario and MyFaces should be allowing this 
resource to be found instead of returning null.  I don't see anywhere in the 
spec that says MyFaces should be behaving in that manner. Please correct me if 
I'm wrong.

Also, this app works with MyFaces JSF 2.2 and also with Mojarra JSF 2.3.  

With MyFaces JSF 2.3 I get a NPE:

java.lang.NullPointerException
        
com.test.MapResourcePathBean.mapViewIdToResource(MapResourcePathBean.java:56)
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:90)
        
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        java.lang.reflect.Method.invoke(Method.java:508)
        javax.el.BeanELResolver.invoke(BeanELResolver.java:158)
        javax.el.CompositeELResolver.invoke(CompositeELResolver.java:79)
        org.apache.el.parser.AstValue.getValue(AstValue.java:159)
        org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
        
org.apache.myfaces.view.facelets.el.ContextAwareTagValueExpression.getValue(ContextAwareTagValueExpression.java:93)



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to