Virtual URLs break script resolution
------------------------------------
Key: SLING-627
URL: https://issues.apache.org/jira/browse/SLING-627
Project: Sling
Issue Type: Bug
Components: API, JCR Resource
Reporter: Felix Meschberger
Assignee: Felix Meschberger
Fix For: API 2.0.4, JCR Resource 2.0.4
Consider a virtual URL configuration in the JcrResourceResolver mapping the URL
"/sample" to "/content/some/where/in/the/path.print.a4.html".
When using the URL "/content/some/where/in/the/path.print.a4.html", the
resource resolver correctly resolves the "/content/some/where/in/the/path"
resource and sets the selector string (print.a4) and extension (html)
correctly. When accessing the URL "/sample", the resource is correclty resolved
again to "/content/some/where/in/the/path". But the selector string and
extension are empty.
The reason for this is the cooperation between the JcrResourceResovler and the
SlingRequestPathInfo and the RequestData class. The JcrResourceResolver sets up
the Resoure correctly with the ResourceMetadata containing a property
sling.resolutionPath set to "/content/some/where/in/the/path". The
RequestData.initServlet method uses the Resource (with the correct
sling.resolutionPath field) and the servlet request's path info
(ServletRequest.getPathInfo()) to find the selectors and extension etc.
The problem with virtual URLs is, that the path info is the originally
requested URL -- /sample in this case -- while the resource resolution path is
something completely different. Hence the request path info details cannot be
extracted.
To be able to fix this situation, we should add a new field in the
ResourceMetadata, which takes the part of the URL path used to resolve the
resoure, which is not path of the resource path, such that:
resolutionFullPath = sling.resolutionPath + sling.resolutionPathInfo
The SlingRequestPathInfo class will then only inspoect the
sling.resolutionPathInfo field to split that into selectors, extension and
suffix.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.