?? opencms.java
字號:
cms.getRequestContext().getResponse().sendCmsRedirect(resourceName);
}
else {
// throw the CmsException.
throw e;
}
}
else {
// throw the CmsException.
throw e;
}
}
if(file != null) {
// test if this file is only available for internal access operations
if((file.getAccessFlags() & C_ACCESS_INTERNAL_READ) > 0) {
throw new CmsException(CmsException.C_EXTXT[CmsException.C_INTERNAL_FILE]
+ cms.getRequestContext().getUri(), CmsException.C_INTERNAL_FILE);
}
}
return file;
}
/**
* Inits a new user and sets it into the overgiven cms-object.
*
* @param cms the cms-object to use.
* @param cmsReq the cms-request for this http-request.
* @param cmsRes the cms-response for this http-request.
* @param user The name of the user to init.
* @param group The name of the current group.
* @param project The id of the current project.
*/
public void initUser(CmsObject cms, I_CmsRequest cmsReq, I_CmsResponse cmsRes, String user,
String group, int project, CmsCoreSession sessionStorage) throws CmsException {
if((!m_enableElementCache) || (project == C_PROJECT_ONLINE_ID)){
cms.init(c_rb, cmsReq, cmsRes, user, group, project, m_streaming, c_elementCache, sessionStorage);
}else{
cms.init(c_rb, cmsReq, cmsRes, user, group, project, m_streaming, new CmsElementCache(10,200,10), sessionStorage);
}
}
/**
* Prints a copyright information to all log-files.
*/
private void printCopyrightInformation(CmsObject cms) {
String copy[] = cms.copyright();
// log to error-stream
System.err.println(cms.version());
for(int i = 0;i < copy.length;i++) {
System.err.println(copy[i]);
}
// log with opencms-logger
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && isLogging()) {
this.log(C_OPENCMS_INFO, cms.version());
for(int i = 0;i < copy.length;i++) {
this.log(C_OPENCMS_INFO, copy[i]);
}
}
}
/**
* This method loads old sessiondata from the database. It is used
* for sessionfailover.
*
* @param oldSessionId the id of the old session.
* @return the old sessiondata.
*/
Hashtable restoreSession(String oldSessionId) throws CmsException {
// is session-failopver enabled?
if(m_sessionFailover) {
// yes
return c_rb.restoreSession(oldSessionId);
}
else {
// no - do nothing
return null;
}
}
/**
* Sets the mimetype of the response.<br>
* The mimetype is selected by the file extension of the requested document.
* If no available mimetype is found, it is set to the default
* "application/octet-stream".
*
* @param cms The actual OpenCms object.
* @param file The requested document.
*
*/
void setResponse(CmsObject cms, CmsFile file) {
String ext = null;
String mimetype = null;
int lastDot = file.getName().lastIndexOf(".");
// check if there was a file extension
if((lastDot > 0) && (!file.getName().endsWith("."))) {
ext = file.getName().substring(lastDot + 1, file.getName().length());
mimetype = (String)m_mt.get(ext);
// was there a mimetype fo this extension?
if(mimetype != null) {
cms.getRequestContext().getResponse().setContentType(mimetype);
}
else {
cms.getRequestContext().getResponse().setContentType(C_DEFAULT_MIMETYPE);
}
}
else {
cms.getRequestContext().getResponse().setContentType(C_DEFAULT_MIMETYPE);
}
}
/**
* Selects the appropriate launcher for a given file by analyzing the
* file's launcher id and calls the initlaunch() method to initiate the
* generating of the output.
*
* @param cms CmsObject containing all document and user information
* @param file CmsFile object representing the selected file.
* @exception CmsException
*/
public void showResource(CmsObject cms, CmsFile file) throws CmsException {
int launcherId = file.getLauncherType();
String startTemplateClass = file.getLauncherClassname();
I_CmsLauncher launcher = m_launcherManager.getLauncher(launcherId);
if(launcher == null) {
String errorMessage = "Could not launch file " + file.getName() + ". Launcher for requested launcher ID "
+ launcherId + " could not be found.";
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(C_OPENCMS_INFO, "[OpenCms] " + errorMessage);
}
throw new CmsException(errorMessage, CmsException.C_UNKNOWN_EXCEPTION);
}
cms.setLauncherManager(m_launcherManager);
launcher.initlaunch(cms, file, startTemplateClass, this);
}
/**
* This method stores sessiondata into the database. It is used
* for sessionfailover.
*
* @param sessionId the id of the session.
* @param isNew determines, if the session is new or not.
* @return data the sessionData.
*/
void storeSession(String sessionId, Hashtable sessionData) throws CmsException {
// is session failover enabled?
if(m_sessionFailover) {
// yes
c_rb.storeSession(sessionId, sessionData);
}
}
/**
* Returns the registry to read values from it. You don't have the right to write
* values. This is useful for modules, to read module-parameters.
*
* @return the registry to READ values from it.
* @exception Throws CmsException, if the registry can not be returned.
*/
public static I_CmsRegistry getRegistry() throws CmsException {
return c_rb.getRegistry(null, null, null);
}
/**
* Creates the dynamic linkrules.
* The CmsStaticExport class needs a CmsObject to create them.
*/
private void createDynamicLinkRules(){
//create a valid cms-object
CmsObject cms = new CmsObject();
try{
initUser(cms, null, null, C_USER_ADMIN, C_GROUP_ADMIN, C_PROJECT_ONLINE_ID, null);
new CmsStaticExport(cms, null, false, null, null);
}catch(Exception e){
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && CmsBase.isLogging()) {
CmsBase.log(C_OPENCMS_INIT, "Error initialising dynamic link rules. Error: " + Utils.getStackTrace(e));
}
}
}
/**
* Starts a schedule job with a correct instantiated CmsObject.
* @param entry the CmsCronEntry to start.
*/
void startScheduleJob(CmsCronEntry entry) {
// create a valid cms-object
CmsObject cms = new CmsObject();
try {
initUser(cms, null, null, entry.getUserName(), entry.getGroupName(), C_PROJECT_ONLINE_ID, null);
// create a new ScheduleJob and start it
CmsCronScheduleJob job = new CmsCronScheduleJob(cms, entry);
job.start();
} catch(Exception exc) {
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && CmsBase.isLogging()) {
CmsBase.log(C_OPENCMS_CRONSCHEDULER, "Error initialising job for " + entry + " Error: " + Utils.getStackTrace(exc));
}
}
}
/**
* Reads the actual entries from the database and updates the Crontable
*/
void updateCronTable() {
try {
m_table.update(c_rb.readCronTable(null, null));
} catch(Exception exc) {
if(I_CmsLogChannels.C_PREPROCESSOR_IS_LOGGING && A_OpenCms.isLogging()) {
A_OpenCms.log(I_CmsLogChannels.C_OPENCMS_CRITICAL, "[OpenCms] crontable corrupt. Scheduler is now disabled!");
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -