Interface HstLinkCreator

    • Method Detail

      • create

        HstLink create​(String uuid,
                       javax.jcr.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​(javax.jcr.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​(javax.jcr.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(Node, HstRequestContext, HstSiteMapItem, boolean, boolean)
      • create

        HstLink create​(javax.jcr.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:
        create(Node, HstRequestContext, HstSiteMapItem, boolean)
      • createCanonical

        HstLink createCanonical​(javax.jcr.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
      • createAllAvailableCanonicals

        List<HstLink> createAllAvailableCanonicals​(javax.jcr.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:
        createCanonical(Node, HstRequestContext)
      • createAllAvailableCanonicals

        List<HstLink> createAllAvailableCanonicals​(javax.jcr.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:
        createCanonical(Node, HstRequestContext)
      • create

        HstLink create​(javax.jcr.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​(javax.jcr.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(Node, Mount) only now also fallback to other mounts are supported if is
      • create

        HstLink create​(javax.jcr.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​(javax.jcr.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(Node, Mount)
      • 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​(javax.jcr.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​(javax.jcr.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​(javax.jcr.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