Class CmsJspLoader
- java.lang.Object
-
- 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/. Thejsp.folder(see below) is added to this path. Usually thejsp.repositoryis not changed. - jsp.folder
-
(Optional) A path relative to the
jsp.repositorypath 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 defaulttruehas been tested with Tomcat 4.1 and 5.0. Older versions of Tomcat like 4.0 require a setting offalse.
- Since:
- 6.0.0
- See Also:
I_CmsResourceLoader
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.StringCACHE_PROPERTY_BYPASSProperty value for "cache" that indicates that the FlexCache should be bypassed.static java.lang.StringCACHE_PROPERTY_STREAMProperty value for "cache" that indicates that the output should be streamed.static java.lang.StringDEFAULT_JSP_FOLDERDefault jsp folder constant.static java.lang.StringDIRECTIVE_ENDSpecial JSP directive tag start (%>).static java.lang.StringDIRECTIVE_STARTSpecial JSP directive tag start (<%().static java.lang.StringJSP_EXTENSIONExtension for JSP managed by OpenCms (.jsp).static java.lang.StringPARAM_CLIENT_CACHE_MAXAGECache max age parameter name.static java.lang.StringPARAM_JSP_CACHE_SIZEJsp cache size parameter name.static java.lang.StringPARAM_JSP_ERRORPAGE_COMMITTEDError page committed parameter name.static java.lang.StringPARAM_JSP_FOLDERJsp folder parameter name.static java.lang.StringPARAM_JSP_REPOSITORYJsp repository parameter name.static intRESOURCE_LOADER_IDThe id of this loader.-
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_REINDEX_OFFLINE, EVENT_REINDEX_ONLINE, 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_SITEMAP_CHANGED, EVENT_UPDATE_EXPORTS, EVENT_USER_MODIFIED, KEY_CHANGE, KEY_DBCONTEXT, KEY_GROUP_ID, KEY_GROUP_NAME, KEY_INDEX_NAMES, KEY_IS_ONLINE, KEY_OU_ID, KEY_OU_NAME, KEY_PROJECTID, KEY_PUBLISHID, KEY_PUBLISHLIST, KEY_REINDEX_RELATED, KEY_REPORT, KEY_RESOURCE, KEY_RESOURCES, KEY_SKIPINDEX, KEY_USER_ACTION, KEY_USER_CHANGES, KEY_USER_ID, KEY_USER_NAME, LISTENERS_FOR_ALL_EVENTS, VALUE_CREATE_SIBLING, 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
-
Fields inherited from interface org.opencms.loader.I_CmsResourceLoader
PARAMETER_ELEMENT
-
-
Constructor Summary
Constructors Constructor Description CmsJspLoader()The constructor of the class is empty, the initial instance will be created by the resource manager upon startup of OpenCms.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description voidaddConfigurationParameter(java.lang.String paramName, java.lang.String paramValue)Adds a configuration parameter to this parameter configurable class instance.voidcmsEvent(CmsEvent event)Acknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.voiddestroy()Destroy this ResourceLoder, this is a NOOP so far.protected byte[]dispatchJsp(CmsFlexController controller)Dispatches the current request to the OpenCms internal JSP.protected voiddoPurge(java.lang.Runnable afterPurgeAction)Purges the JSP repository.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.protected java.lang.StringgenerateTaglibInclusions(java.util.Collection<java.lang.String> taglibs)Generates the taglib directives for a collection of taglib identifiers.CmsParameterConfigurationgetConfiguration()Returns the parameters of this configurable class instance, ornullif the class does not need any parameters.protected CmsFlexControllergetController(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.java.lang.StringgetJspRepository()Returns the absolute path in the "real" file system for the JSP repository toplevel directory.intgetLoaderId()Returns the id of the ResourceLoader.voidgetReferencingStrongLinks(CmsObject cms, CmsResource resource, java.util.Set<java.lang.String> referencingPaths)Returns a set of root paths of files that are including the given resource using the 'link.strong' macro.java.lang.StringgetResourceLoaderInfo()Return a String describing the ResourceLoader, which is (localized to the system default locale)"The OpenCms default resource loader for JSP".protected voidinitCaches(int cacheSize)Initializes the caches.voidinitConfiguration()Initializes a configuration after all parameters have been added.booleanisStaticExportEnabled()Signals if the loader implementation supports static export of resources.booleanisStaticExportProcessable()Signals if the loader implementation requires processing during static export of resources.booleanisUsableForTemplates()Signals if the loader implementation is usable for creating templates.booleanisUsingUriWhenLoadingTemplate()Signals if a loader that supports templates must be invoked on the template URI or the resource URI.voidload(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<java.lang.String> updatedFiles, boolean isHardInclude)Parses the JSP and modifies OpenCms critical directive information.protected java.lang.StringparseJspCmsTag(java.lang.String content, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles)Parses the JSP content for the special<%cms file="..." %>tag.protected java.lang.StringparseJspEncoding(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.protected java.lang.StringparseJspIncludes(java.lang.String content, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles)Parses the JSP content for includes and replaces all OpenCms VFS path information with information for the real FS.protected java.lang.StringparseJspLinkMacros(java.lang.String content, CmsFlexController controller)Parses all jsp link macros, and replace them by the right target path.java.lang.StringprocessTaglibAttributes(java.lang.String content)Deprecated.protected CmsResourcereadJspResource(CmsFlexController controller, java.lang.String jspName)Returns the jsp resource identified by the given name, using the controllers cms context.voidremoveFromCache(java.util.Set<java.lang.String> rootPaths, boolean online)Removes the given resources from the cache.voidremoveOfflineJspFromRepository(CmsResource resource)Removes a JSP from an offline project from the RFS.voidservice(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.voidsetFlexCache(CmsFlexCache cache)Will be called after the resource manager was initialized.protected voidshowSource(CmsObject cms, CmsResource file, javax.servlet.http.HttpServletRequest req, javax.servlet.http.HttpServletResponse res)Delivers the plain uninterpreted resource with escaped XML.voidtriggerPurge(java.lang.Runnable afterPurgeAction)Triggers an asynchronous purge of the JSP repository.protected java.lang.StringupdateJsp(java.lang.String vfsName, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles)Updates a JSP page in the "real" file system in case the VFS resource has changed based on the resource name.java.lang.StringupdateJsp(CmsResource resource, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles)Updates a JSP page in the "real" file system in case the VFS resource has changed.voidupdateJspFromRequest(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 booleanupdateStrongLinks(CmsResource resource, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles)Updates all jsp files that include the given jsp file using the 'link.strong' macro.
-
-
-
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
-
addConfigurationParameter
public void addConfigurationParameter(java.lang.String paramName, java.lang.String paramValue)
Description copied from interface:I_CmsConfigurationParameterHandlerAdds a configuration parameter to this parameter configurable class instance.- Specified by:
addConfigurationParameterin interfaceI_CmsConfigurationParameterHandler- Parameters:
paramName- the name of the parameterparamValue- 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_CmsEventListenerAcknowledge the occurrence of the specified event, implement this method to check for CmsEvents in your class.- Specified by:
cmsEventin interfaceI_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:
destroyin interfaceI_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_CmsResourceLoaderDumps 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:
dumpin interfaceI_CmsResourceLoader- Parameters:
cms- used to access the OpenCms VFSfile- the requested resource in the VFSelement- the element in the file to displaylocale- the locale to displayreq- the servlet requestres- the servlet response- Returns:
- the content of the processed file
- Throws:
javax.servlet.ServletException- might be thrown by the servlet environmentjava.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_CmsResourceLoaderStatic 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:
exportin interfaceI_CmsResourceLoader- Parameters:
cms- the initialized CmsObject which provides user permissionsresource- the requested OpenCms VFS resourcereq- the servlet requestres- the servlet response- Returns:
- the contents to export, or
nullif no export is required - Throws:
javax.servlet.ServletException- might be thrown in the process of including the sub elementjava.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 CmsParameterConfiguration getConfiguration()
Description copied from interface:I_CmsConfigurationParameterHandlerReturns the parameters of this configurable class instance, ornullif the class does not need any parameters.- Specified by:
getConfigurationin interfaceI_CmsConfigurationParameterHandler- Returns:
- the parameters of this configurable class instance,
or
nullif the class does not need any parameters - See Also:
I_CmsConfigurationParameterHandler.getConfiguration()
-
getJspRepository
public 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
-
getLoaderId
public int getLoaderId()
Description copied from interface:I_CmsResourceLoaderReturns the id of the ResourceLoader.- Specified by:
getLoaderIdin interfaceI_CmsResourceLoader- Returns:
- the id of the ResourceLoader
- See Also:
I_CmsResourceLoader.getLoaderId()
-
getReferencingStrongLinks
public void getReferencingStrongLinks(CmsObject cms, CmsResource resource, java.util.Set<java.lang.String> 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 contextresource- the resource to checkreferencingPaths- 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:
getResourceLoaderInfoin interfaceI_CmsResourceLoader- Returns:
- a describing String for the ResourceLoader
-
initConfiguration
public void initConfiguration()
Description copied from interface:I_CmsConfigurationParameterHandlerInitializes a configuration after all parameters have been added.- Specified by:
initConfigurationin interfaceI_CmsConfigurationParameterHandler- See Also:
I_CmsConfigurationParameterHandler.initConfiguration()
-
isStaticExportEnabled
public boolean isStaticExportEnabled()
Description copied from interface:I_CmsResourceLoaderSignals if the loader implementation supports static export of resources.- Specified by:
isStaticExportEnabledin interfaceI_CmsResourceLoader- Returns:
- true if static export is supported, false otherwise
- See Also:
I_CmsResourceLoader.isStaticExportEnabled()
-
isStaticExportProcessable
public boolean isStaticExportProcessable()
Description copied from interface:I_CmsResourceLoaderSignals if the loader implementation requires processing during static export of resources.- Specified by:
isStaticExportProcessablein interfaceI_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_CmsResourceLoaderSignals if the loader implementation is usable for creating templates.- Specified by:
isUsableForTemplatesin interfaceI_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_CmsResourceLoaderSignals if a loader that supports templates must be invoked on the template URI or the resource URI.- Specified by:
isUsingUriWhenLoadingTemplatein interfaceI_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_CmsResourceLoaderBasic 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:
loadin interfaceI_CmsResourceLoader- Parameters:
cms- the initialized CmsObject which provides user permissionsfile- the requested OpenCms VFS resourcereq- the servlet requestres- the servlet response- Throws:
javax.servlet.ServletException- might be thrown by the servlet environmentjava.io.IOException- might be thrown by the servlet environmentCmsException- 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)
-
processTaglibAttributes
@Deprecated public java.lang.String processTaglibAttributes(java.lang.String content)
Deprecated.Replaces taglib attributes in page directives with taglib directives.- Parameters:
content- the JSP source text- Returns:
- the transformed JSP text
-
removeFromCache
public void removeFromCache(java.util.Set<java.lang.String> rootPaths, boolean online)
Removes the given resources from the cache.- Parameters:
rootPaths- the set of root paths to removeonline- if online or offline
-
removeOfflineJspFromRepository
public void removeOfflineJspFromRepository(CmsResource resource) throws CmsLoaderException
Removes a JSP from an offline project from the RFS.- Parameters:
resource- the offline JSP resource to remove from the RFS- Throws:
CmsLoaderException- if accessing the loader fails
-
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_CmsResourceLoaderDoes 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:
servicein interfaceI_CmsResourceLoader- Parameters:
cms- used to access the OpenCms VFSresource- the requested resource in the VFSreq- the servlet requestres- the servlet response- Throws:
javax.servlet.ServletException- might be thrown by the servlet environmentjava.io.IOException- might be thrown by the servlet environmentCmsLoaderException- 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_CmsFlexCacheEnabledLoaderWill be called after the resource manager was initialized.- Specified by:
setFlexCachein interfaceI_CmsFlexCacheEnabledLoader- Parameters:
cache- the (optional) flex cache instance to use- See Also:
I_CmsFlexCacheEnabledLoader.setFlexCache(org.opencms.flex.CmsFlexCache)
-
triggerPurge
public void triggerPurge(java.lang.Runnable afterPurgeAction)
Triggers an asynchronous purge of the JSP repository.- Parameters:
afterPurgeAction- the action to execute after purging
-
updateJsp
public java.lang.String updateJsp(CmsResource resource, CmsFlexController controller, java.util.Set<java.lang.String> 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 VFScontroller- the controller for the JSP integrationupdatedFiles- 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 JSPjava.io.IOException- might be thrown in the process of including the JSPCmsLoaderException- 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 callsrequest- 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 workjava.io.IOException- if inclusion does not work
-
doPurge
protected void doPurge(java.lang.Runnable afterPurgeAction)
Purges the JSP repository.- Parameters:
afterPurgeAction- the action to execute after purging
-
generateTaglibInclusions
protected java.lang.String generateTaglibInclusions(java.util.Collection<java.lang.String> taglibs)
Generates the taglib directives for a collection of taglib identifiers.- Parameters:
taglibs- the taglib identifiers- Returns:
- a string containing taglib directives
-
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 controllerresource- the resource requestedreq- the current requestres- the current responsestreaming- indicates if the response is streamingtop- indicates if the response is the top response- Returns:
- a Flex controller
-
initCaches
protected void initCaches(int cacheSize)
Initializes the caches.- Parameters:
cacheSize- the cache size
-
parseJsp
protected byte[] parseJsp(byte[] byteContent, java.lang.String encoding, CmsFlexController controller, java.util.Set<java.lang.String> updatedFiles, boolean isHardInclude)
Parses the JSP and modifies OpenCms critical directive information.- Parameters:
byteContent- the original JSP contentencoding- the encoding to use for the JSPcontroller- the controller for the JSP integrationupdatedFiles- a Set containing all JSP pages that have been already updatedisHardInclude- 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<java.lang.String> updatedFiles)
Parses the JSP content for the special<%cms file="..." %>tag.- Parameters:
content- the JSP content to parsecontroller- the current JSP controllerupdatedFiles- 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 parseencoding- the encoding to use for the JSPisHardInclude- 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<java.lang.String> 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 parsecontroller- the current JSP controllerupdatedFiles- 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 parsecontroller- 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 controllerjspName- 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 permissionsfile- the requested OpenCms VFS resourcereq- the servlet requestres- the servlet response- Throws:
java.io.IOException- might be thrown by the servlet environmentCmsException- in case of errors accessing OpenCms functions
-
updateJsp
protected java.lang.String updateJsp(java.lang.String vfsName, CmsFlexController controller, java.util.Set<java.lang.String> 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 VFScontroller- the controller for the JSP integrationupdatedFiles- 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<java.lang.String> 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 filecontroller- the controller for the jsp integrationupdatedFiles- the already updated files- Returns:
trueif 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 JSPjava.io.IOException- might be thrown in the process of including the JSPCmsLoaderException- if the resource type can not be read
-
-