JcrResourceResolver.map() does not return proper escaped URIs
-------------------------------------------------------------

                 Key: SLING-1218
                 URL: https://issues.apache.org/jira/browse/SLING-1218
             Project: Sling
          Issue Type: Bug
          Components: JCR
    Affects Versions: JCR Resource 2.0.6
            Reporter: Alexander Klimetschek


The JcrResourceResolver's map() methods do not escape the URIs that are 
returned (as string). For example, a path with spaces (which is valid in JCR) 
such as

    /content/path/with spaces.jpg

will be returned as-is (or like http://my.domain.com/content/path/with 
spaces.jpg if a mapping config is present for that). However, it should be 
returned as

    http://localhost:4502/content/dam/geometrixx/portraits/chris%20stark.jpg

Furthermore, in case of a mapping config present, an URISyntaxException 
exception will be thrown in line 384 of JcrResourceResolver as the uri string 
"mappedPath" contains spaces and cannot be parsed by java.net.URI(String), 
which expects an already-escaped URI. That exception is catched internally, but 
namespace mangling and prepending of the servlet context path are omitted in 
that case.

The use of java.net.URI is not good when it is about building URIs from plain, 
unescaped components, since it only really supports parsing of escaped uri 
strings and the multi-args constructor in conjunction with toString() simply 
behaves wrong. See also http://blog.limewire.org/?p=261

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