Package com.adobe.acs.commons.wcm.vanity
Interface VanityUrlAdjuster
@ConsumerType
public interface VanityUrlAdjuster
This service interface provides a hook into the VanityUrlService, and allow for further adjustment of the
candidateVanity Url (which other wise is simply parsed from the request's requestUri, and then resourceResolver.map(...)'d.
For example, by convention a multi-tenant website might namespace sling:vanityPath properties with the tenant name;
/content/tenant-a/section/page/jcr:content/@slingVanityPath=tenant-a__super-sale
/content/tenant-b/section/page/jcr:content/@slingVanityPath=tenant-b__super-sale
with www.tenant-a.com mapped to /content/tenant-a/
with www.tenant-b.com mapped to /content/tenant-b/
and www.tenant-a.com/super-sale resolving to /content/tenant-a/section/page
and www.tenant-b.com/super-sale resolving to /content/tenant-b/section/page
an impl of this, could look at the the domain attribute of the request,
public String adjust(SlingHttpServletRequest request, String vanityUrl) {
// Trim leading slash so we can prefix w/ something...
vanityUrl = StringUtils.substringAfter(vanityUrl, "/");
if ("www.tenant-a.com").equals(request.getServerName()) {
return "/tenant-a__" + vanityUrl;
} else if ("www.tenant-b.com").equals(request.getServerName()) {
return "/tenant-b__" + vanityUrl;
} else {
return "/" + vanityUrl;
} }
For example, by convention a multi-tenant website might namespace sling:vanityPath properties with the tenant name;
/content/tenant-a/section/page/jcr:content/@slingVanityPath=tenant-a__super-sale
/content/tenant-b/section/page/jcr:content/@slingVanityPath=tenant-b__super-sale
with www.tenant-a.com mapped to /content/tenant-a/
with www.tenant-b.com mapped to /content/tenant-b/
and www.tenant-a.com/super-sale resolving to /content/tenant-a/section/page
and www.tenant-b.com/super-sale resolving to /content/tenant-b/section/page
an impl of this, could look at the the domain attribute of the request,
public String adjust(SlingHttpServletRequest request, String vanityUrl) {
// Trim leading slash so we can prefix w/ something...
vanityUrl = StringUtils.substringAfter(vanityUrl, "/");
if ("www.tenant-a.com").equals(request.getServerName()) {
return "/tenant-a__" + vanityUrl;
} else if ("www.tenant-b.com").equals(request.getServerName()) {
return "/tenant-b__" + vanityUrl;
} else {
return "/" + vanityUrl;
} }
-
Method Summary
-
Method Details
-
adjust
Allows for custom adjustment of the vanity path after its been parsed and resourceResolver.map(..)'d, but before it's been dispatched.- Parameters:
request- the requestvanityUrl- the vanityUrl derived from the request's requestUri passed through resourceResolver.map(..)- Returns:
- the vanityUrl to try to resolve
-