unico       2004/06/28 03:10:04

  Modified:    src/blocks/webdav/java/org/apache/cocoon/components/source/impl
                        WebDAVSource.java
  Log:
  makeCollection() should act like File.mkdirs, ie any non-existent parent 
collectinos should be created as well.
  fix bug in getParent() that in some circumstances it returned itself as its 
parent
  
  Revision  Changes    Path
  1.29      +9 -4      
cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSource.java
  
  Index: WebDAVSource.java
  ===================================================================
  RCS file: 
/home/cvs/cocoon-2.1/src/blocks/webdav/java/org/apache/cocoon/components/source/impl/WebDAVSource.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- WebDAVSource.java 13 Apr 2004 17:13:29 -0000      1.28
  +++ WebDAVSource.java 28 Jun 2004 10:10:04 -0000      1.29
  @@ -602,8 +602,8 @@
        * @see org.apache.excalibur.source.TraversableSource#getParent()
        */
       public Source getParent() throws SourceException {
  -        String path = isCollection()?"..":".";
  -      
  +        initResource(WebdavResource.BASIC, DepthSupport.DEPTH_0);
  +        String path = this.resource.isCollection()?"..":".";
           try {
               HttpURL parentURL;
               if (url instanceof HttpsURL) {
  @@ -749,8 +749,13 @@
           try {
               if (!this.resource.mkcolMethod()) {
                   int status = this.resource.getStatusCode();
  +                if (status == 409) {
  +                    // parent does not exist, create it and try again
  +                    ((ModifiableTraversableSource) 
getParent()).makeCollection();
  +                    makeCollection();
  +                }
                   // Ignore status 405 - Not allowed: collection already exists
  -                if (status != 405) {
  +                else if (status != 405) {
                       final String msg = 
                           "Unable to create collection " + getSecureURI()
                           + ". Server responded " + 
this.resource.getStatusCode()
  
  
  

Reply via email to