You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Tobias Bocanegra (JIRA)" <ji...@apache.org> on 2008/08/25 15:31:44 UTC

[jira] Commented: (SLING-627) Virtual URLs break script resolution

    [ https://issues.apache.org/jira/browse/SLING-627?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12625354#action_12625354 ] 

Tobias Bocanegra commented on SLING-627:
----------------------------------------

i think virtual url should just allow mapping of 'directories' and not full urls.
so /sample could map to /content/some/where/samples

mapping requests from http://host/sample to another path should only be done with (http) redirects. otherwise the confusion is endless
as you problem shows.

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