You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-user@jakarta.apache.org by David King <dk...@ketralnis.com> on 2007/03/26 05:23:15 UTC

Strange getChildResources() behaviour

I have a small program which tries to list an entire collection tree  
by recursion (it's a smaller part of a larger program). In theory  
this should be pretty easy. The tree looks like this (where a  
trailing slash denotes a collection):

dir/1/
dir/1/2
dir/3/
dir/3/4/
dir/5
dir/6

However, when I try to do getChildResources() on "dir", instead of  
getting back {1,3,5,6}, instead I get back {dir,5,6}. That is,  
getChildResources() returns the original resource, and any files (but  
not collections) within the collection. Slide is the only library  
that seems to do this, so I'm inclined to believe that it's a bug  
(either in Slide or the server), but I'm hoping that I'm just doing  
something wrong. I'm doing this from Slide 2.1, talking to a Xythos  
6.0 server (www.xythosondemand.com, but I've tried another Xythos  
server as well).

Here's the actual code:

import java.io.File;
import java.io.IOException;
import java.util.Enumeration;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpURL;
import org.apache.commons.httpclient.HttpsURL;
import org.apache.commons.httpclient.URIException;
import org.apache.webdav.lib.WebdavResource;
import org.apache.webdav.lib.WebdavResources;

public class Davsync {
   private static final String URL="https://server/path/to/collection/";
   private static final String source="/local/path";
   private static final String user="username";
   private static final String password = "password";

   public static void main(String[] args) throws URIException,  
IOException {
     HttpsURL hrl=new HttpsURL(URL);
     hrl.setUserinfo(user, password);

     syncUp(hrl, new File(source));
   }

   private static void syncUp(HttpURL hu, File localFile) throws  
HttpException, IOException {
     syncUp(
         new WebdavResource(hu).getChildResources(),
         localFile);
   }

   private static void syncUp(WebdavResources wrs, File localfile)  
throws IOException {
     Enumeration wr=wrs.getResources();
     while(wr.hasMoreElements()) {
       WebdavResource r=(WebdavResource)wr.nextElement();

       if(r.isCollection()) {
         System.out.println("Dire:" + r.toString());
         // syncUp(r.listWebdavResources(),localfile);
       } else {
         System.out.println("File:" + r.toString());
       }
     }
   }
}

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: Strange getChildResources() behaviour

Posted by Antoine Levy-Lambert <an...@gmx.de>.
Hello David,

could you download the sources which are currently in SVN and see if you
have the bug with the head revision ?

Best regards,

Antoine

David King wrote:
> Sorry about all of the emails, but this bug is really frustrating me
> and I want to help see that it gets fixed.
>
> I've just verified that this is *not* the behaviour under Slide 2.0,
> only 2.1
>
> -- David
>
>
> On 25 Mar 2007, at 20:27, David King wrote:
>
>> I've just verified this against https://svn.apache.org/repos/asf/,
>> which means that it's not the server causing the problem
>>
>> -- David
>>
>>
>> On 25 Mar 2007, at 20:23, David King wrote:
>>
>>> I have a small program which tries to list an entire collection tree
>>> by recursion (it's a smaller part of a larger program). In theory
>>> this should be pretty easy. The tree looks like this (where a
>>> trailing slash denotes a collection):
>>>
>>> dir/1/
>>> dir/1/2
>>> dir/3/
>>> dir/3/4/
>>> dir/5
>>> dir/6
>>>
>>> However, when I try to do getChildResources() on "dir", instead of
>>> getting back {1,3,5,6}, instead I get back {dir,5,6}. That is,
>>> getChildResources() returns the original resource, and any files
>>> (but not collections) within the collection. Slide is the only
>>> library that seems to do this, so I'm inclined to believe that it's
>>> a bug (either in Slide or the server), but I'm hoping that I'm just
>>> doing something wrong. I'm doing this from Slide 2.1, talking to a
>>> Xythos 6.0 server (www.xythosondemand.com, but I've tried another
>>> Xythos server as well).
>>>
>>> Here's the actual code:
>>>
>>> import java.io.File;
>>> import java.io.IOException;
>>> import java.util.Enumeration;
>>> import org.apache.commons.httpclient.HttpException;
>>> import org.apache.commons.httpclient.HttpURL;
>>> import org.apache.commons.httpclient.HttpsURL;
>>> import org.apache.commons.httpclient.URIException;
>>> import org.apache.webdav.lib.WebdavResource;
>>> import org.apache.webdav.lib.WebdavResources;
>>>
>>> public class Davsync {
>>>   private static final String URL="https://server/path/to/collection/";
>>>   private static final String source="/local/path";
>>>   private static final String user="username";
>>>   private static final String password = "password";
>>>
>>>   public static void main(String[] args) throws URIException,
>>> IOException {
>>>     HttpsURL hrl=new HttpsURL(URL);
>>>     hrl.setUserinfo(user, password);
>>>
>>>     syncUp(hrl, new File(source));
>>>   }
>>>
>>>   private static void syncUp(HttpURL hu, File localFile) throws
>>> HttpException, IOException {
>>>     syncUp(
>>>         new WebdavResource(hu).getChildResources(),
>>>         localFile);
>>>   }
>>>
>>>   private static void syncUp(WebdavResources wrs, File localfile)
>>> throws IOException {
>>>     Enumeration wr=wrs.getResources();
>>>     while(wr.hasMoreElements()) {
>>>       WebdavResource r=(WebdavResource)wr.nextElement();
>>>
>>>       if(r.isCollection()) {
>>>         System.out.println("Dire:" + r.toString());
>>>         // syncUp(r.listWebdavResources(),localfile);
>>>       } else {
>>>         System.out.println("File:" + r.toString());
>>>       }
>>>     }
>>>   }
>>> }
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
>>> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: Strange getChildResources() behaviour

Posted by David King <dk...@ketralnis.com>.
Sorry about all of the emails, but this bug is really frustrating me  
and I want to help see that it gets fixed.

I've just verified that this is *not* the behaviour under Slide 2.0,  
only 2.1

-- David


On 25 Mar 2007, at 20:27, David King wrote:

> I've just verified this against https://svn.apache.org/repos/asf/,  
> which means that it's not the server causing the problem
>
> -- David
>
>
> On 25 Mar 2007, at 20:23, David King wrote:
>
>> I have a small program which tries to list an entire collection  
>> tree by recursion (it's a smaller part of a larger program). In  
>> theory this should be pretty easy. The tree looks like this (where  
>> a trailing slash denotes a collection):
>>
>> dir/1/
>> dir/1/2
>> dir/3/
>> dir/3/4/
>> dir/5
>> dir/6
>>
>> However, when I try to do getChildResources() on "dir", instead of  
>> getting back {1,3,5,6}, instead I get back {dir,5,6}. That is,  
>> getChildResources() returns the original resource, and any files  
>> (but not collections) within the collection. Slide is the only  
>> library that seems to do this, so I'm inclined to believe that  
>> it's a bug (either in Slide or the server), but I'm hoping that  
>> I'm just doing something wrong. I'm doing this from Slide 2.1,  
>> talking to a Xythos 6.0 server (www.xythosondemand.com, but I've  
>> tried another Xythos server as well).
>>
>> Here's the actual code:
>>
>> import java.io.File;
>> import java.io.IOException;
>> import java.util.Enumeration;
>> import org.apache.commons.httpclient.HttpException;
>> import org.apache.commons.httpclient.HttpURL;
>> import org.apache.commons.httpclient.HttpsURL;
>> import org.apache.commons.httpclient.URIException;
>> import org.apache.webdav.lib.WebdavResource;
>> import org.apache.webdav.lib.WebdavResources;
>>
>> public class Davsync {
>>   private static final String URL="https://server/path/to/ 
>> collection/";
>>   private static final String source="/local/path";
>>   private static final String user="username";
>>   private static final String password = "password";
>>
>>   public static void main(String[] args) throws URIException,  
>> IOException {
>>     HttpsURL hrl=new HttpsURL(URL);
>>     hrl.setUserinfo(user, password);
>>
>>     syncUp(hrl, new File(source));
>>   }
>>
>>   private static void syncUp(HttpURL hu, File localFile) throws  
>> HttpException, IOException {
>>     syncUp(
>>         new WebdavResource(hu).getChildResources(),
>>         localFile);
>>   }
>>
>>   private static void syncUp(WebdavResources wrs, File localfile)  
>> throws IOException {
>>     Enumeration wr=wrs.getResources();
>>     while(wr.hasMoreElements()) {
>>       WebdavResource r=(WebdavResource)wr.nextElement();
>>
>>       if(r.isCollection()) {
>>         System.out.println("Dire:" + r.toString());
>>         // syncUp(r.listWebdavResources(),localfile);
>>       } else {
>>         System.out.println("File:" + r.toString());
>>       }
>>     }
>>   }
>> }
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: slide-user-help@jakarta.apache.org
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org


Re: Strange getChildResources() behaviour

Posted by David King <dk...@ketralnis.com>.
I've just verified this against https://svn.apache.org/repos/asf/,  
which means that it's not the server causing the problem

-- David


On 25 Mar 2007, at 20:23, David King wrote:

> I have a small program which tries to list an entire collection  
> tree by recursion (it's a smaller part of a larger program). In  
> theory this should be pretty easy. The tree looks like this (where  
> a trailing slash denotes a collection):
>
> dir/1/
> dir/1/2
> dir/3/
> dir/3/4/
> dir/5
> dir/6
>
> However, when I try to do getChildResources() on "dir", instead of  
> getting back {1,3,5,6}, instead I get back {dir,5,6}. That is,  
> getChildResources() returns the original resource, and any files  
> (but not collections) within the collection. Slide is the only  
> library that seems to do this, so I'm inclined to believe that it's  
> a bug (either in Slide or the server), but I'm hoping that I'm just  
> doing something wrong. I'm doing this from Slide 2.1, talking to a  
> Xythos 6.0 server (www.xythosondemand.com, but I've tried another  
> Xythos server as well).
>
> Here's the actual code:
>
> import java.io.File;
> import java.io.IOException;
> import java.util.Enumeration;
> import org.apache.commons.httpclient.HttpException;
> import org.apache.commons.httpclient.HttpURL;
> import org.apache.commons.httpclient.HttpsURL;
> import org.apache.commons.httpclient.URIException;
> import org.apache.webdav.lib.WebdavResource;
> import org.apache.webdav.lib.WebdavResources;
>
> public class Davsync {
>   private static final String URL="https://server/path/to/ 
> collection/";
>   private static final String source="/local/path";
>   private static final String user="username";
>   private static final String password = "password";
>
>   public static void main(String[] args) throws URIException,  
> IOException {
>     HttpsURL hrl=new HttpsURL(URL);
>     hrl.setUserinfo(user, password);
>
>     syncUp(hrl, new File(source));
>   }
>
>   private static void syncUp(HttpURL hu, File localFile) throws  
> HttpException, IOException {
>     syncUp(
>         new WebdavResource(hu).getChildResources(),
>         localFile);
>   }
>
>   private static void syncUp(WebdavResources wrs, File localfile)  
> throws IOException {
>     Enumeration wr=wrs.getResources();
>     while(wr.hasMoreElements()) {
>       WebdavResource r=(WebdavResource)wr.nextElement();
>
>       if(r.isCollection()) {
>         System.out.println("Dire:" + r.toString());
>         // syncUp(r.listWebdavResources(),localfile);
>       } else {
>         System.out.println("File:" + r.toString());
>       }
>     }
>   }
> }
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: slide-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-user-help@jakarta.apache.org