vgritsenko 2002/09/21 08:07:57 Modified: . changes.xml src/java/org/apache/cocoon/servlet CocoonServlet.java src/webapp/WEB-INF web.xml Log: Fix bug 12131: Make directory settings consistent, document changes in web.xml and change log. Revision Changes Path 1.254 +5 -1 xml-cocoon2/changes.xml Index: changes.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/changes.xml,v retrieving revision 1.253 retrieving revision 1.254 diff -u -r1.253 -r1.254 --- changes.xml 20 Sep 2002 23:06:01 -0000 1.253 +++ changes.xml 21 Sep 2002 15:07:56 -0000 1.254 @@ -40,6 +40,10 @@ </devs> <release version="@version@" date="@date@"> + <action dev="VG" type="update" fixes-bug="12131"> + Absolute path now can be specified for work, cache, and upload directory. + Read comments in web.xml, and verify your settings. + </action> <action dev="KP" type="add"> Added JXPath based input modules for Request and Session properties. Demonstration sample is also added. 1.37 +28 -19 xml-cocoon2/src/java/org/apache/cocoon/servlet/CocoonServlet.java Index: CocoonServlet.java =================================================================== RCS file: /home/cvs/xml-cocoon2/src/java/org/apache/cocoon/servlet/CocoonServlet.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- CocoonServlet.java 21 Sep 2002 02:28:29 -0000 1.36 +++ CocoonServlet.java 21 Sep 2002 15:07:56 -0000 1.37 @@ -262,12 +262,11 @@ this.workDir = new File(servletContextPath , workDirParam); } } - this.workDir.mkdirs(); } else { this.workDir = (File) this.servletContext.getAttribute("javax.servlet.context.tempdir"); this.workDir = new File(workDir, "cocoon-files"); - this.workDir.mkdirs(); } + this.workDir.mkdirs(); this.initLogger(); String path = this.servletContextPath; @@ -322,7 +321,7 @@ // add work directory if ((workDirParam != null) && (!workDirParam.trim().equals(""))) { if (log.isDebugEnabled()) { - log.debug("using work-directory " + this.workDir); + log.debug("Using work-directory " + this.workDir); } } else { if (log.isDebugEnabled()) { @@ -336,21 +335,27 @@ if (this.servletContextPath == null) { this.uploadDir = new File(uploadDirParam); } else { - this.uploadDir = IOUtils.createFile( new File(servletContextPath) , uploadDirParam); + // Context path exists : is work-directory absolute ? + File uploadDirParamFile = new File(uploadDirParam); + if (uploadDirParamFile.isAbsolute()) { + // Yes : keep it as is + this.uploadDir = uploadDirParamFile; + } else { + // No : consider it relative to context path + this.uploadDir = new File(servletContextPath , uploadDirParam); + } } - this.uploadDir.mkdirs(); if (log.isDebugEnabled()) { - log.debug("using upload-directory " + this.uploadDir); + log.debug("Using upload-directory " + this.uploadDir); } - } else { - this.uploadDir = IOUtils.createFile(workDir, "upload-dir" + File.separator); + } else { + this.uploadDir = new File(workDir, "upload-dir" + File.separator); if (log.isDebugEnabled()) { log.debug("upload-directory was not set - defaulting to " + this.uploadDir); } } - - this.appContext.put(Constants.CONTEXT_UPLOAD_DIR, this.uploadDir); this.uploadDir.mkdirs(); + this.appContext.put(Constants.CONTEXT_UPLOAD_DIR, this.uploadDir); String maxSizeParam = conf.getInitParameter("upload-max-size"); if ((maxSizeParam != null) && (!maxSizeParam.trim().equals(""))) { @@ -362,21 +367,27 @@ if (this.servletContextPath == null) { this.cacheDir = new File(cacheDirParam); } else { - this.cacheDir = IOUtils.createFile( new File(servletContextPath) , cacheDirParam); + // Context path exists : is work-directory absolute ? + File cacheDirParamFile = new File(cacheDirParam); + if (cacheDirParamFile.isAbsolute()) { + // Yes : keep it as is + this.cacheDir = cacheDirParamFile; + } else { + // No : consider it relative to context path + this.cacheDir = new File(servletContextPath , cacheDirParam); + } } - this.cacheDir.mkdirs(); if (log.isDebugEnabled()) { - log.debug("using cache-directory " + this.cacheDir); + log.debug("Using cache-directory " + this.cacheDir); } - } else { + } else { this.cacheDir = IOUtils.createFile(workDir, "cache-dir" + File.separator); if (log.isDebugEnabled()) { log.debug("cache-directory was not set - defaulting to " + this.cacheDir); } } - - this.appContext.put(Constants.CONTEXT_CACHE_DIR, this.cacheDir); this.cacheDir.mkdirs(); + this.appContext.put(Constants.CONTEXT_CACHE_DIR, this.cacheDir); this.appContext.put(Constants.CONTEXT_CONFIG_URL, this.getConfigFile(conf.getInitParameter("configurations"))); @@ -887,7 +898,6 @@ continue; } try { - String key = property.substring(0,property.indexOf('=')); String value = property.substring(property.indexOf('=') + 1); if (value.indexOf("${") != -1) { @@ -1141,7 +1151,6 @@ } catch(Exception e) { log.error("Cocoon servlet threw an Exception while trying to close stream.", e); } - } } 1.19 +19 -12 xml-cocoon2/src/webapp/WEB-INF/web.xml Index: web.xml =================================================================== RCS file: /home/cvs/xml-cocoon2/src/webapp/WEB-INF/web.xml,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- web.xml 16 Sep 2002 14:05:48 -0000 1.18 +++ web.xml 21 Sep 2002 15:07:57 -0000 1.19 @@ -125,38 +125,45 @@ </init-param> <!-- - This parameter allows to specify where Cocoon should put files - which are uploaded by the upload.xsp sample. The path specified - is always relative to the context path of the servlet. + This parameter allows to specify where Cocoon should put uploaded files. + The path specified can be either absolute or relative to the context + path of the servlet. On windows platform, absolute directory must start + with volume: C:\Path\To\Upload\Directory + The default directory is "upload-dir" in the work-directory <init-param> <param-name>upload-directory</param-name> - <param-value>/WEB-INF/work/upload-dir</param-value> + <param-value>WEB-INF/work/upload-dir</param-value> </init-param> --> <!-- - This parameter allows to specify where Cocoon should put files - which are cached by the storing class. The path specified - is always relative to the context path of the servlet. + This parameter allows to specify where Cocoon should create its page + and other objects cache. The path specified can be either absolute or + relative to the context path of the servlet. On windows platform, + absolute directory must start with volume: C:\Path\To\Cache\Directory + The default directory is "cache-dir" in the work-directory <init-param> <param-name>cache-directory</param-name> - <param-value>/WEB-INF/work/cache-dir</param-value> + <param-value>WEB-INF/work/cache-dir</param-value> </init-param> --> <!-- This parameter allows to specify where Cocoon should put it's - working files. The path specified is always relative to the - context path of the Cocoon servlet. - Usually it is obtained from the servlet engine. + working files. The path specified is either absolute or relative + to the context path of the Cocoon servlet. On windows platform, + absolute directory must start with volume: C:\Path\To\Work\Directory + + The default directory is "cocoon-files" directory in the servlet + context's temp directory (context property javax.servlet.context.tempdir). <init-param> <param-name>work-directory</param-name> - <param-value>/WEB-INF/work</param-value> + <param-value>WEB-INF/work</param-value> </init-param> -->
---------------------------------------------------------------------- In case of troubles, e-mail: [EMAIL PROTECTED] To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]