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;
} }
  • Method Summary

    Modifier and Type
    Method
    Description
    adjust(org.apache.sling.api.SlingHttpServletRequest request, String vanityUrl)
    Allows for custom adjustment of the vanity path after its been parsed and resourceResolver.map(..)'d, but before it's been dispatched.
  • Method Details

    • adjust

      String adjust(org.apache.sling.api.SlingHttpServletRequest request, String vanityUrl)
      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 request
      vanityUrl - the vanityUrl derived from the request's requestUri passed through resourceResolver.map(..)
      Returns:
      the vanityUrl to try to resolve