[ https://issues.apache.org/jira/browse/SLING-1629?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alexander Klimetschek updated SLING-1629: ----------------------------------------- Description: When creating links in responses there are two cases: 1) create it for use by the browser: URLs relative to the current request 2) link used by external apps: absolute URL including hostname etc. For 1), you can already use ResourceResolver.map(request, path) (important to use the request-based here). For 2), when you explicitly want absolute URLs (eg. for rss feeds, links in emails, etc.), the ResourceResolver map methods will only add a host/port if such a configuration is part of /etc/map. There is no default to use the host/port from the current request. Also, if a hostname is configured and you use map(request, path), because that is required for adding the context path, it will _strip_ it from the map call if the current request goes to that hostname, which is probably the normal case. The map(request, path) call is clearly aimed at relative URLs, case 1). In order to provide convenient short access to those features, an externalize method on the sling request object is better for both cases: case 1) relative url slingRequest.externalize("/my/path") same as slingRequest.getResourceResolver().map(slingRequest, "/my/path")) case 2) absolute url slingRequest.externalize("http", "/my/path") produces e.g. http://localhost:8080/my/path was: When creating links in responses there are two cases: 1) create it for use by the browser: URLs relative to the current request 2) link used by external apps: absolute URL including hostname etc. For 1), you can already use ResourceResolver.map(request, path) (important to use the request-based here). For 2), when you explicitly want absolute URLs (eg. for rss feeds, links in emails, etc.), the ResourceResolver map methods will only add a host/port if such a configuration is part of /etc/map. There is no default to use the host/port from the current request. In order to provide convenient short access to those features, an externalize method on the sling request object is better for both cases: case 1) relative url slingRequest.externalize("/my/path") same as slingRequest.getResourceResolver().map(slingRequest, "/my/path")) case 2) absolute url slingRequest.externalize("http", "/my/path") produces e.g. http://localhost:8080/my/path > Add methods for externalizing links to SlingHttpServletRequest > -------------------------------------------------------------- > > Key: SLING-1629 > URL: https://issues.apache.org/jira/browse/SLING-1629 > Project: Sling > Issue Type: New Feature > Components: API, Engine > Reporter: Alexander Klimetschek > Priority: Minor > Attachments: SLING-1629.patch > > > When creating links in responses there are two cases: > 1) create it for use by the browser: URLs relative to the current request > 2) link used by external apps: absolute URL including hostname etc. > For 1), you can already use ResourceResolver.map(request, path) (important to > use the request-based here). > For 2), when you explicitly want absolute URLs (eg. for rss feeds, links in > emails, etc.), the ResourceResolver map methods will only add a host/port if > such a configuration is part of /etc/map. There is no default to use the > host/port from the current request. > Also, if a hostname is configured and you use map(request, path), because > that is required for adding the context path, it will _strip_ it from the map > call if the current request goes to that hostname, which is probably the > normal case. The map(request, path) call is clearly aimed at relative URLs, > case 1). > In order to provide convenient short access to those features, an externalize > method on the sling request object is better for both cases: > case 1) relative url > slingRequest.externalize("/my/path") > same as slingRequest.getResourceResolver().map(slingRequest, "/my/path")) > case 2) absolute url > slingRequest.externalize("http", "/my/path") > produces e.g. http://localhost:8080/my/path -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.