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]

Reply via email to