com.opencms.launcher
Class CmsXmlLauncher

java.lang.Object
  |
  +--com.opencms.launcher.A_CmsLauncher
        |
        +--com.opencms.launcher.CmsXmlLauncher
All Implemented Interfaces:
I_CmsConstants, I_CmsLauncher, I_CmsLogChannels
Direct Known Subclasses:
CmsXmlTemplateLoader

public class CmsXmlLauncher
extends com.opencms.launcher.A_CmsLauncher
implements I_CmsLogChannels, I_CmsConstants

OpenCms launcher class for XML templates.

This can be used generating output for XML body files using XML template and subtemplate technology.

The selected body should define a start template class using
<PAGE>
  <CLASS>...</CLASS>
</PAGE>

If no start template is defined, the class given by the parameters will be used. If even this is not defined, CmsXmlTemplate will be used to create output.

Version:
$Revision: 1.44 $ $Date: 2003/02/26 10:30:36 $
Author:
Alexander Lucas

Field Summary
static String C_ELEMENT_REPLACE
          Magic elemet replace name
protected static I_CmsTemplateCache m_templateCache
          The template cache that holds all cached templates
 
Fields inherited from interface com.opencms.boot.I_CmsLogChannels
C_FLEX_CACHE, C_FLEX_LOADER, C_LOGGING, C_MODULE_CRITICAL, C_MODULE_DEBUG, C_MODULE_INFO, C_OPENCMS_CACHE, C_OPENCMS_CRITICAL, C_OPENCMS_CRONSCHEDULER, C_OPENCMS_DEBUG, C_OPENCMS_ELEMENTCACHE, C_OPENCMS_INFO, C_OPENCMS_INIT, C_OPENCMS_POOL, C_OPENCMS_STATICEXPORT, C_OPENCMS_STREAMING, C_PREPROCESSOR_IS_LOGGING
 
Fields inherited from interface com.opencms.core.I_CmsConstants
C_ACCESS_DEFAULT_FLAGS, C_ACCESS_GROUP, C_ACCESS_GROUP_READ, C_ACCESS_GROUP_VISIBLE, C_ACCESS_GROUP_WRITE, C_ACCESS_INTERNAL_READ, C_ACCESS_OWNER, C_ACCESS_OWNER_READ, C_ACCESS_OWNER_VISIBLE, C_ACCESS_OWNER_WRITE, C_ACCESS_PUBLIC, C_ACCESS_PUBLIC_READ, C_ACCESS_PUBLIC_VISIBLE, C_ACCESS_PUBLIC_WRITE, C_ACCESS_READ, C_ACCESS_VISIBLE, C_ACCESS_WRITE, C_ADDITIONAL_INFO_EXPLORERSETTINGS, C_ADDITIONAL_INFO_PREFERENCES, C_ADDITIONAL_INFO_STARTSETTINGS, C_ADDITIONAL_INFO_TASKSETTINGS, C_ADDITIONAL_INFO_TOWN, C_ADDITIONAL_INFO_ZIPCODE, C_AT_LEAST_ONCE, C_CLUSTERURL, C_CONFIGURATION_CACHE, C_CONFIGURATION_CLASS, C_CONFIGURATION_REGISTRY, C_CONFIGURATION_RESOURCEBROKER, C_COPYRIGHT, C_DEFAULT_SITE, C_DELETE_HISTORY, C_ENABLE_HISTORY, C_ERRPREFIX, C_ERRSPERATOR, C_EXPORT_TAG_ACCESS, C_EXPORT_TAG_ADDRESS, C_EXPORT_TAG_CREATOR, C_EXPORT_TAG_DATE, C_EXPORT_TAG_DEFAULTGROUP, C_EXPORT_TAG_DESCRIPTION, C_EXPORT_TAG_DESTINATION, C_EXPORT_TAG_EMAIL, C_EXPORT_TAG_EXPORT, C_EXPORT_TAG_FILE, C_EXPORT_TAG_FIRSTNAME, C_EXPORT_TAG_FLAGS, C_EXPORT_TAG_GROUP, C_EXPORT_TAG_GROUPDATA, C_EXPORT_TAG_GROUPNAME, C_EXPORT_TAG_INFO, C_EXPORT_TAG_LASTMODIFIED, C_EXPORT_TAG_LASTNAME, C_EXPORT_TAG_LAUNCHER_START_CLASS, C_EXPORT_TAG_MODULEXPORT, C_EXPORT_TAG_NAME, C_EXPORT_TAG_OC_VERSION, C_EXPORT_TAG_PARENTGROUP, C_EXPORT_TAG_PASSWORD, C_EXPORT_TAG_PROJECT, C_EXPORT_TAG_PROPERTIES, C_EXPORT_TAG_PROPERTY, C_EXPORT_TAG_RECOVERYPASSWORD, C_EXPORT_TAG_SECTION, C_EXPORT_TAG_SOURCE, C_EXPORT_TAG_TYPE, C_EXPORT_TAG_USER, C_EXPORT_TAG_USERDATA, C_EXPORT_TAG_USERGROUPDATA, C_EXPORT_TAG_USERGROUPS, C_EXPORT_TAG_USERINFO, C_EXPORT_TAG_VALUE, C_EXPORT_TAG_VERSION, C_EXPORT_VERSION, C_EXPORT_XMLFILENAME, C_EXPORTONLYFILES, C_EXPORTONLYUSERS, C_EXPORTPOINT, C_EXPORTPOINT_PATH, C_EXPORTUSERSFILES, C_FCONTENT, C_FELEMENT, C_FILE, C_FILECONTENT, C_FILES_IMPORTED, C_FLAG_DISABLED, C_FLAG_ENABLED, C_FLAG_GROUP_PROJECTCOWORKER, C_FLAG_GROUP_PROJECTMANAGER, C_FLAG_GROUP_ROLE, C_FOLDER, C_FOLDER_SEPARATOR, C_GROUP, C_GROUP_ADMIN, C_GROUP_GUEST, C_GROUP_PROJECTLEADER, C_GROUP_USERS, C_LINKCHECKTABLE_DATE, C_MAX_LENGTH_RESOURCE_NAME, C_MODULE_PROPERTY_ADDITIONAL_RESOURCES, C_MODULE_PROPERTY_ADDITIONAL_RESOURCES_SEPARATOR, C_MODUS_AUTO, C_MODUS_EXPORT, C_MODUS_EXTERN, C_MODUS_OFFLINE, C_MODUS_ONLINE, C_MOUNTPOINT_FILESYSTEM, C_MOUNTPOINT_MYSQL, C_NEVER, C_NO_FILES_IMPORTED, C_ORDER_AGENTUSER, C_ORDER_ENDTIME, C_ORDER_ID, C_ORDER_INITIATORUSER, C_ORDER_NAME, C_ORDER_ORIGINALUSER, C_ORDER_PERCENTAGE, C_ORDER_PRIORITY, C_ORDER_ROLE, C_ORDER_STARTTIME, C_ORDER_STATE, C_ORDER_TASKTYPE, C_ORDER_TIMEOUT, C_ORDER_WAKEUPTIME, C_PASSWORD_MINIMUMSIZE, C_PROJECT_ONLINE, C_PROJECT_ONLINE_ID, C_PROJECT_STATE_ARCHIVE, C_PROJECT_STATE_INVISIBLE, C_PROJECT_STATE_LOCKED, C_PROJECT_STATE_UNLOCKED, C_PROJECT_TYPE_INVISIBLE, C_PROJECT_TYPE_NORMAL, C_PROJECT_TYPE_TEMPORARY, C_PROPERTY_ACTIV, C_PROPERTY_CHANNELID, C_PROPERTY_CONTENT_ENCODING, C_PROPERTY_DEFAULT_FILE, C_PROPERTY_DESCRIPTION, C_PROPERTY_EXPORT, C_PROPERTY_EXPORTNAME, C_PROPERTY_KEYWORDS, C_PROPERTY_NAVPOS, C_PROPERTY_NAVTEXT, C_PROPERTY_RELATIVEROOT, C_PROPERTY_TEMPLATETYPE, C_PROPERTY_TITLE, C_PROPERTY_VISIBLE, C_PUBLISH_METHOD_LINK, C_REGISTRY_DESTINATION, C_REGISTRY_HISTORY, C_REGISTRY_KNOWNLAUNCHERS, C_REGISTRY_LAUNCHER, C_REGISTRY_SOURCE, C_REQUEST_CONSOLE, C_REQUEST_HTTP, C_RESPONSE_CONSOLE, C_RESPONSE_HTTP, C_ROOT, C_ROOT_TEMPLATE_NAME, C_ROOTNAME_COS, C_ROOTNAME_VFS, C_SESSION_ADMIN_POS, C_SESSION_BROADCASTMESSAGE, C_SESSION_CONTENT_ENCODING, C_SESSION_CURRENTGROUP, C_SESSION_DATA, C_SESSION_IS_DIRTY, C_SESSION_MESSAGEPENDING, C_SESSION_MODULE_VECTOR, C_SESSION_PROJECT, C_SESSION_THREAD_ERROR, C_SESSION_USERNAME, C_SORT_ASC, C_SORT_DESC, C_START_ACCESSFLAGS, C_START_DEFAULTGROUP, C_START_LANGUAGE, C_START_LOCKDIALOG, C_START_PROJECT, C_START_VIEW, C_STATE_CHANGED, C_STATE_DELETED, C_STATE_NEW, C_STATE_UNCHANGED, C_STATICEXPORT_PATH, C_STATICEXPORT_START, C_SYNCHRONISATION_PATH, C_SYNCHRONISATION_PROJECT, C_SYNCHRONISATION_RESOURCE, C_SYNCHRONISATION_RESOURCETAG, C_SYSTEMPROPERTY_CRONTABLE, C_SYSTEMPROPERTY_EXPORTPATH, C_SYSTEMPROPERTY_EXTENSIONS, C_SYSTEMPROPERTY_LINKCHECKTABLE, C_SYSTEMPROPERTY_MIMETYPES, C_SYSTEMPROPERTY_MOUNTPOINT, C_SYSTEMPROPERTY_RESOURCE_TYPE, C_TABLE_CHANNELID, C_TASK_FILTER, C_TASK_MESSAGES, C_TASK_MESSAGES_ACCEPTED, C_TASK_MESSAGES_COMPLETED, C_TASK_MESSAGES_FORWARDED, C_TASK_MESSAGES_MEMBERS, C_TASK_ORDER_BY_DATE, C_TASK_ORDER_BY_NAME, C_TASK_PRIORITY_HIGH, C_TASK_PRIORITY_LOW, C_TASK_PRIORITY_NORMAL, C_TASK_STATE_ENDED, C_TASK_STATE_HALTED, C_TASK_STATE_NOTENDED, C_TASK_STATE_PREPARE, C_TASK_STATE_START, C_TASK_STATE_STARTED, C_TASK_VIEW_ALL, C_TASKLOG_SYSTEM, C_TASKLOG_USER, C_TASKORDER_NONE, C_TASKORDER_STARTDATE, C_TASKORDER_TIMEOUT, C_TASKS_ACTIVE, C_TASKS_ALL, C_TASKS_DONE, C_TASKS_NEW, C_TASKS_OPEN, C_TASKSORDER_TASKNAME, C_TEMP_PREFIX, C_TFACCESS, C_TFGROUP, C_TFILEOBJ, C_TFILES, C_TFNAME, C_TFPROPERTYINFO, C_TFPROPERTYNAME, C_TFPROPERTYTYPE, C_TFPROPERTYVALUE, C_TFTYPE, C_TFTYPENAME, C_TFUSER, C_TGDESC, C_TGFLAG, C_TGNAME, C_TGPARENTGROUP, C_TGROUPOBJ, C_TGROUPS, C_TGROUPUSERS, C_TGUSER, C_TUADDINFO, C_TUDESC, C_TUDGROUP, C_TUDISABLED, C_TUEMAIL, C_TUFIRSTNAME, C_TUFLAG, C_TUGROUP, C_TUINFOKEY, C_TUINFOVALUE, C_TULOGIN, C_TUNAME, C_TUPASSWD, C_TUSERGROUPS, C_TUSEROBJ, C_TUSERS, C_TYPE_BODY_NAME, C_TYPE_COMPATIBLEPLAIN_NAME, C_TYPE_FOLDER, C_TYPE_FOLDER_NAME, C_TYPE_IMAGE_NAME, C_TYPE_LAST_INDEX, C_TYPE_PAGE_NAME, C_TYPE_PLAIN_NAME, C_UNKNOWN_ID, C_UNKNOWN_INT, C_UNKNOWN_LAUNCHER, C_UNKNOWN_LAUNCHER_ID, C_UNKNOWN_LONG, C_URL_PREFIX_EXPORT, C_URL_PREFIX_HTTP, C_URL_PREFIX_HTTPS, C_URL_PREFIX_SERVERNAME, C_USER, C_USER_ADMIN, C_USER_GUEST, C_USER_TYPE_SYSTEMANDWEBUSER, C_USER_TYPE_SYSTEMUSER, C_USER_TYPE_WEBUSER, C_WEB_APP_REPLACE_KEY, C_WEEKS_HISTORY, C_WHATEVER, C_XML_BODY_ELEMENT
 
Fields inherited from interface com.opencms.launcher.I_CmsLauncher
C_TYPE_DUMP, C_TYPE_JAVASCRIPT, C_TYPE_JSP, C_TYPE_LINK, C_TYPE_PDF, C_TYPE_VELOCITY, C_TYPE_XML
 
Constructor Summary
CmsXmlLauncher()
           
 
Method Summary
protected  byte[] callCanonicalRoot(CmsObject cms, I_CmsTemplate templateClass, CmsFile masterTemplate, Hashtable parameters)
          Utility method used by the launcher implementation to give control to the CanonicalRoot.
 void clearCache()
          Method for clearing this launchers template cache.
static void clearLauncherCache(CmsObject cms)
          Clear the XML template cache that is maintained in the launcher.
protected  byte[] generateOutput(CmsObject cms, CmsFile file, String startTemplateClass, I_CmsRequest req)
          Starts generating the output.
protected  String getClassName()
          Gets the name of the class in the form "[ClassName] " This can be used for error logging purposes.
 int getLauncherId()
          Gets the ID that indicates the type of the launcher.
static I_CmsTemplateCache getTemplateCache()
          Gets a reference to the global template cache
protected  I_CmsTemplate getTemplateClass(CmsObject cms, String classname)
          Calls the CmsClassManager to get an instance of the given template class.
 void handleException(CmsObject cms, Exception e, String errorText)
          Utility method to handle any occurence of an execption.
 void initlaunch(CmsObject cms, CmsFile file, String startTemplateClass, A_OpenCms openCms)
          Start method called by the OpenCms system to show a resource.
protected  void launch(CmsObject cms, CmsFile file, String startTemplateClass, A_OpenCms openCms)
          Unitary method to start generating the output.
 void setOpenCms(A_OpenCms openCms)
          Sets the currently running OpenCms instance.
protected  void writeBytesToResponse(CmsObject cms, byte[] result)
          Writes a given byte array to the HttpServletRespose output stream.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

C_ELEMENT_REPLACE

public static final String C_ELEMENT_REPLACE
Magic elemet replace name

See Also:
Constant Field Values

m_templateCache

protected static I_CmsTemplateCache m_templateCache
The template cache that holds all cached templates

Constructor Detail

CmsXmlLauncher

public CmsXmlLauncher()
Method Detail

generateOutput

protected byte[] generateOutput(CmsObject cms,
                                CmsFile file,
                                String startTemplateClass,
                                I_CmsRequest req)
                         throws CmsException
Starts generating the output. Calls the canonical root with the appropriate template class.

Parameters:
cms - CmsObject Object for accessing system resources
file - CmsFile Object with the selected resource to be shown
startTemplateClass - Name of the template class to start with.
Throws:
CmsException

getLauncherId

public int getLauncherId()
Gets the ID that indicates the type of the launcher.

Specified by:
getLauncherId in interface I_CmsLauncher
Specified by:
getLauncherId in class com.opencms.launcher.A_CmsLauncher
Returns:
launcher ID

launch

protected void launch(CmsObject cms,
                      CmsFile file,
                      String startTemplateClass,
                      A_OpenCms openCms)
               throws CmsException
Unitary method to start generating the output. Every launcher has to implement this method. In it possibly the selected file will be analyzed, and the Canonical Root will be called with the appropriate template class, template file and parameters. At least the canonical root's output must be written to the HttpServletResponse.

Specified by:
launch in class com.opencms.launcher.A_CmsLauncher
Parameters:
cms - CmsObject Object for accessing system resources
file - CmsFile Object with the selected resource to be shown
startTemplateClass - Name of the template class to start with.
openCms - a instance of A_OpenCms for redirect-needs
Throws:
CmsException

callCanonicalRoot

protected byte[] callCanonicalRoot(CmsObject cms,
                                   I_CmsTemplate templateClass,
                                   CmsFile masterTemplate,
                                   Hashtable parameters)
                            throws CmsException
Utility method used by the launcher implementation to give control to the CanonicalRoot. The CanonicalRoot will call the master template and return a byte array of the generated output.

Parameters:
cms - CmsObject Object for accessing system resources.
templateClass - Class that should generate the output of the master template.
masterTemplate - CmsFile Object with masterTemplate for the output.
parameters - Hashtable with all parameters for the template class.
Returns:
byte array with the generated output or null if there were errors.
Throws:
CmsException

clearCache

public void clearCache()
Method for clearing this launchers template cache.

Specified by:
clearCache in interface I_CmsLauncher

getClassName

protected String getClassName()
Gets the name of the class in the form "[ClassName] " This can be used for error logging purposes.

Returns:
name of this class

getTemplateCache

public static I_CmsTemplateCache getTemplateCache()
Gets a reference to the global template cache

Returns:
Template cache

getTemplateClass

protected I_CmsTemplate getTemplateClass(CmsObject cms,
                                         String classname)
                                  throws CmsException
Calls the CmsClassManager to get an instance of the given template class. The returned object is checked to be an implementing class of the interface I_CmsTemplate. If the template cache of the template class is not yet setted, this will be done, too.

Parameters:
cms - CmsObject object for accessing system resources.
classname - Name of the requested template class.
Returns:
Instance of the template class.
Throws:
CmsException.
CmsException

handleException

public void handleException(CmsObject cms,
                            Exception e,
                            String errorText)
                     throws CmsException
Utility method to handle any occurence of an execption.

If the Exception is NO CmsException (i.e. it was not detected previously) it will be written to the logfile.

If the current user is the anonymous user, no further execption will be thrown, but a server error will be sent (we want to prevent the user from seeing any exeptions). Otherwise a new Exception will be thrown.

Parameters:
cms - CmsObject Object for accessing system resources.
e - Exception that should be handled.
errorText - Error message that should be shown.
Throws:
CmsException

initlaunch

public void initlaunch(CmsObject cms,
                       CmsFile file,
                       String startTemplateClass,
                       A_OpenCms openCms)
                throws CmsException
Start method called by the OpenCms system to show a resource.

In this method initial values valid for all launchers can be set and the _clearcache parameter is checked. After this the abstract method launch(...) is called to invoke the customized part of the launcher.

Specified by:
initlaunch in interface I_CmsLauncher
Parameters:
cms - CmsObject Object for accessing system resources.
file - CmsFile Object with the selected resource to be shown.
startTemplateClass - Name of the template class to start with.
openCms - a instance of A_OpenCms for redirect-needs
Throws:
CmsException

clearLauncherCache

public static void clearLauncherCache(CmsObject cms)
Clear the XML template cache that is maintained in the launcher. To use this method, call it on one of the classes that extend A_CmsLauncher (e.g. com.opencms.launcher.CmsXmlLauncher.clearLauncherCache()).

Parameters:
cms - an initialized CmsObject

writeBytesToResponse

protected void writeBytesToResponse(CmsObject cms,
                                    byte[] result)
                             throws CmsException
Writes a given byte array to the HttpServletRespose output stream.

Parameters:
result - byte array that should be written.
Throws:
CmsException

setOpenCms

public void setOpenCms(A_OpenCms openCms)
Sets the currently running OpenCms instance.

Specified by:
setOpenCms in interface I_CmsLauncher