org.opencms.staticexport
Class CmsLinkManager

java.lang.Object
  extended by org.opencms.staticexport.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
Version:
$Revision: 1.81 $
Author:
Alexander Kandzior

Constructor Summary
CmsLinkManager(I_CmsLinkSubstitutionHandler linkSubstitutionHandler)
          Public constructor.
 
Method Summary
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.
 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 getPermalink(CmsObject cms, java.lang.String resourceName)
          Returns the perma link for the given resource.
 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.
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()
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.
 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, 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 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 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CmsLinkManager

public CmsLinkManager(I_CmsLinkSubstitutionHandler linkSubstitutionHandler)
Public constructor.

Parameters:
linkSubstitutionHandler - the link substitution handler to use
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"

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

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:

Parameters:
uri - the URI to test
Returns:
true in case the given URI is absolute

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)

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

getPointerLinkValidationResult

public CmsExternalLinksValidationResult getPointerLinkValidationResult()
Returns the result of the last extern link validation.

Returns:
the result of the last extern link validation

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:

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)

setLinkSubstitutionHandler

public void setLinkSubstitutionHandler(CmsObject cms,
                                       I_CmsLinkSubstitutionHandler linkSubstitutionHandler)
                                throws CmsRoleViolationException
Sets the internal link substitution handler.

Parameters:
cms - an OpenCms user context that must have the permissions for role CmsRole.ROOT_ADMIN.

linkSubstitutionHandler - the handler to set
Throws:
CmsRoleViolationException - in case the provided OpenCms user context does not have the required permissions

setPointerLinkValidationResult

public void setPointerLinkValidationResult(CmsExternalLinksValidationResult externLinkValidationResult)
Sets the result of an external link validation.

Parameters:
externLinkValidationResult - the result an external link validation

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

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

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:

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