Strange getChildResources() behaviour
David King <[email protected]> Sun, 25 Mar 2007 20:23:15 -0700
| Newsgroups | gmane.comp.jakarta.slide.user |
|---|---|
| Message-ID | <[email protected]> |
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());
}
}
}
}