HI.
I am Takuya Matsuhira.
(I am not good at English.)

I am tring to create webdav client using jackrabbit api.
And I will use some jface class like WebTreeContentProvider and
WebTreeLabelProvider.
But I cannot  resolve setInput value.
(Maybe File class using File.listRoots)

I read the Website http://wiki.apache.org/jackrabbit/WebDAV .
But I cannot resolve my trouble.

So,would you tell me how to make webdav client using
this method ?

Souce which I am creating is below.
-------
import java.io.IOException;
import java.util.*;
import org.apache.commons.httpclient.*;
import org.eclipse.jface.viewers.*;
import org.eclipse.jface.window.*;
import org.eclipse.jface.action.*;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.custom.*;
import org.eclipse.swt.layout.FillLayout;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.jackrabbit.webdav.*;
import org.apache.jackrabbit.webdav.client.methods.DavMethod;
import org.apache.jackrabbit.webdav.client.methods.PropFindMethod;

public class JackClient extends ApplicationWindow {
        TreeViewer tree;
        @SuppressWarnings("unchecked")
        Vector sites;
        final static String URL = "http://example.kanazawa-u.ac.jp";;
        
        @SuppressWarnings("unchecked")
        public JackClient() {
                this(new Vector());
        }
        
        @SuppressWarnings("unchecked")
        public JackClient(Vector sites){
                super(null);
                this.sites = sites;
        }
        protected Control createContents(Composite parent){
                
                getShell().setText(URL);
                getShell().setSize(250, 450);
                
                Composite composite = new Composite(parent,SWT.NONE);
                composite.setLayout(new FillLayout());
                tree = new TreeViewer(composite);
                tree.setContentProvider(new WebTreeContentProvider());
                tree.setLabelProvider(new WebTreeLabelProvider());
                tree.setInput(sites);
                
                return composite;
        }
        
        public class WebTreeContentProvider  implements ITreeContentProvider{
                
                public void inputChanged(Viewer viewer, Object oldInput, Object 
newInput){
                }
                
                @SuppressWarnings("unchecked")
                public Object[] getElements(Object inputElement){
                        
                        Vector list = new Vector();
                        
                        try {
                                DavMethod pFind = new PropFindMethod
                                
("URL",DavConstants.PROPFIND_ALL_PROP,DavConstants.DEPTH_1);
                                HttpClient client = InitClient();
                                client.executeMethod(pFind);
                                MultiStatus multiStatus = 
pFind.getResponseBodyAsMultiStatus();
                                MultiStatusResponse[] responses = 
multiStatus.getResponses();
                                MultiStatusResponse currResponse;
                                
                                for(int i=0; i<responses.length; i++){
                                        currResponse = responses[i];
                                        
if(!(currResponse.getHref().equals("/"))){
                                                
list.add(currResponse.getHref());
                                        }
                                }
                        } catch (Exception e) {
                                e.printStackTrace();
                        }
                        return list.toArray();
                }
                
                public Object[] getChildren(Object elements){
                        return ((DavResource)elements).getCollection();
                }
                
                public boolean hasChildren(Object object){
                        return((DavResource)object).isCollection();
                }       
                
                public Object getParent(Object child){
                        return getChildren(child);
                }
                
                public void dispose(){
                }       
        }

        public class WebTreeLabelProvider extends LabelProvider{
                public String getText(Object element){
                        String name = ((DavResource)element).getHref();
                        return name;
                }       
        }
        
        public class NamedAction extends Action{
                String name;
                
                public String getText(){
                        return name;
                }
                
        }
        
        public static HttpClient InitClient(){
                HostConfiguration hostConfig = new HostConfiguration();
                hostConfig.setHost(URL);
                HttpConnectionManager connectionManager = new
MultiThreadedHttpConnectionManager();
                HttpConnectionManagerParams params = new 
HttpConnectionManagerParams();
                int maxHostConnection;
                maxHostConnection = 20;
                params.setMaxConnectionsPerHost(hostConfig, maxHostConnection);
                connectionManager.setParams(params);
                HttpClient client = new HttpClient(connectionManager);
                Credentials creds = new UsernamePasswordCredentials("","");
                client.getState().setCredentials(AuthScope.ANY, creds);
                client.setHostConfiguration(hostConfig);

                return client;  
        }

        public static void main(String[] args){
                JackClient window = new JackClient();
                window.setBlockOnOpen(true);
                window.open();
                Display.getCurrent().dispose();
        }

}

-- 
+---------------------------------------+
Takuya MATSUHIRA
Information Media Center of Kanazawa University
E-mail:[email protected]
+---------------------------------------+

Reply via email to