org.opencms.loader
Class CmsJspLoader

java.lang.Object
  extended by org.opencms.loader.CmsJspLoader
All Implemented Interfaces:
I_CmsConfigurationParameterHandler, I_CmsFlexCacheEnabledLoader, I_CmsResourceLoader, I_CmsEventListener

public class CmsJspLoader
extends java.lang.Object
implements I_CmsResourceLoader, I_CmsFlexCacheEnabledLoader, I_CmsEventListener

The JSP loader which enables the execution of JSP in OpenCms.

Parameters supported by this loader:

jsp.repository
(Optional) This is the root directory in the "real" file system where generated JSPs are stored. The default is the web application path, e.g. in Tomcat if your web application is names "opencms" it would be ${TOMCAT_HOME}/webapps/opencms/. The jsp.folder (see below) is added to this path. Usually the jsp.repository is not changed.
jsp.folder
(Optional) A path relative to the jsp.repository path where the JSPs generated by OpenCms are stored. The default is to store the generated JSP in /WEB-INF/jsp/. This works well in Tomcat 4, and the JSPs are not accessible directly from the outside this way, only through the OpenCms servlet. Please note: Some servlet environments (e.g. BEA Weblogic) do not permit JSPs to be stored under /WEB-INF. For environments like these, set the path to some place where JSPs can be accessed, e.g. /jsp/ only.
jsp.errorpage.committed
(Optional) This parameter controls behavior of JSP error pages i.e. <% page errorPage="..." %>. If you find that these don't work in your servlet environment, you should try to change the value here. The default true has been tested with Tomcat 4.1 and 5.0. Older versions of Tomcat like 4.0 require a setting of false.

Since:
6.0.0
Version:
$Revision: 1.117 $
Author:
Alexander Kandzior
See Also:
I_CmsResourceLoader

Field Summary
static java.lang.String CACHE_PROPERTY_BYPASS
          Property value for "cache" that indicates that the FlexCache should be bypassed.
static java.lang.String CACHE_PROPERTY_STREAM
          Property value for "cache" that indicates that the output should be streamed.
static java.lang.String DEFAULT_JSP_FOLDER
          Default jsp folder constant.
static java.lang.String DIRECTIVE_END
          Special JSP directive tag start (%>).
static java.lang.String DIRECTIVE_START
          Special JSP directive tag start (<%().
static java.lang.String JSP_EXTENSION
          Extension for JSP managed by OpenCms (.jsp).
static java.lang.String PARAM_CLIENT_CACHE_MAXAGE
          Cache max age parameter name.
static java.lang.String PARAM_JSP_CACHE_SIZE
          Jsp cache size parameter name.
static java.lang.String PARAM_JSP_ERRORPAGE_COMMITTED
          Error page committed parameter name.
static java.lang.String PARAM_JSP_FOLDER
          Jsp folder parameter name.
static java.lang.String PARAM_JSP_REPOSITORY
          Jsp repository parameter name.
static int RESOURCE_LOADER_ID
          The id of this loader.
 
Fields inherited from interface org.opencms.loader.I_CmsResourceLoader
PARAMETER_ELEMENT
 
Fields inherited from interface org.opencms.configuration.I_CmsConfigurationParameterHandler
ADD_PARAMETER_METHOD, INIT_CONFIGURATION_METHOD
 
Fields inherited from interface org.opencms.main.I_CmsEventListener
EVENT_BEFORE_PUBLISH_PROJECT, EVENT_CLEAR_CACHES, EVENT_CLEAR_OFFLINE_CACHES, EVENT_CLEAR_ONLINE_CACHES, EVENT_CLEAR_PRINCIPAL_CACHES, EVENT_FLEX_CACHE_CLEAR, EVENT_FLEX_PURGE_JSP_REPOSITORY, EVENT_FULLSTATIC_EXPORT, EVENT_GROUP_MODIFIED, EVENT_LOGIN_USER, EVENT_OU_MODIFIED, EVENT_PROJECT_MODIFIED, EVENT_PROPERTY_DEFINITION_CREATED, EVENT_PROPERTY_DEFINITION_MODIFIED, EVENT_PROPERTY_MODIFIED, EVENT_PUBLISH_PROJECT, EVENT_REBUILD_SEARCHINDEXES, EVENT_RESOURCE_AND_PROPERTIES_MODIFIED, EVENT_RESOURCE_COPIED, EVENT_RESOURCE_CREATED, EVENT_RESOURCE_DELETED, EVENT_RESOURCE_MODIFIED, EVENT_RESOURCE_MOVED, EVENT_RESOURCES_AND_PROPERTIES_MODIFIED, EVENT_RESOURCES_MODIFIED, EVENT_UPDATE_EXPORTS, EVENT_USER_MODIFIED, KEY_CHANGE, KEY_DBCONTEXT, KEY_GROUP_ID, KEY_GROUP_NAME, KEY_INDEX_NAMES, KEY_OU_ID, KEY_OU_NAME, KEY_PROJECTID, KEY_PUBLISHID, KEY_PUBLISHLIST, KEY_REPORT, KEY_RESOURCE, KEY_RESOURCES, KEY_USER_ACTION, KEY_USER_ID, KEY_USER_NAME, LISTENERS_FOR_ALL_EVENTS, VALUE_GROUP_MODIFIED_ACTION_CREATE, VALUE_GROUP_MODIFIED_ACTION_DELETE, VALUE_GROUP_MODIFIED_ACTION_WRITE, VALUE_OU_MODIFIED_ACTION_CREATE, VALUE_OU_MODIFIED_ACTION_DELETE, VALUE_USER_MODIFIED_ACTION_ADD_USER_TO_GROUP, VALUE_USER_MODIFIED_ACTION_CREATE_USER, VALUE_USER_MODIFIED_ACTION_DELETE_USER, VALUE_USER_MODIFIED_ACTION_REMOVE_USER_FROM_GROUP, VALUE_USER_MODIFIED_ACTION_RESET_PASSWORD, VALUE_USER_MODIFIED_ACTION_SET_OU, VALUE_USER_MODIFIED_ACTION_WRITE_USER
 
Constructor Summary
CmsJspLoader()
          The constructor of the class is empty, the initial instance will be created by the resource manager upon startup of OpenCms.
 
Method Summary
 void addConfigurationParameter(java.lang.String paramName, java.lang.String paramValue)
          Adds a configuration parameter to this parameter configurable class instance.
 void cmsEvent(CmsEvent event)
          Acknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.
 void destroy()
          Destroy this ResourceLoder, this is a NOOP so far.
protected  byte[] dispatchJsp(CmsFlexController controller)
          Dispatches the current request to the OpenCms internal JSP.
 byte[] dump(CmsObject cms, CmsResource file, java.lang.String element, java.util.Locale locale, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Dumps the processed content of the the requested file (and it's sub-elements) to a byte array.
 byte[] export(CmsObject cms, CmsResource resource, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Static exports the contents of the requested file and it's sub-elements.
 java.util.Map getConfiguration()
          Returns the configuration of this parameter configurable class instance, or null if the class does not need to be configured.
protected  CmsFlexController getController(CmsObject cms, CmsResource resource, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res, boolean streaming, boolean top)
          Delivers a Flex controller, either by creating a new one, or by re-using an existing one.
static java.lang.String getJspRepository()
          Returns the absolute path in the "real" file system for the JSP repository toplevel directory.
 int getLoaderId()
          Returns the id of the ResourceLoader.
 void getReferencingStrongLinks(CmsObject cms, CmsResource resource, java.util.Set referencingPaths)
          Returns a set of root paths of files that are including the given resource using the 'link.strong' macro.
 java.lang.String getResourceLoaderInfo()
          Return a String describing the ResourceLoader, which is (localized to the system default locale) "The OpenCms default resource loader for JSP".
 void initConfiguration()
          Initializes a configuration after all parameters have been added.
 boolean isStaticExportEnabled()
          Signals if the loader implementation supports static export of resources.
 boolean isStaticExportProcessable()
          Signals if the loader implementation requires processing during static export of resources.
 boolean isUsableForTemplates()
          Signals if the loader implementation is usable for creating templates.
 boolean isUsingUriWhenLoadingTemplate()
          Signals if a loader that supports templates must be invoked on the template URI or the resource URI.
 void load(CmsObject cms, CmsResource file, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Basic top-page processing method for a I_CmsResourceLoader, this method is called if the page is called as a sub-element on a page not already loaded with a I_CmsResourceLoader.
protected  byte[] parseJsp(byte[] byteContent, java.lang.String encoding, CmsFlexController controller, java.util.Set updatedFiles, boolean isHardInclude)
          Parses the JSP and modifies OpenCms critical directive information.
protected  java.lang.String parseJspCmsTag(java.lang.String content, CmsFlexController controller, java.util.Set updatedFiles)
          Parses the JSP content for the special <%cms file="..."
protected  java.lang.String parseJspEncoding(java.lang.String content, java.lang.String encoding, boolean isHardInclude)
          Parses the JSP content for the <%page pageEncoding="..."
protected  java.lang.String parseJspIncludes(java.lang.String content, CmsFlexController controller, java.util.Set updatedFiles)
          Parses the JSP content for includes and replaces all OpenCms VFS path information with information for the real FS.
protected  java.lang.String parseJspLinkMacros(java.lang.String content, CmsFlexController controller)
          Parses all jsp link macros, and replace them by the right target path.
protected  CmsResource readJspResource(CmsFlexController controller, java.lang.String jspName)
          Returns the jsp resource identified by the given name, using the controllers cms context.
 void removeFromCache(java.util.Set rootPaths, boolean online)
          Removes the given resources from the cache.
 void service(CmsObject cms, CmsResource resource, javax.servlet.ServletRequest req, javax.servlet.ServletResponse res)
          Does the job of including the requested resource, this method is called directly if the element is called as a sub-element from another I_CmsResourceLoader.
 void setFlexCache(CmsFlexCache cache)
          Will be called after the resource manager was initialized.
protected  void showSource(CmsObject cms, CmsResource file, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)
          Delivers the plain uninterpreted resource with escaped XML.
 java.lang.String updateJsp(CmsResource resource, CmsFlexController controller, java.util.Set updatedFiles)
          Updates a JSP page in the "real" file system in case the VFS resource has changed.
protected  java.lang.String updateJsp(java.lang.String vfsName, CmsFlexController controller, java.util.Set updatedFiles)
          Updates a JSP page in the "real" file system in case the VFS resource has changed based on the resource name.
 void updateJspFromRequest(java.lang.String servletPath, CmsFlexRequest request)
          Updates the internal jsp repository when the servlet container tries to compile a jsp file that may not exist.
protected  boolean updateStrongLinks(CmsResource resource, CmsFlexController controller, java.util.Set updatedFiles)
          Updates all jsp files that include the given jsp file using the 'link.strong' macro.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

CACHE_PROPERTY_BYPASS

public static final java.lang.String CACHE_PROPERTY_BYPASS
Property value for "cache" that indicates that the FlexCache should be bypassed.

See Also:
Constant Field Values

CACHE_PROPERTY_STREAM

public static final java.lang.String CACHE_PROPERTY_STREAM
Property value for "cache" that indicates that the output should be streamed.

See Also:
Constant Field Values

DEFAULT_JSP_FOLDER

public static final java.lang.String DEFAULT_JSP_FOLDER
Default jsp folder constant.

See Also:
Constant Field Values

DIRECTIVE_END

public static final java.lang.String DIRECTIVE_END
Special JSP directive tag start (%>).

See Also:
Constant Field Values

DIRECTIVE_START

public static final java.lang.String DIRECTIVE_START
Special JSP directive tag start (<%().

See Also:
Constant Field Values

JSP_EXTENSION

public static final java.lang.String JSP_EXTENSION
Extension for JSP managed by OpenCms (.jsp).

See Also:
Constant Field Values

PARAM_CLIENT_CACHE_MAXAGE

public static final java.lang.String PARAM_CLIENT_CACHE_MAXAGE
Cache max age parameter name.

See Also:
Constant Field Values

PARAM_JSP_CACHE_SIZE

public static final java.lang.String PARAM_JSP_CACHE_SIZE
Jsp cache size parameter name.

See Also:
Constant Field Values

PARAM_JSP_ERRORPAGE_COMMITTED

public static final java.lang.String PARAM_JSP_ERRORPAGE_COMMITTED
Error page committed parameter name.

See Also:
Constant Field Values

PARAM_JSP_FOLDER

public static final java.lang.String PARAM_JSP_FOLDER
Jsp folder parameter name.

See Also:
Constant Field Values

PARAM_JSP_REPOSITORY

public static final java.lang.String PARAM_JSP_REPOSITORY
Jsp repository parameter name.

See Also:
Constant Field Values

RESOURCE_LOADER_ID

public static final int RESOURCE_LOADER_ID
The id of this loader.

See Also:
Constant Field Values
Constructor Detail

CmsJspLoader

public CmsJspLoader()
The constructor of the class is empty, the initial instance will be created by the resource manager upon startup of OpenCms.

See Also:
CmsResourceManager
Method Detail

getJspRepository

public static java.lang.String getJspRepository()
Returns the absolute path in the "real" file system for the JSP repository toplevel directory.

Returns:
The full path to the JSP repository

addConfigurationParameter

public void addConfigurationParameter(java.lang.String paramName,
                                      java.lang.String paramValue)
Description copied from interface: I_CmsConfigurationParameterHandler
Adds a configuration parameter to this parameter configurable class instance.

Specified by:
addConfigurationParameter in interface I_CmsConfigurationParameterHandler
Parameters:
paramName - the name of the parameter
paramValue - the value for the parameter
See Also:
I_CmsConfigurationParameterHandler.addConfigurationParameter(java.lang.String, java.lang.String)

cmsEvent

public void cmsEvent(CmsEvent event)
Description copied from interface: I_CmsEventListener
Acknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.

Specified by:
cmsEvent in interface I_CmsEventListener
Parameters:
event - CmsEvent that has occurred
See Also:
I_CmsEventListener.cmsEvent(org.opencms.main.CmsEvent)

destroy

public void destroy()
Destroy this ResourceLoder, this is a NOOP so far.

Specified by:
destroy in interface I_CmsResourceLoader

dump

public byte[] dump(CmsObject cms,
                   CmsResource file,
                   java.lang.String element,
                   java.util.Locale locale,
                   javax.servlet.http.HttpServletRequest req,
                   javax.servlet.http.HttpServletResponse res)
            throws javax.servlet.ServletException,
                   java.io.IOException
Description copied from interface: I_CmsResourceLoader
Dumps the processed content of the the requested file (and it's sub-elements) to a byte array.

Dumping the content is like calling "load" where the result is not written to the response stream, but to the returned byte array. Dumping is different from an export because the export might actually require that the content is handled or modified in a special way, or set special http headers.

Moreover, if the page type is template based, calling "dump" will not trigger the template but directly deliver the contents from the selected element.

Specified by:
dump in interface I_CmsResourceLoader
Parameters:
cms - used to access the OpenCms VFS
file - the requested resource in the VFS
element - the element in the file to display
locale - the locale to display
req - the servlet request
res - the servlet response
Returns:
the content of the processed file
Throws:
javax.servlet.ServletException - might be thrown by the servlet environment
java.io.IOException - might be thrown by the servlet environment
See Also:
I_CmsResourceLoader.dump(org.opencms.file.CmsObject, org.opencms.file.CmsResource, java.lang.String, java.util.Locale, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

export

public byte[] export(CmsObject cms,
                     CmsResource resource,
                     javax.servlet.http.HttpServletRequest req,
                     javax.servlet.http.HttpServletResponse res)
              throws javax.servlet.ServletException,
                     java.io.IOException
Description copied from interface: I_CmsResourceLoader
Static exports the contents of the requested file and it's sub-elements.

During static export, the resource content may be written to 2 streams: The export stream, and the http response output stream. Which stream is actually used depends whether the export is in "on demand" or "after publish" mode. In "on demand" mode, the resource needs to be written both to the response stream and to the file stream. In "after publish" mode, it's usually only written to the file stream, but sometimes it's required to write to the response stream as well.

Specified by:
export in interface I_CmsResourceLoader
Parameters:
cms - the initialized CmsObject which provides user permissions
resource - the requested OpenCms VFS resource
req - the servlet request
res - the servlet response
Returns:
the contents to export, or null if no export is required
Throws:
javax.servlet.ServletException - might be thrown in the process of including the sub element
java.io.IOException - might be thrown in the process of including the sub element
See Also:
I_CmsResourceLoader.export(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

getConfiguration

public java.util.Map getConfiguration()
Description copied from interface: I_CmsConfigurationParameterHandler
Returns the configuration of this parameter configurable class instance, or null if the class does not need to be configured.

All elements in the configuration are key, value String pairs, set using the I_CmsConfigurationParameterHandler.addConfigurationParameter(String, String) method during initialization of the loader.

Implementations will (should) not to return a direct reference to the internal configuration but just a copy of it, to avoid unwanted external manipulation.

Specified by:
getConfiguration in interface I_CmsConfigurationParameterHandler
Returns:
the configuration of this resource loader, or null
See Also:
I_CmsConfigurationParameterHandler.getConfiguration()

getLoaderId

public int getLoaderId()
Description copied from interface: I_CmsResourceLoader
Returns the id of the ResourceLoader.

Specified by:
getLoaderId in interface I_CmsResourceLoader
Returns:
the id of the ResourceLoader
See Also:
I_CmsResourceLoader.getLoaderId()

getReferencingStrongLinks

public void getReferencingStrongLinks(CmsObject cms,
                                      CmsResource resource,
                                      java.util.Set referencingPaths)
                               throws CmsException
Returns a set of root paths of files that are including the given resource using the 'link.strong' macro.

Parameters:
cms - the current cms context
resource - the resource to check
referencingPaths - the set of already referencing paths, also return parameter
Throws:
CmsException - if something goes wrong

getResourceLoaderInfo

public java.lang.String getResourceLoaderInfo()
Return a String describing the ResourceLoader, which is (localized to the system default locale) "The OpenCms default resource loader for JSP".

Specified by:
getResourceLoaderInfo in interface I_CmsResourceLoader
Returns:
a describing String for the ResourceLoader

initConfiguration

public void initConfiguration()
Description copied from interface: I_CmsConfigurationParameterHandler
Initializes a configuration after all parameters have been added.

Specified by:
initConfiguration in interface I_CmsConfigurationParameterHandler
See Also:
I_CmsConfigurationParameterHandler.initConfiguration()

isStaticExportEnabled

public boolean isStaticExportEnabled()
Description copied from interface: I_CmsResourceLoader
Signals if the loader implementation supports static export of resources.

Specified by:
isStaticExportEnabled in interface I_CmsResourceLoader
Returns:
true if static export is supported, false otherwise
See Also:
I_CmsResourceLoader.isStaticExportEnabled()

isStaticExportProcessable

public boolean isStaticExportProcessable()
Description copied from interface: I_CmsResourceLoader
Signals if the loader implementation requires processing during static export of resources.

Specified by:
isStaticExportProcessable in interface I_CmsResourceLoader
Returns:
true if static export processing is required, false otherwise
See Also:
I_CmsResourceLoader.isStaticExportProcessable()

isUsableForTemplates

public boolean isUsableForTemplates()
Description copied from interface: I_CmsResourceLoader
Signals if the loader implementation is usable for creating templates.

Specified by:
isUsableForTemplates in interface I_CmsResourceLoader
Returns:
true if the loader implementation is usable for creating templates, false otherwise
See Also:
I_CmsResourceLoader.isUsableForTemplates()

isUsingUriWhenLoadingTemplate

public boolean isUsingUriWhenLoadingTemplate()
Description copied from interface: I_CmsResourceLoader
Signals if a loader that supports templates must be invoked on the template URI or the resource URI.

Specified by:
isUsingUriWhenLoadingTemplate in interface I_CmsResourceLoader
Returns:
true if the resource URI is to be used, false if the template URI is to be used
See Also:
I_CmsResourceLoader.isUsingUriWhenLoadingTemplate()

load

public void load(CmsObject cms,
                 CmsResource file,
                 javax.servlet.http.HttpServletRequest req,
                 javax.servlet.http.HttpServletResponse res)
          throws javax.servlet.ServletException,
                 java.io.IOException,
                 CmsException
Description copied from interface: I_CmsResourceLoader
Basic top-page processing method for a I_CmsResourceLoader, this method is called if the page is called as a sub-element on a page not already loaded with a I_CmsResourceLoader.

Specified by:
load in interface I_CmsResourceLoader
Parameters:
cms - the initialized CmsObject which provides user permissions
file - the requested OpenCms VFS resource
req - the servlet request
res - the servlet response
Throws:
javax.servlet.ServletException - might be thrown by the servlet environment
java.io.IOException - might be thrown by the servlet environment
CmsException - in case of errors accessing OpenCms functions
See Also:
I_CmsResourceLoader.load(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

removeFromCache

public void removeFromCache(java.util.Set rootPaths,
                            boolean online)
Removes the given resources from the cache.

Parameters:
rootPaths - the set of root paths to remove
online - if online or offline

service

public void service(CmsObject cms,
                    CmsResource resource,
                    javax.servlet.ServletRequest req,
                    javax.servlet.ServletResponse res)
             throws javax.servlet.ServletException,
                    java.io.IOException,
                    CmsLoaderException
Description copied from interface: I_CmsResourceLoader
Does the job of including the requested resource, this method is called directly if the element is called as a sub-element from another I_CmsResourceLoader.

Specified by:
service in interface I_CmsResourceLoader
Parameters:
cms - used to access the OpenCms VFS
resource - the requested resource in the VFS
req - the servlet request
res - the servlet response
Throws:
javax.servlet.ServletException - might be thrown by the servlet environment
java.io.IOException - might be thrown by the servlet environment
CmsLoaderException
See Also:
I_CmsResourceLoader.service(org.opencms.file.CmsObject, org.opencms.file.CmsResource, javax.servlet.ServletRequest, javax.servlet.ServletResponse)

setFlexCache

public void setFlexCache(CmsFlexCache cache)
Description copied from interface: I_CmsFlexCacheEnabledLoader
Will be called after the resource manager was initialized.

Specified by:
setFlexCache in interface I_CmsFlexCacheEnabledLoader
Parameters:
cache - the (optional) flex cache instance to use
See Also:
I_CmsFlexCacheEnabledLoader.setFlexCache(org.opencms.flex.CmsFlexCache)

updateJsp

public java.lang.String updateJsp(CmsResource resource,
                                  CmsFlexController controller,
                                  java.util.Set updatedFiles)
                           throws java.io.IOException,
                                  javax.servlet.ServletException,
                                  CmsLoaderException
Updates a JSP page in the "real" file system in case the VFS resource has changed.

Also processes the <%@ cms %> tags before the JSP is written to the real FS. Also recursively updates all files that are referenced by a <%@ cms %> tag on this page to make sure the file actually exists in the real FS. All <%@ include %> tags are parsed and the name in the tag is translated from the OpenCms VFS path to the path in the real FS. The same is done for filenames in <%@ page errorPage=... %> tags.

Parameters:
resource - the requested JSP file resource in the VFS
controller - the controller for the JSP integration
updatedFiles - a Set containing all JSP pages that have been already updated
Returns:
the file name of the updated JSP in the "real" FS
Throws:
javax.servlet.ServletException - might be thrown in the process of including the JSP
java.io.IOException - might be thrown in the process of including the JSP
CmsLoaderException - if the resource type can not be read

updateJspFromRequest

public void updateJspFromRequest(java.lang.String servletPath,
                                 CmsFlexRequest request)
Updates the internal jsp repository when the servlet container tries to compile a jsp file that may not exist.

Parameters:
servletPath - the servlet path, just to avoid unneeded recursive calls
request - the current request

dispatchJsp

protected byte[] dispatchJsp(CmsFlexController controller)
                      throws javax.servlet.ServletException,
                             java.io.IOException
Dispatches the current request to the OpenCms internal JSP.

Parameters:
controller - the current controller
Returns:
the content of the processed JSP
Throws:
javax.servlet.ServletException - if inclusion does not work
java.io.IOException - if inclusion does not work

getController

protected CmsFlexController getController(CmsObject cms,
                                          CmsResource resource,
                                          javax.servlet.http.HttpServletRequest req,
                                          javax.servlet.http.HttpServletResponse res,
                                          boolean streaming,
                                          boolean top)
Delivers a Flex controller, either by creating a new one, or by re-using an existing one.

Parameters:
cms - the initial CmsObject to wrap in the controller
resource - the resource requested
req - the current request
res - the current response
streaming - indicates if the response is streaming
top - indicates if the response is the top response
Returns:
a Flex controller

parseJsp

protected byte[] parseJsp(byte[] byteContent,
                          java.lang.String encoding,
                          CmsFlexController controller,
                          java.util.Set updatedFiles,
                          boolean isHardInclude)
Parses the JSP and modifies OpenCms critical directive information.

Parameters:
byteContent - the original JSP content
encoding - the encoding to use for the JSP
controller - the controller for the JSP integration
updatedFiles - a Set containing all JSP pages that have been already updated
isHardInclude - indicated if this page is actually a "hard" include with <%@ include file="..." >
Returns:
the modified JSP content

parseJspCmsTag

protected java.lang.String parseJspCmsTag(java.lang.String content,
                                          CmsFlexController controller,
                                          java.util.Set updatedFiles)
Parses the JSP content for the special <%cms file="..." %> tag.

Parameters:
content - the JSP content to parse
controller - the current JSP controller
updatedFiles - a set of already updated jsp files
Returns:
the parsed JSP content

parseJspEncoding

protected java.lang.String parseJspEncoding(java.lang.String content,
                                            java.lang.String encoding,
                                            boolean isHardInclude)
Parses the JSP content for the <%page pageEncoding="..." %> tag and ensures that the JSP page encoding is set according to the OpenCms "content-encoding" property value of the JSP.

Parameters:
content - the JSP content to parse
encoding - the encoding to use for the JSP
isHardInclude - indicated if this page is actually a "hard" include with <%@ include file="..." >
Returns:
the parsed JSP content

parseJspIncludes

protected java.lang.String parseJspIncludes(java.lang.String content,
                                            CmsFlexController controller,
                                            java.util.Set updatedFiles)
Parses the JSP content for includes and replaces all OpenCms VFS path information with information for the real FS.

Parameters:
content - the JSP content to parse
controller - the current JSP controller
updatedFiles - a set of already updated files
Returns:
the parsed JSP content

parseJspLinkMacros

protected java.lang.String parseJspLinkMacros(java.lang.String content,
                                              CmsFlexController controller)
Parses all jsp link macros, and replace them by the right target path.

Parameters:
content - the content to parse
controller - the request controller
Returns:
the parsed content

readJspResource

protected CmsResource readJspResource(CmsFlexController controller,
                                      java.lang.String jspName)
                               throws CmsException
Returns the jsp resource identified by the given name, using the controllers cms context.

Parameters:
controller - the flex controller
jspName - the name of the jsp
Returns:
an OpenCms resource
Throws:
CmsException - if something goes wrong

showSource

protected void showSource(CmsObject cms,
                          CmsResource file,
                          javax.servlet.http.HttpServletRequest req,
                          javax.servlet.http.HttpServletResponse res)
                   throws CmsException,
                          java.io.IOException
Delivers the plain uninterpreted resource with escaped XML.

This is intended for viewing historical versions.

Parameters:
cms - the initialized CmsObject which provides user permissions
file - the requested OpenCms VFS resource
req - the servlet request
res - the servlet response
Throws:
java.io.IOException - might be thrown by the servlet environment
CmsException - in case of errors accessing OpenCms functions

updateJsp

protected java.lang.String updateJsp(java.lang.String vfsName,
                                     CmsFlexController controller,
                                     java.util.Set updatedFiles)
Updates a JSP page in the "real" file system in case the VFS resource has changed based on the resource name.

Generates a resource based on the provided name and calls updateJsp(CmsResource, CmsFlexController, Set).

Parameters:
vfsName - the name of the JSP file resource in the VFS
controller - the controller for the JSP integration
updatedFiles - a Set containing all JSP pages that have been already updated
Returns:
the file name of the updated JSP in the "real" FS

updateStrongLinks

protected boolean updateStrongLinks(CmsResource resource,
                                    CmsFlexController controller,
                                    java.util.Set updatedFiles)
                             throws CmsLoaderException,
                                    java.io.IOException,
                                    javax.servlet.ServletException
Updates all jsp files that include the given jsp file using the 'link.strong' macro.

Parameters:
resource - the current updated jsp file
controller - the controller for the jsp integration
updatedFiles - the already updated files
Returns:
true if the given JSP file should be updated due to dirty included files
Throws:
javax.servlet.ServletException - might be thrown in the process of including the JSP
java.io.IOException - might be thrown in the process of including the JSP
CmsLoaderException - if the resource type can not be read