📄 opencmscore.java
字号:
* @return the XML content type manager
*/
protected CmsXmlContentTypeManager getXmlContentTypeManager() {
if (m_xmlContentTypeManager != null) {
return m_xmlContentTypeManager;
}
if (getRunLevel() == OpenCms.RUNLEVEL_1_CORE_OBJECT) {
// this is only to enable test cases to run
m_xmlContentTypeManager = CmsXmlContentTypeManager.createTypeManagerForTestCases();
}
return m_xmlContentTypeManager;
}
/**
* Returns an independent copy of the provided CmsObject.<p>
*
* This can be useful in case a permanent reference to a CmsObject is stored.
* Changing the request context values (for example project, siteroot) in the new CmsObject
* will have no side effects to the CmsObject it was copied form.<p>
*
* @param cms the CmsObject to create a copy of
*
* @return an independent copy of the provided CmsObject
*
* @throws CmsException in case the intialization failed
*
* @see OpenCms#initCmsObject(CmsObject)
* @see OpenCms#initCmsObject(CmsObject, CmsContextInfo)
* @see OpenCms#initCmsObject(String)
*/
protected CmsObject initCmsObject(CmsObject cms) throws CmsException {
CmsContextInfo contextInfo = new CmsContextInfo(cms.getRequestContext());
return initCmsObject(contextInfo);
}
/**
* Returns an initialized CmsObject with the user and context initialized as provided.<p>
*
* Note: Only if the provided <code>adminCms</code> CmsObject has admin permissions,
* this method allows the creation a CmsObject for any existing user. Otherwise
* only the default users 'Guest' and 'Export' can initialized with
* this method, all other user names will throw an Exception.<p>
*
* @param adminCms must either be initialized with "Admin" permissions, or null
* @param contextInfo the context info to create a CmsObject for
*
* @return an initialized CmsObject with the given users permissions
*
* @throws CmsException if an invalid user name was provided
* @throws CmsRoleViolationException if the current user does not have the role permissions to create a context for the requested user
*
* @see org.opencms.db.CmsDefaultUsers#getUserGuest()
* @see org.opencms.db.CmsDefaultUsers#getUserExport()
* @see OpenCms#initCmsObject(CmsObject)
* @see OpenCms#initCmsObject(CmsObject, CmsContextInfo)
* @see OpenCms#initCmsObject(String)
*/
protected CmsObject initCmsObject(CmsObject adminCms, CmsContextInfo contextInfo)
throws CmsRoleViolationException, CmsException {
String userName = contextInfo.getUserName();
if (adminCms == null || !adminCms.hasRole(CmsRole.ADMINISTRATOR)) {
if (!userName.equals(getDefaultUsers().getUserGuest())
&& !userName.equals(getDefaultUsers().getUserExport())) {
// if no admin object is provided, only "Guest" or "Export" user can be generated
CmsMessageContainer message = Messages.get().container(
Messages.ERR_INVALID_INIT_USER_2,
userName,
((adminCms != null) ? (adminCms.getRequestContext().currentUser().getName()) : ""));
if (LOG.isWarnEnabled()) {
LOG.warn(message.key());
}
throw new CmsRoleViolationException(message);
}
}
return initCmsObject(contextInfo);
}
/**
* Returns an initialized CmsObject with the user initialized as provided,
* with the "Online" project selected and "/" set as the current site root.<p>
*
* Note: Only the default users 'Guest' and 'Export' can initialized with
* this method, all other user names will throw an Exception.<p>
*
* @param user the user name to initialize, can only be
* {@link org.opencms.db.CmsDefaultUsers#getUserGuest()} or
* {@link org.opencms.db.CmsDefaultUsers#getUserExport()}
*
* @return an initialized CmsObject with the given users permissions
*
* @throws CmsException if an invalid user name was provided, or if something else goes wrong
*
* @see org.opencms.db.CmsDefaultUsers#getUserGuest()
* @see org.opencms.db.CmsDefaultUsers#getUserExport()
* @see OpenCms#initCmsObject(String)
* @see #initCmsObject(CmsObject, CmsContextInfo)
*/
protected CmsObject initCmsObject(String user) throws CmsException {
return initCmsObject(null, new CmsContextInfo(user));
}
/**
* Constructor to create a new OpenCms object.<p>
*
* It reads the configurations from the <code>opencms.properties</code>
* file in the <code>config/</code> subdirectory. With the information
* from this file is inits a ResourceBroker (Database access module),
* various caching systems and other options.<p>
*
* This will only be done once per accessing class.
*
* @param configuration the configurations from the <code>opencms.properties</code> file
* @throws CmsInitException in case OpenCms can not be initialized
*/
protected synchronized void initConfiguration(ExtendedProperties configuration) throws CmsInitException {
String systemEncoding = null;
try {
systemEncoding = System.getProperty("file.encoding");
} catch (SecurityException se) {
// security manager is active, but we will try other options before giving up
}
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_FILE_ENCODING_1, systemEncoding));
}
// read server ethernet address (MAC) and init UUID generator
String ethernetAddress = configuration.getString("server.ethernet.address", CmsUUID.getDummyEthernetAddress());
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_ETHERNET_ADDRESS_1, ethernetAddress));
}
CmsUUID.init(ethernetAddress);
// set the server name
String serverName = configuration.getString("server.name", "OpenCmsServer");
getSystemInfo().setServerName(serverName);
// initialize the lock manager
m_lockManager = CmsLockManager.getInstance();
// check the installed Java SDK
try {
if (CmsLog.INIT.isInfoEnabled()) {
String jdkinfo = System.getProperty("java.vm.name") + " ";
jdkinfo += System.getProperty("java.vm.version") + " ";
jdkinfo += System.getProperty("java.vm.info") + " ";
jdkinfo += System.getProperty("java.vm.vendor") + " ";
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_JAVA_VM_1, jdkinfo));
String osinfo = System.getProperty("os.name") + " ";
osinfo += System.getProperty("os.version") + " ";
osinfo += System.getProperty("os.arch") + " ";
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_OPERATING_SYSTEM_1, osinfo));
}
} catch (Exception e) {
throw new CmsInitException(Messages.get().container(Messages.ERR_CRITICAL_INIT_PROP_0), e);
}
// initialize the memory monitor
m_memoryMonitor = new CmsMemoryMonitor();
// create the configuration manager instance
m_configurationManager = new CmsConfigurationManager(getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
CmsSystemInfo.FOLDER_CONFIG));
// store the configuration read from "opencms.properties" in the configuration manager
m_configurationManager.setConfiguration(configuration);
// now load the XML configuration
try {
m_configurationManager.loadXmlConfiguration();
} catch (Exception e) {
throw new CmsInitException(Messages.get().container(Messages.ERR_CRITICAL_INIT_XML_0), e);
}
// get the system configuration
CmsSystemConfiguration systemConfiguration = (CmsSystemConfiguration)m_configurationManager.getConfiguration(CmsSystemConfiguration.class);
// get the event manager from the configuration and initialize it with the events already registered
CmsEventManager configuredEventManager = systemConfiguration.getEventManager();
configuredEventManager.initialize(m_eventManager);
m_eventManager = configuredEventManager;
// check if the encoding setting is valid
String setEncoding = systemConfiguration.getDefaultContentEncoding();
String defaultEncoding = CmsEncoder.lookupEncoding(setEncoding, null);
if (defaultEncoding == null) {
// we can not start without a valid encoding setting
throw new CmsInitException(Messages.get().container(Messages.ERR_CRITICAL_INIT_ENCODING_1, setEncoding));
}
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_OPENCMS_ENCODING_1, defaultEncoding));
}
getSystemInfo().setDefaultEncoding(defaultEncoding);
// initialize the memory monitor
CmsMemoryMonitorConfiguration memoryMonitorConfiguration = systemConfiguration.getCmsMemoryMonitorConfiguration();
m_memoryMonitor.initialize(memoryMonitorConfiguration);
// set version history information
getSystemInfo().setVersionHistorySettings(
systemConfiguration.isVersionHistoryEnabled(),
systemConfiguration.getVersionHistoryMaxCount());
// set mail configuration
getSystemInfo().setMailSettings(systemConfiguration.getMailSettings());
// set HTTP authentication settings
getSystemInfo().setHttpAuthenticationSettings(systemConfiguration.getHttpAuthenticationSettings());
// set content notification settings
getSystemInfo().setNotificationTime(systemConfiguration.getNotificationTime());
getSystemInfo().setNotificationProject(systemConfiguration.getNotificationProject());
// set the scheduler manager
m_scheduleManager = systemConfiguration.getScheduleManager();
// set resource init classes
m_resourceInitHandlers = systemConfiguration.getResourceInitHandlers();
// register request handler classes
Iterator it = systemConfiguration.getRequestHandlers().iterator();
while (it.hasNext()) {
I_CmsRequestHandler handler = (I_CmsRequestHandler)it.next();
addRequestHandler(handler);
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.warn(Messages.get().getBundle().key(
Messages.INIT_REQUEST_HANDLER_CLASS_1,
handler.getClass().getName()));
}
}
// read the default user configuration
m_defaultUsers = systemConfiguration.getCmsDefaultUsers();
try {
// initialize the group names for the system roles
CmsRole.initialize(m_defaultUsers);
} catch (CmsSecurityException e) {
// this should never happen
throw new CmsInitException(
Messages.get().container(Messages.ERR_CRITICAL_INIT_GENERIC_1, e.getMessage()),
e);
}
// get the site manager from the configuration
m_siteManager = systemConfiguration.getSiteManager();
// get the VFS / resource configuration
CmsVfsConfiguration vfsConfiguation = (CmsVfsConfiguration)m_configurationManager.getConfiguration(CmsVfsConfiguration.class);
m_resourceManager = vfsConfiguation.getResourceManager();
m_xmlContentTypeManager = vfsConfiguation.getXmlContentTypeManager();
m_defaultFiles = vfsConfiguation.getDefaultFiles();
// initialize translation engines
m_resourceManager.setTranslators(vfsConfiguation.getFolderTranslator(), vfsConfiguation.getFileTranslator());
// try to initialize the flex cache
CmsFlexCache flexCache = null;
try {
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_FLEX_CACHE_STARTING_0));
}
// get the flex cache configuration from the SystemConfiguration
CmsFlexCacheConfiguration flexCacheConfiguration = systemConfiguration.getCmsFlexCacheConfiguration();
// pass configuration to flex cache for initialization
flexCache = new CmsFlexCache(flexCacheConfiguration);
if (CmsLog.INIT.isInfoEnabled()) {
CmsLog.INIT.info(Messages.get().getBundle().key(Messages.INIT_FLEX_CACHE_FINISHED_0));
}
} catch (Exception e) {
if (CmsLog.INIT.isWarnEnabled()) {
CmsLog.INIT.warn(Messages.get().getBundle().key(Messages.INIT_FLEX_CACHE_ERROR_1, e.getMessage()));
}
}
if (flexCache != null) {
// check all reasource loaders if they require the Flex cache
Iterator i = m_resourceManager.getLoaders().iterator();
while (i.hasNext()) {
Object o = i.next();
if (o instanceof I_CmsFlexCacheEnabledLoader) {
// this resource loader requires the Flex cache
((I_CmsFlexCacheEnabledLoader)o).setFlexCache(flexCache);
}
}
}
// get the import/export configuration
CmsImportExportConfiguration importExportConfiguration = (CmsImportExportConfiguration)m_configurationManager.getConfiguration(CmsImportExportConfiguration.class);
m_importExportManager = importExportConfiguration.getImportExportManager();
m_staticExportManager = importExportConfiguration.getStaticExportManager();
// get the search configuration
CmsSearchConfiguration searchConfiguration = (CmsSearchConfiguration)m_configurationManager.getConfiguration(CmsSearchConfiguration.class);
m_searchManager = searchConfiguration.getSearchManager();
// get the workplace configuration
CmsWorkplaceConfiguration workplaceConfiguration = (CmsWorkplaceConfiguration)m_configurationManager.getConfiguration(CmsWorkplaceConfiguration.class);
m_workplaceManager = workplaceConfiguration.getWorkplaceManager();
// add the export points from the workplace
addExportPoints(m_workplaceManager.getExportPoints());
// get the module configuration
CmsModuleConfiguration moduleConfiguration = (CmsModuleConfiguration)m_configurationManager.getConfiguration(CmsModuleConfiguration.class);
m_moduleManager = moduleConfiguration.getModuleManager();
// get the password handler
m_passwordHandler = systemConfiguration.getPasswordHandler();
// get the validation handler
m_validationHandler = systemConfiguration.getValidationHandler();
// get the login manager
m_loginManager = systemConfiguration.getLoginManager();
// init the OpenCms security manager
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -