Interface HstLinkCreator

All Known Subinterfaces:
CompositeHstLinkCreator

public interface HstLinkCreator
HstLinkCreator interface for creating HstLink's
  • Method Details

    • create

      HstLink create(String uuid, Session session, HstRequestContext requestContext)
      Rewrite a jcr uuid to a HstLink wrt its current ResolvedSiteMapItem.
      Parameters:
      uuid - the uuid of the node that must be used to link to
      session - jcr session
      requestContext - the HstRequestContext
      Returns:
      an HstLink instance or null
    • create

      HstLink create(Node node, HstRequestContext requestContext)
      Rewrite a jcr Node to a HstLink wrt its current ResolvedSiteMapItem
      Parameters:
      node -
      requestContext - the HstRequestContext
      Returns:
      the HstLink for this jcr Node or null
    • create

      HstLink create(Node node, HstRequestContext requestContext, HstSiteMapItem preferredItem, boolean fallback)
      Rewrite a jcr Node to a HstLink wrt its current HstRequestContext and preferredItem. When preferredItem is not null, the link is tried to be rewritten to one of the descendants (including itself) of the preferred HstSiteMapItem. When preferredItem is null, a link is created against the entire sitemap item tree. When there cannot be created an HstLink to a descendant HstSiteMapItem or self, then:
      1. when fallback = true, a fallback to create(Node, HstRequestContext) is done
      2. when fallback = false, dependent on the implementation some error HstLink or null can be returned

      This method returns an HstLink that takes the current URL into account, but does compute the link with respect to the physical (canonical) location of the jcr Node. If you need a HstLink within the context of the possible virtual jcr Node (for example in case of in context showing documents in faceted navigation), use create(Node, HstRequestContext, HstSiteMapItem, boolean, boolean) with navigationStateful = true

      Parameters:
      node - the jcr node
      requestContext - the HstRequestContext
      preferredItem - if not null (null means no preferred sitemap item), first a link is trying to be created for this item
      fallback - whether to fallback to link rewriting without preferredItem in case link rewriting with preferredItem resulted in a not found link
      Returns:
      the HstLink for this jcr Node or null
      See Also:
    • create

      HstLink create(Node node, HstRequestContext requestContext, HstSiteMapItem preferredItem, boolean fallback, boolean navigationStateful)

      This method creates the same HstLink as create(Node, HstRequestContext, HstSiteMapItem, boolean) when navigationStateful = false. When navigationStateful = true, the link that is created is with respect to the jcr Node node, even if this node is a virtual location. This is different then create(Node, HstRequestContext, HstSiteMapItem, boolean): that method always first tries to find the canonical location of the jcr Node before it is creating a link for the node.

      Expert: Note there is a difference between context relative with respect to the current URL and with respect to the current jcr Node. Default, links in the HST are created always taking into account the current URL (thus context aware linking) unless you call createCanonical(Node, HstRequestContext) or createCanonical(Node, HstRequestContext, HstSiteMapItem). Also, default, it always (unless there is no) takes the canonical location of the jcr Node. Thus, multiple virtual versions of the same physical Node, result in the same HstLink. Only when having navigationStateful = true, also the jcr Node is context relative, and thus multiple virtual versions of the same jcr Node can result in multiple links. This is interesting for example in faceted navigation views, where you want 'in context' documents to be shown.

      Parameters:
      node - the jcr node
      requestContext - the HstRequestContext
      preferredItem - if not null (null means no preferred sitemap item), first a link is trying to be created for this item
      fallback - whether to fallback to link rewriting without preferredItem in case link rewriting with preferredItem resulted in a not found link
      navigationStateful - value true or false
      Returns:
      the HstLink for this jcr Node or null
      See Also:
    • createCanonical

      HstLink createCanonical(Node node, HstRequestContext requestContext)
      This creates a canonical HstLink: regardless the current requestContext, one and the same jcr Node is guaranteed to return the same HstLink. This is useful when showing one and the same content via multiple urls, for example in faceted navigation. Search engines can better index your website when defining a canonical location for duplicate contents: See specify-your-canonical for more info on this subject.
      Parameters:
      node -
      requestContext - the HstRequestContext
      Returns:
      the HstLink for this jcr Node or null
    • createCanonical

      HstLink createCanonical(Node node, HstRequestContext requestContext, HstSiteMapItem preferredItem)
      Parameters:
      node -
      requestContext - the HstRequestContext
      preferredItem - if null, a fallback to createCanonical(Node, HstRequestContext) is done
      Returns:
      the HstLink for this jcr Node or null
      See Also:
    • createAllAvailableCanonicals

      List<HstLink> createAllAvailableCanonicals(Node node, HstRequestContext requestContext)
      Expert: Creates a List of all available canonical links for node within the hostgroup ( VirtualHost.getHostGroupName() ) of the Mount for the HstRequestContext. All available links have a Mount that has at least one of its Mount.getTypes() equal to the Mount.getTypes() belonging to the Mount of the requestContext. If the Mount of the requestContext has no type in common at all, for example because it is Mount from a REST mount used by the template composer, you can use createAllAvailableCanonicals(Node, HstRequestContext, String) and specify the type the Mount's for the available canonical links should be of.
      Parameters:
      node -
      requestContext - the HstRequestContext
      Returns:
      the List of all available canonical links where at least one of the Mount.getTypes() are equal to Mount.getTypes() belonging to the Mount of the requestContext
      See Also:
    • createAllAvailableCanonicals

      List<HstLink> createAllAvailableCanonicals(Node node, HstRequestContext requestContext, String type)
      Expert: Creates a List of all available canonical links for node, within the hostgroup ( VirtualHost.getHostGroupName() ) of the Mount for the HstRequestContext and where where the backing Mount of the HstLink has at least one Mount.getTypes() equal to type
      Parameters:
      node -
      requestContext - the HstRequestContext
      type - the type that the Mount's belonging to the available canonical links should be of
      Returns:
      the List of all available canonical links where at least one of the Mount.getTypes() are equal to type
      See Also:
    • createAllAvailableCanonicals

      List<HstLink> createAllAvailableCanonicals(Node node, HstRequestContext requestContext, String type, String hostGroupName)
      Expert: Creates a List of all available canonical links for node, within the hostgroup hostGroupName and where where the backing Mount of the HstLink has at least one Mount.getTypes() equal to type
      Parameters:
      node -
      requestContext - the HstRequestContext
      type - the type that the Mount's belonging to the available canonical links should be of
      hostGroupName - The hostGroupName that the HstLinks their Mounts should belong to
      Returns:
      the List of all available canonical links where at least one of the Mount.getTypes() are equal to type
      See Also:
    • createAllAvailableCanonicals

      List<HstLink> createAllAvailableCanonicals(Node node, Mount mount, String type, String hostGroupName)
      Expert: Creates a List of all available canonical links for node, within the hostgroup hostGroupName and where where the backing Mount of the HstLink has at least one Mount.getTypes() equal to type
      Parameters:
      node -
      mount - the Mount
      type - the type that the Mount's belonging to the available canonical links should be of
      hostGroupName - The hostGroupName that the HstLinks their Mounts should belong to
      Returns:
      the List of all available canonical links where at least one of the Mount.getTypes() are equal to type
      See Also:
    • create

      HstLink create(Node node, Mount mount)

      Expert: Rewrite a jcr node to a HstLink with respect to the mount. Note that this HstLink creation does only take into account the mount and not the current context. The mount can be a different one then the one of the current request context. If the mount cannot be used to create a HstLink for the jcr node, because the node belongs to a different (sub)site, a page not found link is returned.

      note: if a link is returned, this is always the canonical link, also see createCanonical(Node, HstRequestContext)

      Parameters:
      node - the jcr node for that should be translated into a HstLink
      mount - the (sub)site for which the hstLink should be created for
      Returns:
      the HstLink for the jcr node and the mount or null when no link for the node can be made in the mount
    • create

      HstLink create(Node node, Mount mount, boolean crossMount)
      Parameters:
      node - the jcr node for that should be translated into a HstLink
      mount - the (sub)site for which the hstLink should be tried to be created for, and if it does not succeed for this mount, depending on the value of crossMount try other mounts
      crossMount - if true also mounts not belonging to the parameter mount are tried if the mount cannot return a link for the node.
      Returns:
      the HstLink for the jcr node or null when no link for the node can be found
      See Also:
    • create

      HstLink create(Node node, Mount mount, HstSiteMapItem preferredItem, boolean fallback)

      Expert: Rewrite a jcr node to a HstLink with respect to the mount and preferredItem. When preferredItem is not null, the link is tried to be rewritten to one of the descendants (including itself) of the preferred HstSiteMapItem. When this does not result in a match, then, depending on whether fallback = true,a fallback to an attempt to link rewrite for the entire sitemap is done Note that this HstLink creation does only take into account the mount and not the current context. The mount can be a different one then the one of the current request context. If the mount cannot be used to create a HstLink for the jcr node, because the node belongs to a different (sub)site, a page not found link is returned.

      Parameters:
      node - the jcr node for that should be translated into a HstLink
      mount - the (sub)site for which the hstLink should be created for
      preferredItem - if not null (null means no preferred sitemap item), first a link is trying to be created for this item
      fallback - whether to fallback to link rewriting without preferredItem in case link rewriting with preferredItem resulted in a not found link
      Returns:
      the HstLink for the jcr node and the mount or null when no link for the node can be made in the mount
    • create

      HstLink create(Node node, HstRequestContext requestContext, String mountAlias)

      Expert: Rewrite a jcr node to a HstLink for the mountAlias. First, the Mount belonging to the mountAlias is searched for. When the Mount belonging to the alias cannot rewrite the node, there is no fallback to whether other Mount's can rewrite the node to a HstLink. Note that the found Mount must

      1. have Mount.getAlias() equal to mountAlias
      2. have at least one of its Mount.getTypes() the same as the Mount belonging to the current requestContext.
      3. have the same VirtualHost.getHostGroupName() as the Mount belonging to the current requestContext.
      If there is no Mount complying to the above rules, null is returned. If a Mount does comply, we return create(Node, Mount)

      Parameters:
      node - the jcr node
      requestContext - the current request context
      mountAlias - the alias of the Mount for which the link should be created for
      Returns:
      the HstLink for the jcr node and the mountAlias or null when there cannot be found an Mount for the alias
      See Also:
    • create

      HstLink create(Node node, HstRequestContext requestContext, String mountAlias, String type)

      Expert: Rewrite a jcr node to a HstLink for the mountAlias and for type. When the Mount belonging to the alias cannot rewrite the node, there is no fallback to whether other Mount's can rewrite the node to a HstLink Note that the found Mount must

      1. have Mount.getAlias() equal to mountAlias
      2. contain type in its Mount.getTypes()
      3. have the same VirtualHost.getHostGroupName() as the Mount belonging to the current requestContext.
      If there is no Mount complying to the above rules, null is returned. If a Mount does comply, we return create(Node, Mount).

      The difference with create(Node, HstRequestContext, String) is that this method does not look for a Mount with a common type as for the Mount from the current request. It does look for a Mount which at least has type as its Mount.getTypes()

      Parameters:
      node - the jcr node
      requestContext - the current request context
      mountAlias - the alias of the Mount for which the link should be created for
      type - the type that should be contained in the Mount.getTypes() where the Mount is the mount belonging to the returned HstLink
      Returns:
      the HstLink for the jcr node and the mountAlias or null when no link for the node can be made in the Mount belonging to the alias or when there belongs no Mount to the alias
      See Also:
    • create

      HstLink create(HippoBean bean, HstRequestContext requestContext)
      Parameters:
      bean -
      requestContext - the HstRequestContext
      Returns:
      a HstLink for bean and the hstRequestContext or null when no link for the node can be made
    • create

      HstLink create(HstSiteMapItem toHstSiteMapItem, Mount mount)
      Regardless the current context, create a HstLink to the HstSiteMapItem that you use as argument. This is only possible if the sitemap item does not contain any ancestor including itself with a wildcard, because the link is ambiguous in that case. If a wildcard is encountered, this method can return null, though this is up to the implementation
      Parameters:
      toHstSiteMapItem - the HstSiteMapItem to link to
      Returns:
      an HstLink instance or null
    • createByRefId

      HstLink createByRefId(String siteMapItemRefId, Mount mount)
      Regardless the current context, create a HstLink to the HstSiteMapItem for Mount mount that has HstSiteMapItem.getRefId() equal to siteMapItemRefId. If there cannot be found a HstSiteMapItem for siteMapItemRefId in the Mount mount, then null is returned. If the HstSiteMapItem is found for siteMapItemRefId, then it can be only used when it does not contain any ancestor including itself with a wildcard, because the link is ambiguous in that case. If a wildcard is encountered, this method can return null, though this is up to the implementation
      Parameters:
      siteMapItemRefId - the HstSiteMapItem.getRefId() of the HstSiteMapItem to link to
      mount - the Mount the siteMapItemRefId should be in
      Returns:
      an HstLink instance or null
    • create

      HstLink create(String path, Mount mount)
      Creates an HstLink for the path and mount. If the mount is a sub mount, eg /fr, then the resulting link includes /fr after the context path.
      Parameters:
      path - the path to the sitemap item, where the sitemap item or one of its ancestors may contain wildcards
      mount - the Mount the path should be in
      Returns:
      an HstLink instance or null
    • create

      HstLink create(String path, Mount mount, boolean containerResource)
      Creates an HstLink for the path and mount. If containerResource is false, the resulting URL WILL include the Mount.getMountPath() after the webapp relative part (context path). When containerResource is false, the resulting URL WILL include the Mount.getMountPath() after the webapp relative part (context path).
      Parameters:
      path - the path to the sitemap item
      mount - the Mount for which the link should be created
      containerResource - true if the link to be created must be a webapp relative link and not relative to Mount.getMountPath()
      Returns:
      an HstLink instance or null
    • createAll

      List<HstLink> createAll(Node node, HstRequestContext requestContext, boolean crossMount)
      Rewrite a jcr Node to a List of HstLinks
      Parameters:
      node -
      requestContext - the HstRequestContext
      crossMount - if true also mounts not belonging to the current request context (HstRequestContext.getResolvedMount()) are tried.
      Returns:
      the List of HstLinks for this jcr Node or empty list when non found. The returned List is sorted by first the HstLinks with the shortest path (in number of slashes) and if there are links with equal number of slashes, return lexically sorted on path
    • createAll

      List<HstLink> createAll(Node node, HstRequestContext requestContext, String hostGroupName, String type, boolean crossMount)
      Rewrite a jcr Node to a List of HstLinks
      Parameters:
      node -
      requestContext - the HstRequestContext
      hostGroupName - The hostGroupName that the HstLinks their Mounts should belong to
      type - the type that should be contained in the Mount.getTypes() where the Mount is the mount belonging to the returned HstLink. If type is null, the type of the HstRequestContext.getResolvedMount() is used.
      crossMount - if true also mounts not belonging to the current request context (HstRequestContext.getResolvedMount()) are tried.
      Returns:
      the List of HstLinks for this jcr Node or empty list when non found. The returned List is sorted by first the HstLinks with the shortest path (in number of slashes) and if there are links with equal number of slashes, return lexically sorted on path
    • createAll

      List<HstLink> createAll(Node node, Mount mount, String hostGroupName, String type, boolean crossMount)
      Rewrite a jcr Node to a List of HstLinks
      Parameters:
      node -
      mount - the Mount
      hostGroupName - The hostGroupName that the HstLinks their Mounts should belong to
      type - the type that should be contained in the Mount.getTypes() where the Mount is the mount belonging to the returned HstLink. If type is null, the type of the Mount is used.
      crossMount - if true also mounts not belonging to the current site are tried.
      Returns:
      the List of HstLinks for this jcr Node or empty list when non found. The returned List is sorted by first the HstLinks with the shortest path (in number of slashes) and if there are links with equal number of slashes, return lexically sorted on path
    • createPageNotFoundLink

      HstLink createPageNotFoundLink(Mount mount)
      Returns:
      a link that can be used for page not found links for mount
    • isBinaryLocation

      boolean isBinaryLocation(String path)
      Binaries frequently have a different linkrewriting mechanism. If this method returns true the location is a binary location.
      Parameters:
      path -
      Returns:
      true when the path points to a binary location
    • getBinariesPrefix

      String getBinariesPrefix()
      Returns:
      The prefix that is used for binary locations. The returned binaries prefix is relative to / and does not include the / itself. If no binaries prefix is configured, "" will be returned
    • getLocationResolvers

      List<LocationResolver> getLocationResolvers()
      Returns:
      the list of location resolvers, primarily used for resolving custom binary locations
    • clear

      void clear()
      Clears possibly available caches