Class CmsLinkManager


  • public class CmsLinkManager
    extends java.lang.Object
    Does the link replacement for the ≶link> tags.

    Since this functionality is closely related to the static export, this class resides in the static export package.

    Since:
    6.0.0
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      static java.lang.String getAbsoluteUri​(java.lang.String relativeUri, java.lang.String baseUri)
      Calculates the absolute URI for the "relativeUri" with the given absolute "baseUri" as start.
      static java.lang.String getLinkSubsite​(CmsObject cms, java.lang.String link)
      Gets the absolute path for the subsite a link links to.
      java.lang.String getOnlineLink​(CmsObject cms, java.lang.String resourceName)
      Returns the online link for the given resource, with full server prefix.
      java.lang.String getOnlineLink​(CmsObject cms, java.lang.String resourceName, boolean forceSecure)
      Returns the online link for the given resource, with full server prefix.
      java.lang.String getOnlineLink​(CmsObject cms, java.lang.String resourceName, java.lang.String targetDetailPage, boolean forceSecure)
      Returns the online link for the given resource, with full server prefix.
      java.lang.String getPermalink​(CmsObject cms, java.lang.String resourceName)
      Returns the perma link for the given resource.
      java.lang.String getPermalink​(CmsObject cms, java.lang.String resourceName, CmsUUID detailContentId)
      Returns the perma link for the given resource and optional detail content.
      java.lang.String getPermalinkForCurrentPage​(CmsObject cms)
      Returns the perma link for the current page based on the URI and detail content id stored in the CmsObject passed as a parameter.
      CmsExternalLinksValidationResult getPointerLinkValidationResult()
      Returns the result of the last extern link validation.
      static java.lang.String getRelativeUri​(java.lang.String fromUri, java.lang.String toUri)
      Calculates a relative URI from "fromUri" to "toUri", both URI must be absolute.
      java.lang.String getRootPath​(CmsObject cms, java.lang.String targetUri)
      Returns the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site.
      java.lang.String getRootPath​(CmsObject cms, java.lang.String targetUri, java.lang.String basePath)
      Returns the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site.
      java.lang.String getServerLink​(CmsObject cms, java.lang.String resourceName)
      Returns the link for the given resource in the current project, with full server prefix.
      java.lang.String getServerLink​(CmsObject cms, java.lang.String resourceName, boolean forceSecure)
      Returns the link for the given resource in the current project, with full server prefix.
      static java.lang.String getSitePath​(CmsObject cms, java.lang.String basePath, java.lang.String targetUri)
      Deprecated.
      use getRootPath(CmsObject, String, String) instead, obtain the link manager with OpenCms.getLinkManager()
      java.lang.String getWorkplaceLink​(CmsObject cms, java.lang.String resourceName, boolean forceSecure)
      Returns the link for the given workplace resource.
      static boolean hasScheme​(java.lang.String uri)
      Tests if the given URI starts with a scheme component.
      static boolean isAbsoluteUri​(java.lang.String uri)
      Returns true in case the given URI is absolute.
      static boolean isWorkplaceLink​(java.lang.String link)
      Returns if the given link points to the OpenCms workplace UI.
      static boolean isWorkplaceUri​(java.net.URI uri)
      Returns if the given URI is pointing to the OpenCms workplace UI.
      static java.lang.String removeOpenCmsContext​(java.lang.String path)
      Given a path to a VFS resource, the method removes the OpenCms context, in case the path is prefixed by that context.
      void setLinkSubstitutionHandler​(CmsObject cms, I_CmsLinkSubstitutionHandler linkSubstitutionHandler)
      Sets the internal link substitution handler.
      void setPointerLinkValidationResult​(CmsExternalLinksValidationResult externLinkValidationResult)
      Sets the result of an external link validation.
      java.lang.String substituteLink​(CmsObject cms, java.lang.String link)
      Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link in the current site, for use on web pages.
      java.lang.String substituteLink​(CmsObject cms, java.lang.String link, java.lang.String siteRoot)
      Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages.
      java.lang.String substituteLink​(CmsObject cms, java.lang.String link, java.lang.String siteRoot, boolean forceSecure)
      Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages, using the configured link substitution handler.
      java.lang.String substituteLink​(CmsObject cms, java.lang.String link, java.lang.String siteRoot, java.lang.String targetDetailPage, boolean forceSecure)
      Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages, using the configured link substitution handler.
      java.lang.String substituteLink​(CmsObject cms, CmsResource resource)
      Returns a link from the URI stored in the provided OpenCms user context to the given VFS resource, for use on web pages.
      java.lang.String substituteLinkForRootPath​(CmsObject cms, java.lang.String rootPath)
      Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given root path, for use on web pages.
      java.lang.String substituteLinkForUnknownTarget​(CmsObject cms, java.lang.String link)
      Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.
      java.lang.String substituteLinkForUnknownTarget​(CmsObject cms, java.lang.String link, boolean forceSecure)
      Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.
      java.lang.String substituteLinkForUnknownTarget​(CmsObject cms, java.lang.String link, java.lang.String targetDetailPage, boolean forceSecure)
      Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • getAbsoluteUri

        public static java.lang.String getAbsoluteUri​(java.lang.String relativeUri,
                                                      java.lang.String baseUri)
        Calculates the absolute URI for the "relativeUri" with the given absolute "baseUri" as start.

        If "relativeUri" is already absolute, it is returned unchanged. This method also returns "relativeUri" unchanged if it is not well-formed.

        Parameters:
        relativeUri - the relative URI to calculate an absolute URI for
        baseUri - the base URI, this must be an absolute URI
        Returns:
        an absolute URI calculated from "relativeUri" and "baseUri"
      • getLinkSubsite

        public static java.lang.String getLinkSubsite​(CmsObject cms,
                                                      java.lang.String link)
        Gets the absolute path for the subsite a link links to.

        For detail links, the subsite of the detail page is returned, not the subsite of the detail content

        If the link is not internal, null will be returned.

        Parameters:
        cms - a CMS context
        link - the link to check
        Returns:
        the subsite path for the link target, or null if not applicable
      • getRelativeUri

        public static java.lang.String getRelativeUri​(java.lang.String fromUri,
                                                      java.lang.String toUri)
        Calculates a relative URI from "fromUri" to "toUri", both URI must be absolute.

        Parameters:
        fromUri - the URI to start
        toUri - the URI to calculate a relative path to
        Returns:
        a relative URI from "fromUri" to "toUri"
      • getSitePath

        @Deprecated
        public static java.lang.String getSitePath​(CmsObject cms,
                                                   java.lang.String basePath,
                                                   java.lang.String targetUri)
        Deprecated.
        use getRootPath(CmsObject, String, String) instead, obtain the link manager with OpenCms.getLinkManager()
        Returns the resource root path for the given target URI in the OpenCms VFS, or null in case the target URI points to an external site.

        Parameters:
        cms - the current users OpenCms context
        basePath - path to use as base site for the target URI (can be null)
        targetUri - the target URI
        Returns:
        the resource root path for the given target URI in the OpenCms VFS, or null in case the target URI points to an external site
      • hasScheme

        public static boolean hasScheme​(java.lang.String uri)
        Tests if the given URI starts with a scheme component.

        The scheme component is something like http: or ftp:.

        Parameters:
        uri - the URI to test
        Returns:
        true if the given URI starts with a scheme component
      • isAbsoluteUri

        public static boolean isAbsoluteUri​(java.lang.String uri)
        Returns true in case the given URI is absolute.

        An URI is considered absolute if one of the following is true:

        • The URI starts with a '/' char.
        • The URI contains a ':' in the first 10 chars.
        • The URI is null
        Parameters:
        uri - the URI to test
        Returns:
        true in case the given URI is absolute
      • isWorkplaceLink

        public static boolean isWorkplaceLink​(java.lang.String link)
        Returns if the given link points to the OpenCms workplace UI.

        Parameters:
        link - the link to test
        Returns:
        true in case the given URI points to the OpenCms workplace UI
      • isWorkplaceUri

        public static boolean isWorkplaceUri​(java.net.URI uri)
        Returns if the given URI is pointing to the OpenCms workplace UI.

        Parameters:
        uri - the URI
        Returns:
        true if the given URI is pointing to the OpenCms workplace UI
      • removeOpenCmsContext

        public static java.lang.String removeOpenCmsContext​(java.lang.String path)
        Given a path to a VFS resource, the method removes the OpenCms context, in case the path is prefixed by that context.
        Parameters:
        path - the path where the OpenCms context should be removed
        Returns:
        the adjusted path
      • getOnlineLink

        public java.lang.String getOnlineLink​(CmsObject cms,
                                              java.lang.String resourceName)
        Returns the online link for the given resource, with full server prefix.

        Like http://site.enterprise.com:8080/index.html.

        In case the resource name is a full root path, the site from the root path will be used. Otherwise the resource is assumed to be in the current site set be the OpenCms user context.

        Please note that this method will always return the link as it will appear in the "Online" project, that is after the resource has been published. In case you need a method that just returns the link with the full server prefix, use getServerLink(CmsObject, String).

        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        Returns:
        the online link for the given resource, with full server prefix
        See Also:
        getServerLink(CmsObject, String)
      • getOnlineLink

        public java.lang.String getOnlineLink​(CmsObject cms,
                                              java.lang.String resourceName,
                                              boolean forceSecure)
        Returns the online link for the given resource, with full server prefix.

        Like http://site.enterprise.com:8080/index.html.

        In case the resource name is a full root path, the site from the root path will be used. Otherwise the resource is assumed to be in the current site set be the OpenCms user context.

        Please note that this method will always return the link as it will appear in the "Online" project, that is after the resource has been published. In case you need a method that just returns the link with the full server prefix, use getServerLink(CmsObject, String).

        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        forceSecure - forces the secure server prefix if the target is secure
        Returns:
        the online link for the given resource, with full server prefix
        See Also:
        getServerLink(CmsObject, String)
      • getOnlineLink

        public java.lang.String getOnlineLink​(CmsObject cms,
                                              java.lang.String resourceName,
                                              java.lang.String targetDetailPage,
                                              boolean forceSecure)
        Returns the online link for the given resource, with full server prefix.

        Like http://site.enterprise.com:8080/index.html.

        In case the resource name is a full root path, the site from the root path will be used. Otherwise the resource is assumed to be in the current site set be the OpenCms user context.

        Please note that this method will always return the link as it will appear in the "Online" project, that is after the resource has been published. In case you need a method that just returns the link with the full server prefix, use getServerLink(CmsObject, String).

        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        targetDetailPage - the target detail page, in case of linking to a specific detail page
        forceSecure - forces the secure server prefix if the target is secure
        Returns:
        the online link for the given resource, with full server prefix
        See Also:
        getServerLink(CmsObject, String)
      • getPermalink

        public java.lang.String getPermalink​(CmsObject cms,
                                             java.lang.String resourceName)
        Returns the perma link for the given resource.

        Like http://site.enterprise.com:8080/permalink/4b65369f-1266-11db-8360-bf0f6fbae1f8.html.

        Parameters:
        cms - the cms context
        resourceName - the resource to generate the perma link for
        Returns:
        the perma link
      • getPermalink

        public java.lang.String getPermalink​(CmsObject cms,
                                             java.lang.String resourceName,
                                             CmsUUID detailContentId)
        Returns the perma link for the given resource and optional detail content.
        Parameters:
        cms - the CMS context to use
        resourceName - the page to generate the perma link for
        detailContentId - the structure id of the detail content (may be null)
        Returns:
        the perma link
      • getPermalinkForCurrentPage

        public java.lang.String getPermalinkForCurrentPage​(CmsObject cms)
        Returns the perma link for the current page based on the URI and detail content id stored in the CmsObject passed as a parameter.
        Parameters:
        cms - the CMS context to use to generate the permalink
        Returns:
        the permalink
      • getRootPath

        public java.lang.String getRootPath​(CmsObject cms,
                                            java.lang.String targetUri)
        Returns the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site.

        This methods does not support relative target URI links, so the given URI must be an absolute link.

        See getRootPath(CmsObject, String) for a full explanation of this method.

        Parameters:
        cms - the current users OpenCms context
        targetUri - the target URI link
        Returns:
        the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site
        Since:
        7.0.2
        See Also:
        getRootPath(CmsObject, String, String)
      • getRootPath

        public java.lang.String getRootPath​(CmsObject cms,
                                            java.lang.String targetUri,
                                            java.lang.String basePath)
        Returns the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site.

        The default implementation applies the following transformations to the link:

        • In case the link starts with a VFS prefix (for example /opencms/opencms, this prefix is removed from the result
        • In case the link is not a root path, the current site root is appended to the result.

        • In case the link is relative, it will be made absolute using the given absolute basePath as starting point.

        • In case the link contains a server schema (for example http://www.mysite.de/), which points to a configured site in OpenCms, the server schema is replaced with the root path of the site.

        • In case the link points to an external site, or in case it is not a valid URI, then null is returned.

        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current users OpenCms context
        targetUri - the target URI link
        basePath - path to use as base in case the target URI is relative (can be null)
        Returns:
        the resource root path in the OpenCms VFS for the given target URI link, or null in case the link points to an external site
        Since:
        7.0.2
        See Also:
        for the interface that can be used to fully customize the link substitution, for the default link substitution handler
      • getServerLink

        public java.lang.String getServerLink​(CmsObject cms,
                                              java.lang.String resourceName)
        Returns the link for the given resource in the current project, with full server prefix.

        Like http://site.enterprise.com:8080/index.html.

        In case the resource name is a full root path, the site from the root path will be used. Otherwise the resource is assumed to be in the current site set be the OpenCms user context.

        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        Returns:
        the link for the given resource in the current project, with full server prefix
        See Also:
        getOnlineLink(CmsObject, String)
      • getServerLink

        public java.lang.String getServerLink​(CmsObject cms,
                                              java.lang.String resourceName,
                                              boolean forceSecure)
        Returns the link for the given resource in the current project, with full server prefix.

        Like http://site.enterprise.com:8080/index.html.

        In case the resource name is a full root path, the site from the root path will be used. Otherwise the resource is assumed to be in the current site set be the OpenCms user context.

        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        forceSecure - forces the secure server prefix
        Returns:
        the link for the given resource in the current project, with full server prefix
        See Also:
        getOnlineLink(CmsObject, String)
      • getWorkplaceLink

        public java.lang.String getWorkplaceLink​(CmsObject cms,
                                                 java.lang.String resourceName,
                                                 boolean forceSecure)
        Returns the link for the given workplace resource. This should only be used for resources under /system or /shared.
        Parameters:
        cms - the current OpenCms user context
        resourceName - the resource to generate the online link for
        forceSecure - forces the secure server prefix
        Returns:
        the link for the given resource
      • substituteLink

        public java.lang.String substituteLink​(CmsObject cms,
                                               CmsResource resource)
        Returns a link from the URI stored in the provided OpenCms user context to the given VFS resource, for use on web pages.

        The result will contain the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        Should the current site of the given OpenCms user context cms be different from the site root of the given resource, the result will contain the full server URL to the target resource.

        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current OpenCms user context
        resource - the VFS resource the link should point to
        Returns:
        a link from the URI stored in the provided OpenCms user context to the given VFS resource, for use on web pages
      • substituteLink

        public java.lang.String substituteLink​(CmsObject cms,
                                               java.lang.String link)
        Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link in the current site, for use on web pages.

        The provided link is assumed to be the contained in the site currently set in the provided OpenCms user context cms.

        The result will be an absolute link that contains the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        In case link is a relative URI, the current URI contained in the provided OpenCms user context cms is used to make the relative link absolute.

        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current OpenCms user context
        link - the link to process which is assumed to point to a VFS resource, with optional parameters
        Returns:
        a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link in the current site
      • substituteLink

        public java.lang.String substituteLink​(CmsObject cms,
                                               java.lang.String link,
                                               java.lang.String siteRoot)
        Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages.

        The result will be an absolute link that contains the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        In case link is a relative URI, the current URI contained in the provided OpenCms user context cms is used to make the relative link absolute.

        The provided siteRoot is assumed to be the "home" of the link. In case the current site of the given OpenCms user context cms is different from the provided siteRoot, the full server prefix is appended to the result link.

        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current OpenCms user context
        link - the link to process which is assumed to point to a VFS resource, with optional parameters
        siteRoot - the site root of the link
        Returns:
        the substituted link
      • substituteLink

        public java.lang.String substituteLink​(CmsObject cms,
                                               java.lang.String link,
                                               java.lang.String siteRoot,
                                               boolean forceSecure)
        Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages, using the configured link substitution handler.

        The result will be an absolute link that contains the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        In case link is a relative URI, the current URI contained in the provided OpenCms user context cms is used to make the relative link absolute.

        The provided siteRoot is assumed to be the "home" of the link. In case the current site of the given OpenCms user context cms is different from the provided siteRoot, the full server prefix is appended to the result link.

        A server prefix is also added if

        • the link is contained in a normal document and the link references a secure document
        • the link is contained in a secure document and the link references a normal document
        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current OpenCms user context
        link - the link to process which is assumed to point to a VFS resource, with optional parameters
        siteRoot - the site root of the link
        forceSecure - if true generates always an absolute URL (with protocol and server name) for secure links
        Returns:
        a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot
        See Also:
        for the interface that can be used to fully customize the link substitution, for the default link substitution handler
      • substituteLink

        public java.lang.String substituteLink​(CmsObject cms,
                                               java.lang.String link,
                                               java.lang.String siteRoot,
                                               java.lang.String targetDetailPage,
                                               boolean forceSecure)
        Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot, for use on web pages, using the configured link substitution handler.

        The result will be an absolute link that contains the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        In case link is a relative URI, the current URI contained in the provided OpenCms user context cms is used to make the relative link absolute.

        The provided siteRoot is assumed to be the "home" of the link. In case the current site of the given OpenCms user context cms is different from the provided siteRoot, the full server prefix is appended to the result link.

        A server prefix is also added if

        • the link is contained in a normal document and the link references a secure document
        • the link is contained in a secure document and the link references a normal document
        Please note the above text describes the default behavior as implemented by CmsDefaultLinkSubstitutionHandler, which can be fully customized using the I_CmsLinkSubstitutionHandler interface.

        Parameters:
        cms - the current OpenCms user context
        link - the link to process which is assumed to point to a VFS resource, with optional parameters
        siteRoot - the site root of the link
        targetDetailPage - the target detail page, in case of linking to a specific detail page
        forceSecure - if true generates always an absolute URL (with protocol and server name) for secure links
        Returns:
        a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given link and siteRoot
        See Also:
        for the interface that can be used to fully customize the link substitution, for the default link substitution handler
      • substituteLinkForRootPath

        public java.lang.String substituteLinkForRootPath​(CmsObject cms,
                                                          java.lang.String rootPath)
        Returns a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given root path, for use on web pages.

        The result will contain the configured context path and servlet name, and in the case of the "online" project it will also be rewritten according to to the configured static export settings.

        Should the current site of the given OpenCms user context cms be different from the site root of the given resource root path, the result will contain the full server URL to the target resource.

        Parameters:
        cms - the current OpenCms user context
        rootPath - the VFS resource root path the link should point to
        Returns:
        a link from the URI stored in the provided OpenCms user context to the VFS resource indicated by the given root path
      • substituteLinkForUnknownTarget

        public java.lang.String substituteLinkForUnknownTarget​(CmsObject cms,
                                                               java.lang.String link)
        Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.

        A number of tests are performed with the link in order to find out how to create the link:

        • If link is empty, an empty String is returned.
        • If link starts with an URI scheme component, for example http://, and does not point to an internal OpenCms site, it is returned unchanged.
        • If link is an absolute URI that starts with a configured site root, the site root is cut from the link and the same result as substituteLink(CmsObject, String, String) is returned.
        • Otherwise the same result as substituteLink(CmsObject, String) is returned.
        Parameters:
        cms - the current OpenCms user context
        link - the link to process
        Returns:
        a link from the URI stored in the provided OpenCms user context to the given link
      • substituteLinkForUnknownTarget

        public java.lang.String substituteLinkForUnknownTarget​(CmsObject cms,
                                                               java.lang.String link,
                                                               boolean forceSecure)
        Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.

        A number of tests are performed with the link in order to find out how to create the link:

        • If link is empty, an empty String is returned.
        • If link starts with an URI scheme component, for example http://, and does not point to an internal OpenCms site, it is returned unchanged.
        • If link is an absolute URI that starts with a configured site root, the site root is cut from the link and the same result as substituteLink(CmsObject, String, String) is returned.
        • Otherwise the same result as substituteLink(CmsObject, String) is returned.
        Parameters:
        cms - the current OpenCms user context
        link - the link to process
        forceSecure - forces the secure server prefix if the link target is secure
        Returns:
        a link from the URI stored in the provided OpenCms user context to the given link
      • substituteLinkForUnknownTarget

        public java.lang.String substituteLinkForUnknownTarget​(CmsObject cms,
                                                               java.lang.String link,
                                                               java.lang.String targetDetailPage,
                                                               boolean forceSecure)
        Returns a link from the URI stored in the provided OpenCms user context to the given link, for use on web pages.

        A number of tests are performed with the link in order to find out how to create the link:

        • If link is empty, an empty String is returned.
        • If link starts with an URI scheme component, for example http://, and does not point to an internal OpenCms site, it is returned unchanged.
        • If link is an absolute URI that starts with a configured site root, the site root is cut from the link and the same result as substituteLink(CmsObject, String, String) is returned.
        • Otherwise the same result as substituteLink(CmsObject, String) is returned.
        Parameters:
        cms - the current OpenCms user context
        link - the link to process
        targetDetailPage - the target detail page, in case of linking to a specific detail page
        forceSecure - forces the secure server prefix if the link target is secure
        Returns:
        a link from the URI stored in the provided OpenCms user context to the given link