org.opencms.staticexport
Class CmsDefaultLinkSubstitutionHandler

java.lang.Object
  extended by org.opencms.staticexport.CmsDefaultLinkSubstitutionHandler
All Implemented Interfaces:
I_CmsLinkSubstitutionHandler
Direct Known Subclasses:
CmsAdvancedLinkSubstitutionHandler

public class CmsDefaultLinkSubstitutionHandler
extends java.lang.Object
implements I_CmsLinkSubstitutionHandler

Default link substitution behavior.

Since:
7.0.2
Version:
$Revision: 1.10 $
Author:
Alexander Kandzior
See Also:
for the method where this handler is used.

Constructor Summary
CmsDefaultLinkSubstitutionHandler()
           
 
Method Summary
 java.lang.String getLink(CmsObject cms, java.lang.String link, java.lang.String siteRoot, boolean forceSecure)
          Returns the resource root path in the OpenCms VFS for the given 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.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CmsDefaultLinkSubstitutionHandler

public CmsDefaultLinkSubstitutionHandler()
Method Detail

getLink

public java.lang.String getLink(CmsObject cms,
                                java.lang.String link,
                                java.lang.String siteRoot,
                                boolean forceSecure)
Returns the resource root path in the OpenCms VFS for the given link, or null in case the link points to an external site.

If the target URI contains no site information, but starts with the opencms context, the context is removed:

 /opencms/opencms/system/further_path -> /system/further_path
If the target URI contains no site information, the path will be prefixed with the current site from the provided OpenCms user context:
 /folder/page.html -> /sites/mysite/folder/page.html
If the path of the target URI is relative, i.e. does not start with "/", the path will be prefixed with the current site and the given relative path, then normalized. If no relative path is given, null is returned. If the normalized path is outsite a site, null is returned.
 page.html -> /sites/mysite/page.html
 ../page.html -> /sites/mysite/page.html
 ../../page.html -> null
If the target URI contains a scheme/server name that denotes an opencms site, it is replaced by the appropriate site path:
 http://www.mysite.de/folder/page.html -> /sites/mysite/folder/page.html

If the target URI contains a scheme/server name that does not match with any site, or if the URI is opaque or invalid, null is returned:

 http://www.elsewhere.com/page.html -> null
 mailto:someone@elsewhere.com -> null

Specified by:
getLink in interface I_CmsLinkSubstitutionHandler
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:
I_CmsLinkSubstitutionHandler.getLink(org.opencms.file.CmsObject, java.lang.String, java.lang.String, boolean)

getRootPath

public java.lang.String getRootPath(CmsObject cms,
                                    java.lang.String targetUri,
                                    java.lang.String basePath)
Description copied from interface: I_CmsLinkSubstitutionHandler
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 this handler interface.

Specified by:
getRootPath in interface I_CmsLinkSubstitutionHandler
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
See Also:
I_CmsLinkSubstitutionHandler.getRootPath(org.opencms.file.CmsObject, java.lang.String, java.lang.String)