I seem to find that when I'm submitting patches to Slide, they tend to hit a lot of files. Oh well. Hopefully the attached patch will come through.

In regards to bug http://nagoya.apache.org/bugzilla/show_bug.cgi?id=11410, I believe this fixes a number of issues. At least at this first try, I'm not submitting it as an attachment to that bug, as my patch touches on a number of unrelated issues as well.

Specifically:

   * All JDK 1.4 related Javadoc warnings have fixed.
   * Miscellaneous other Javadoc cleanups
   * All of the webDAV "method" classes take *already encoded* paths as
     their parameters.  This is a critical change for clients of the
     library who expect to use these methods just like HttpClient
     methods, and pass full URLs to the method constructors, not just
     paths relative to one server.
   * Deprecation warnings related to HttpClient have been removed.

Thank you for considering the patch.

-Eric Johnson

Index: src/webdav/client/src/org/apache/webdav/ant/CollectionScanner.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/ant/CollectionScanner.java,v
retrieving revision 1.7
diff -u -r1.7 CollectionScanner.java
--- src/webdav/client/src/org/apache/webdav/ant/CollectionScanner.java  4 Apr 2003 
15:25:14 -0000       1.7
+++ src/webdav/client/src/org/apache/webdav/ant/CollectionScanner.java  25 Jun 2003 
18:30:19 -0000
@@ -110,10 +110,7 @@
         try {
 
             // check to make sure that DAV is supported...
-            OptionsMethod options = new OptionsMethod();
-            options.setPath(baseURL.getFile());
-            client.startSession(baseURL.getHost(),
-                                (baseURL.getPort() < 0 ? 80 : baseURL.getPort()));
+            OptionsMethod options = new OptionsMethod(baseURL.toString());
             client.executeMethod(options);
 
             if (!options.isAllowed("PROPFIND")) {
@@ -122,8 +119,7 @@
             }
 
             // get a list of all resources from the given URL
-            PropFindMethod propFind = new PropFindMethod();
-            propFind.setPath(baseURL.getFile());
+            PropFindMethod propFind = new PropFindMethod( baseURL.toString() );
             propFind.setPropertyNames(PROPERTY_NAMES.elements());
             propFind.setType(PropFindMethod.NAMES);
             client.executeMethod(propFind);
Index: src/webdav/client/src/org/apache/webdav/ant/taskdefs/Get.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/ant/taskdefs/Get.java,v
retrieving revision 1.7
diff -u -r1.7 Get.java
--- src/webdav/client/src/org/apache/webdav/ant/taskdefs/Get.java       4 Apr 2003 
15:25:14 -0000       1.7
+++ src/webdav/client/src/org/apache/webdav/ant/taskdefs/Get.java       25 Jun 2003 
18:30:19 -0000
@@ -126,15 +126,15 @@
                     "Includes must be specified");
             }
 
+            // validity check on the URL
+            URL url = new URL(baseURL);
+
             if ((this.userid != null && !this.userid.equals("")) &&
                 (this.password != null && !this.password.equals(""))) {
-                client.getState().setCredentials(null, new 
UsernamePasswordCredentials(this.userid, this.password));
+                client.getState().setCredentials(null, url.getHost(), new 
UsernamePasswordCredentials(this.userid, this.password));
             }
 
-            // validity check on the URL
-            URL url = new URL(baseURL);
-
-            client.startSession(url.getHost(),
+            client.getHostConfiguration().setHost(url.getHost(),
                                 (url.getPort() < 0 ? 80 : url.getPort()));
 
             Scanner scanner = getScanner(url);
@@ -176,7 +176,6 @@
                 input.close();
                 getMethod.recycle();
             }
-            client.endSession();
 
         } catch (BuildException e) {
             log(e.getMessage());
@@ -199,7 +198,7 @@
     /**
      * Set the base URL.
      *
-     * @param base URL for the request.
+     * @param baseURL The base URL for the request.
      */
     public void setBaseurl(String baseURL) {
         if (baseURL.endsWith("/")) {
Index: src/webdav/client/src/org/apache/webdav/ant/taskdefs/Put.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/ant/taskdefs/Put.java,v
retrieving revision 1.8
diff -u -r1.8 Put.java
--- src/webdav/client/src/org/apache/webdav/ant/taskdefs/Put.java       4 Apr 2003 
15:25:14 -0000       1.8
+++ src/webdav/client/src/org/apache/webdav/ant/taskdefs/Put.java       25 Jun 2003 
18:30:19 -0000
@@ -65,10 +65,8 @@
 import java.net.URL;
 import java.net.URLConnection;
 import java.util.Vector;
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.HttpStatus;
-import org.apache.commons.httpclient.UsernamePasswordCredentials;
+
+import org.apache.commons.httpclient.*;
 import org.apache.commons.httpclient.methods.PutMethod;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.FileScanner;
@@ -128,7 +126,7 @@
     /**
      * Should we try to lock the remote resource as we upload it?
      *
-     * @param userid - HTTP userid
+     * @return <code>true</code> if the resource should be locked on upload.
      */
     public boolean getLock() {
         return this.lock;
@@ -141,7 +139,7 @@
     /**
      * Get a userid to access the resources
      *
-     * @returns userid - HTTP userid
+     * @return userid - HTTP userid
      */
     public String getUserid() {
         return userid;
@@ -159,7 +157,7 @@
     /**
      * Get a password to access the resources
      *
-     * @returns userid - HTTP userid
+     * @return The password for the resources.
      */
     public String getPassword() {
         return password;
@@ -182,7 +180,7 @@
     /**
      * Set the base URL.
      *
-     * @param base URL for the request.
+     * @param url The base URL for the request.
      */
     public void setUrl(String url) {
         if (url.endsWith("/")) {
@@ -201,17 +199,16 @@
     public void execute() throws BuildException {
         try {
 
+            URL url = new URL(toURL);
+
             if ((this.userid != null && !this.userid.equals("")) &&
                 (this.password != null && !this.password.equals(""))) {
-                client.getState().setCredentials(null,
+                client.getState().setCredentials(null, url.getHost(),
                     new UsernamePasswordCredentials(this.userid, this.password));
             }
 
             // validity check on the URL
-            URL url = new URL(toURL);
-
-            client.startSession(url.getHost(),
-                                (url.getPort() < 0 ? 80 : url.getPort()));
+            client.getHostConfiguration().setHost(url.getHost(), url.getPort() < 0 ? 
80 : url.getPort());
 /*
             OptionsMethod optionsMethod = new OptionsMethod();
             optionsMethod.setPath(url.getFile());
@@ -237,8 +234,6 @@
                 uploadFiles(url.getFile(),
                             fileset.getDirectoryScanner(this.project));
             }
-
-            client.endSession();
 
         } catch (MalformedURLException e) {
             throw new BuildException(e.getMessage(), e);
Index: src/webdav/client/src/org/apache/webdav/lib/ResponseEntity.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/ResponseEntity.java,v
retrieving revision 1.5
diff -u -r1.5 ResponseEntity.java
--- src/webdav/client/src/org/apache/webdav/lib/ResponseEntity.java     4 Apr 2003 
15:25:18 -0000       1.5
+++ src/webdav/client/src/org/apache/webdav/lib/ResponseEntity.java     25 Jun 2003 
18:30:19 -0000
@@ -80,9 +80,11 @@
     /**
      * Get the href string in the response XML element.
      *
-     * Each response XML element MUST contain an href XML element that gives
+     * <p>Each response XML element MUST contain an href XML element that gives
      * the URI of the resource on which the properties in the prop XML
-     * element are defined.
+     * element are defined.</p>
+     *
+     * <p>This returns exactly the href returned by the server, it is not decoded.</p>
      *
      * @return the href string.
      */
Index: src/webdav/client/src/org/apache/webdav/lib/WebdavResource.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavResource.java,v
retrieving revision 1.63
diff -u -r1.63 WebdavResource.java
--- src/webdav/client/src/org/apache/webdav/lib/WebdavResource.java     16 Jun 2003 
16:01:41 -0000      1.63
+++ src/webdav/client/src/org/apache/webdav/lib/WebdavResource.java     25 Jun 2003 
18:30:22 -0000
@@ -63,11 +63,7 @@
 
 package org.apache.webdav.lib;
 
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
+import java.io.*;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.text.DateFormat;
@@ -84,12 +80,12 @@
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.HttpMethod;
-import org.apache.commons.httpclient.HttpState;
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.UsernamePasswordCredentials;
 import org.apache.util.DOMUtils;
 import org.apache.util.HttpURL;
 import org.apache.util.WebdavStatus;
+import org.apache.util.URLUtil;
 import org.apache.webdav.lib.methods.GetMethod;
 import org.apache.webdav.lib.methods.HeadMethod;
 import org.apache.webdav.lib.methods.PutMethod;
@@ -792,15 +788,19 @@
 
 
     /**
-     * Set the DAV basic properties like:
-     * <pre>
-     *  - displayname
-     *  - getcontentlength
-     *  - getcontenttype
-     *  - resourcetype
-     *  - getlastmodified
-     *  - lockdiscovery
-     * </pre>
+     * Sets the basic properties on a resource by indirectly issuing a PROPFIND
+     * on the resource.
+     *
+     * <p>Properties retrieved include:
+     *
+     * <ul>
+     *  <li>displayname</li>
+     *  <li>getcontentlength</li>
+     *  <li>getcontenttype</li>
+     *  <li>resourcetype</li>
+     *  <li>getlastmodified</li>
+     *  <li>lockdiscovery</li>
+     * </ul>
      *
      * @param depth The depth to find properties.
      */
@@ -820,20 +820,24 @@
 
 
     /**
-     * Set the DAV default properties like:
-     * <pre>
-     *  - creationdate
-     *  - displayname
-     *  - getcontentlanguage
-     *  - getcontentlength
-     *  - getcontenttype
-     *  - getetag
-     *  - getlastmodified
-     *  - lockdiscovery
-     *  - resourcetype
-     *  - source
-     *  - supportedlock
-     * </pre>
+     * Set the default properties on the resource by indirectly issuing a PROPFIND 
request
+     * for a default set of properties.
+     *
+     * <p>Properties retrieved include:
+     *
+     * <ul>
+     *  <li>creationdate</li>
+     *  <li>displayname</li>
+     *  <li>getcontentlanguage</li>
+     *  <li>getcontentlength</li>
+     *  <li>getcontenttype</li>
+     *  <li>getetag</li>
+     *  <li>getlastmodified</li>
+     *  <li>lockdiscovery</li>
+     *  <li>resourcetype</li>
+     *  <li>source</li>
+     *  <li>supportedlock</li>
+     * </ul>
      *
      * @param depth The depth to find properties.
      */
@@ -888,8 +892,9 @@
      * Set WebDAV properties following to the given http URL.
      * This method is fundamental for getting information of a collection.
      *
-     * @param httpURL The parent http URL to get properties.
-     * @param depth The depth.
+     * @param responses An enumeration over [EMAIL PROTECTED] ResponseEntity} items, 
one
+     * for each resource for which information was returned via PROPFIND.
+     *
      * @exception HttpException
      * @exception IOException The socket error with a server.
      */
@@ -904,13 +909,21 @@
                 (ResponseEntity) responses.nextElement();
 
             boolean itself = false;
-            String href = (String) response.getHref();
-            if (!href.startsWith("/"))
-                href = HttpURL.getPath(href);
-            String httpURLPath = httpURL.getPath();
-            int compared = httpURLPath.compareToIgnoreCase(href);
+            String href = response.getHref();
+            String resourcePath = href;
+            // note - we want to compare the "escaped" (URL encoded) versions
+            // here, in case the path includes problematic encoded characters,
+            // including ?, and #.
+            if (!resourcePath.startsWith("/")) {
+                resourcePath = HttpURL.getEscapedPath(href);
+            }
+            String httpURLPath = httpURL.getEscapedPath();
+            // this is a case sensitive compare, because HTTP is case sensitive
+            // once you get past the domain name and port, and this only compares
+            // paths.
+            int compared = httpURLPath.compareTo(resourcePath);
             // Compare with the href path and requested-path itself.
-            if (compared == 0 || compared == -1 && href.endsWith("/") ||
+            if (compared == 0 || compared == -1 && resourcePath.endsWith("/") ||
                 compared == 1 && httpURLPath.endsWith("/")) {
                 // Set the status code for this resource.
                 if (response.getStatusCode() > 0)
@@ -928,7 +941,6 @@
                 workingResource = createWebdavResource(client);
                 workingResource.setDebug(debug);
             }
-            String displayName = null;
 
             // clear the current lock set
             workingResource.setLockDiscovery(null);
@@ -943,8 +955,10 @@
                 workingResource.processProperty(property);
             }
 
+            String displayName = workingResource.getDisplayName();
+
             if (displayName == null || displayName.trim().equals("")) {
-                displayName = HttpURL.getName(href);
+                displayName = HttpURL.getName(resourcePath);
             }
             if (!itself) {
                 workingResource.setHttpURL(httpURL, displayName, NOACTION);
@@ -1066,8 +1080,7 @@
      */
     protected synchronized boolean isTheClient() throws MalformedURLException {
 
-        HttpState state = client.getState();
-        Credentials creds = client.getState().getCredentials(null);
+        Credentials creds = client.getState().getCredentials(null, client.getHost() );
         String userName = null;
         String password = null;
 
@@ -1569,7 +1582,7 @@
     /**
      * Set the value of DAV property, lockdiscovery.
      *
-     * @param lockdiscovery The lockdiscovery property.
+     * @param lockDiscovery The lockdiscovery property.
      */
     protected void setLockDiscovery(LockDiscoveryProperty lockDiscovery) {
         this.lockDiscovery = lockDiscovery;
@@ -1706,7 +1719,7 @@
     /**
      * Set the properties for this resource.
      *
-     * @param action The action to find properties for this resource.
+     * @param depth The depth to which properties should be found.
      */
     public void setProperties(int depth)
         throws HttpException, IOException {
@@ -1762,8 +1775,6 @@
     /**
      * Set the overwrite flag for COPY and MOVE.
      * Should be set before the method is executed.
-     *
-     * @return true if it ok with overwriting.
      */
     public void setOverwrite(boolean overwrite) {
         this.overwrite = overwrite;
@@ -1903,7 +1914,8 @@
         // To be atomic.
         Vector hrefList = new Vector();
         while (hrefs.hasMoreElements()) {
-            hrefList.addElement((String) hrefs.nextElement());
+            String name = (String) hrefs.nextElement();
+            hrefList.addElement(name);
         }
         // Calculate the size of the string array.
         int num = hrefList.size();
@@ -1980,8 +1992,6 @@
      * Set the URL encoding flag for this http URL.
      *
      * @param encodeURLs true if it is encoded.
-     * @exception MalformedURLException
-     * @exception IOException
      *
      * @deprecated  No longer has any effect.
      */
@@ -2033,7 +2043,7 @@
 
         setClient();
 
-        AclMethod method = new AclMethod(path);
+        AclMethod method = new AclMethod( encode(path) );
         generateIfHeader(method);
         for (int i=0; i<aces.length ; i++) {
             Ace ace = aces[i];
@@ -2064,7 +2074,7 @@
 
         // Default depth=0, type=by_name
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path),
+            new PropFindMethod(escapedPathFromUnescapedPath(path),
                                DepthSupport.DEPTH_0, properties.elements());
         client.executeMethod(method);
 
@@ -2072,7 +2082,7 @@
         if (responses.hasMoreElements()) {
             ResponseEntity response =
                 (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
 
             // Set status code for this resource.
             if ((thisResource == true) && (response.getStatusCode() > 0))
@@ -2113,7 +2123,7 @@
 
         // Default depth=0, type=by_name
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path),
+            new PropFindMethod(escapedPathFromUnescapedPath(path),
                                DepthSupport.DEPTH_0, properties.elements());
         client.executeMethod(method);
 
@@ -2121,7 +2131,7 @@
         if (responses.hasMoreElements()) {
             ResponseEntity response =
                 (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
 
             // Set status code for this resource.
             if ((thisResource == true) && (response.getStatusCode() > 0))
@@ -2162,7 +2172,7 @@
 
         // Default depth=0, type=by_name
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path),
+            new PropFindMethod(escapedPathFromUnescapedPath(path),
                                DepthSupport.DEPTH_0, properties.elements());
         client.executeMethod(method);
 
@@ -2170,7 +2180,7 @@
         if (responses.hasMoreElements()) {
             ResponseEntity response =
                 (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
 
             // Set status code for this resource.
             if ((thisResource == true) && (response.getStatusCode() > 0))
@@ -2221,9 +2231,6 @@
         setClient();
         // use disk to save by default
         GetMethod method = new GetMethod(path);
-        method.setUseDisk(useDiskForGet);
-        if (tempDirForGet != null)
-            method.setTempDir(tempDirForGet);
         client.executeMethod(method);
 
         int statusCode = method.getStatusLine().getStatusCode();
@@ -2263,9 +2270,6 @@
 
         setClient();
         GetMethod method = new GetMethod(path);
-        method.setUseDisk(useDiskForGet);
-        if (tempDirForGet != null)
-            method.setTempDir(tempDirForGet);
         int statusCode = client.executeMethod(method);
 
         setStatusCode(statusCode);
@@ -2303,15 +2307,24 @@
 
         setClient();
         // use disk to save by default
-        GetMethod method = new GetMethod(HttpURL.getPathQuery(path), file);
-        method.setUseDisk(true);
+        GetMethod method = new GetMethod(HttpURL.getPathQuery(path) );
         int statusCode = client.executeMethod(method);
 
+        // do a simple little loop to read the response back into the passed file 
parameter.
+        InputStream inStream = method.getResponseBodyAsStream();
+
+        FileOutputStream fos = new FileOutputStream(file);
+        byte buffer[] = new byte[2048];
+        int bytesRead;
+        while ( ( bytesRead = inStream.read(buffer)) >= 0) {
+            fos.write(buffer, 0, bytesRead);
+        }
+        inStream.close();
+
         setStatusCode(statusCode);
         return (statusCode >= 200 && statusCode < 300) ? true : false;
     }
 
-
     /**
      * Execute the PUT method for this resource.
      *
@@ -2565,7 +2578,7 @@
         if (path.trim().equals("*"))
             method = new OptionsMethod("*");
         else
-            method = new OptionsMethod(HttpURL.getPath(path));
+            method = new OptionsMethod(escapedPathFromUnescapedPath(path));
         int statusCode = client.executeMethod(method);
 
         setStatusCode(statusCode);
@@ -2619,7 +2632,7 @@
 
         HttpClient client = getSessionInstance(httpURL, true);
 
-        OptionsMethod method = new OptionsMethod(httpURL.getPath());
+        OptionsMethod method = new OptionsMethod( httpURL.getEscapedPath() );
         client.executeMethod(method);
 
         Vector options = new Vector();
@@ -2673,7 +2686,7 @@
 
         HttpClient client = getSessionInstance(httpURL, true);
 
-        OptionsMethod method = new OptionsMethod(httpURL.getPath(), type);
+        OptionsMethod method = new OptionsMethod(httpURL.getEscapedPath(), type);
         client.executeMethod(method);
 
         Vector options = new Vector();
@@ -2753,7 +2766,7 @@
         }
 
         setClient();
-        LabelMethod method = new LabelMethod(path, labeltype, labelname);
+        LabelMethod method = new LabelMethod(encode(path), labeltype, labelname);
 
         int statusCode = client.executeMethod(method);
 
@@ -2770,7 +2783,7 @@
         setClient();
         // Default depth=0, type=by_name
         ReportMethod method =
-            new ReportMethod(httpURL.getPath(), depth);
+            new ReportMethod(httpURL.getEscapedPath(), depth);
         client.executeMethod(method);
 
         Vector results = new Vector();
@@ -2778,7 +2791,7 @@
         Enumeration responses = method.getResponses();
         while (responses.hasMoreElements()) {
             ResponseEntity response = (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
             String sResult = href;
 
             // Set status code for this resource.
@@ -2805,7 +2818,7 @@
         setClient();
         // Default depth=0, type=by_name
         ReportMethod method =
-            new ReportMethod(httpURL.getPath(), DepthSupport.DEPTH_0,
+            new ReportMethod(httpURL.getEscapedPath(), DepthSupport.DEPTH_0,
                              properties.elements());
         client.executeMethod(method);
 
@@ -2819,7 +2832,7 @@
         setClient();
         // Default depth=0, type=by_name
         ReportMethod method =
-            new ReportMethod(httpURL.getPath(), depth, properties.elements());
+            new ReportMethod(httpURL.getEscapedPath(), depth, properties.elements());
         client.executeMethod(method);
 
         /*first draft, does work anyhow
@@ -2838,7 +2851,7 @@
         Enumeration responses = method.getResponses();
         while (responses.hasMoreElements()) {
             ResponseEntity response = (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
             String sResult = href;
 
             // Set status code for this resource.
@@ -2868,7 +2881,7 @@
         setClient();
         // Default depth=0, type=by_name
         ReportMethod method =
-            new ReportMethod(httpURL.getPath(), depth, properties.elements(),
+            new ReportMethod(httpURL.getEscapedPath(), depth, properties.elements(),
                              histUri.elements());
         client.executeMethod(method);
 
@@ -2877,7 +2890,7 @@
         Enumeration responses = method.getResponses();
         while (responses.hasMoreElements()) {
             ResponseEntity response = (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
             String sResult = href;
 
             // Set status code for this resource.
@@ -2903,7 +2916,7 @@
         setClient();
         // Default depth=0, type=by_name
         ReportMethod method =
-            new ReportMethod(httpURL.getPath(), depth, sQuery);
+            new ReportMethod(httpURL.getEscapedPath(), depth, sQuery);
         client.executeMethod(method);
 
         Vector results = new Vector();
@@ -2977,7 +2990,7 @@
         setClient();
         // Change the depth for allprop
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path), depth);
+            new PropFindMethod(escapedPathFromUnescapedPath(path), depth);
         // Default depth=infinity, type=allprop
         int status = client.executeMethod(method);
 
@@ -3017,7 +3030,7 @@
         throws HttpException, IOException {
 
         thisResource = true;
-        return propfindMethod(httpURL.getPath(), depth, properties);
+        return propfindMethod(httpURL.getEscapedHttpURLExceptForUserInfo(), depth, 
properties);
     }
 
 
@@ -3038,14 +3051,14 @@
      * @exception HttpException
      * @exception IOException
      */
-    public Enumeration propfindMethod(String path, int depth,
+    public Enumeration propfindMethod(String resourceUrl, int depth,
                                       Vector properties)
         throws HttpException, IOException {
 
         setClient();
         // Change the depth for prop
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path), depth,
+            new PropFindMethod(resourceUrl, depth,
                                properties.elements());
         int status = client.executeMethod(method);
 
@@ -3138,7 +3151,7 @@
         setClient();
         // Default depth=0, type=by_name
         PropFindMethod method =
-            new PropFindMethod(HttpURL.getPath(path), DepthSupport.DEPTH_0,
+            new PropFindMethod(escapedPathFromUnescapedPath(path), 
DepthSupport.DEPTH_0,
                                properties.elements());
         int status = client.executeMethod(method);
 
@@ -3155,7 +3168,7 @@
         if (responses.hasMoreElements()) {
             ResponseEntity response =
                 (ResponseEntity) responses.nextElement();
-            String href = (String) response.getHref();
+            String href = response.getHref();
 
             // Set status code for this resource.
             if ((thisResource == true) && (response.getStatusCode() > 0))
@@ -3425,7 +3438,7 @@
                                    boolean action) throws HttpException, IOException {
 
         setClient();
-        PropPatchMethod method = new PropPatchMethod(HttpURL.getPath(path));
+        PropPatchMethod method = new PropPatchMethod( 
escapedPathFromUnescapedPath(path) );
         generateIfHeader(method);
         Enumeration names = properties.keys();
         boolean hasSomething = false;
@@ -3533,7 +3546,7 @@
         throws HttpException, IOException {
 
         setClient();
-        DeleteMethod method = new DeleteMethod(HttpURL.getPath(path));
+        DeleteMethod method = new DeleteMethod(escapedPathFromUnescapedPath(path));
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -3577,7 +3590,7 @@
         throws HttpException, IOException {
 
         setClient();
-        MoveMethod method = new MoveMethod(source, destination);
+        MoveMethod method = new MoveMethod( encode(source), encode(destination) );
         generateIfHeader(method);
         method.setOverwrite(overwrite);
         int statusCode = client.executeMethod(method);
@@ -3622,7 +3635,7 @@
         throws HttpException, IOException {
 
         setClient();
-        CopyMethod method = new CopyMethod(source, destination);
+        CopyMethod method = new CopyMethod(encode(source), encode(destination) );
         generateIfHeader(method);
         method.setOverwrite(overwrite);
         int statusCode = client.executeMethod(method);
@@ -3665,7 +3678,8 @@
         throws HttpException, IOException {
 
         setClient();
-        MkcolMethod method = new MkcolMethod(HttpURL.getPath(path));
+        String encodedPath = encode(HttpURL.getPath(path));
+        MkcolMethod method = new MkcolMethod(encodedPath);
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -3752,7 +3766,7 @@
         // default lock type setting
         short lockType = LockMethod.SCOPE_EXCLUSIVE;
         LockMethod method =
-            new LockMethod(HttpURL.getPath(path), owner, lockType, timeout);
+            new LockMethod(escapedPathFromUnescapedPath(path), owner, lockType, 
timeout);
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
         String lock = method.getLockToken();
@@ -3923,7 +3937,7 @@
 
         setClient();
         path = HttpURL.getPath(path);
-        UpdateMethod method = new UpdateMethod(path, target);
+        UpdateMethod method = new UpdateMethod(encode(path), target);
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -3940,7 +3954,7 @@
         // Check the given path is alright.
         path = HttpURL.getPath(path);
 
-        VersionControlMethod method = new VersionControlMethod(path);
+        VersionControlMethod method = new VersionControlMethod( encode(path) );
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -3957,7 +3971,7 @@
         // Check the given path is alright.
         path = HttpURL.getPath(path);
 
-        VersionControlMethod method = new VersionControlMethod(path, target);
+        VersionControlMethod method = new VersionControlMethod(encode(path), target);
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -3996,7 +4010,7 @@
         throws HttpException, IOException {
 
         setClient();
-        MkWorkspaceMethod method = new MkWorkspaceMethod(HttpURL.getPath(path));
+        MkWorkspaceMethod method = new 
MkWorkspaceMethod(escapedPathFromUnescapedPath(path));
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -4122,7 +4136,7 @@
         throws HttpException, IOException {
 
         setClient();
-        CheckinMethod method = new CheckinMethod(HttpURL.getPath(path));
+        CheckinMethod method = new CheckinMethod(escapedPathFromUnescapedPath(path));
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -4158,7 +4172,7 @@
         throws HttpException, IOException {
 
         setClient();
-        CheckoutMethod method = new CheckoutMethod(HttpURL.getPath(path));
+        CheckoutMethod method = new 
CheckoutMethod(escapedPathFromUnescapedPath(path));
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -4196,7 +4210,7 @@
         throws HttpException, IOException {
 
         setClient();
-        UncheckoutMethod method = new UncheckoutMethod(HttpURL.getPath(path));
+        UncheckoutMethod method = new UncheckoutMethod( 
escapedPathFromUnescapedPath(path) );
         generateIfHeader(method);
         int statusCode = client.executeMethod(method);
 
@@ -4295,7 +4309,7 @@
         setClient();
         AclReportMethod method =
             new AclReportMethod(
-                HttpURL.getPath(path),
+                escapedPathFromUnescapedPath(path),
                 properties,
                 DepthSupport.DEPTH_INFINITY,
                 reportType);
@@ -4319,6 +4333,17 @@
         return method.getResponses();
     }
 
+    private static String encode(String path) {
+        return URLUtil.URLEncode(path, "UTF-8");
+    }
+
+    /**
+     * @param url The URL to strip of its schema get its path.
+     * @return The URL without its scheme, port or server.
+     */
+    private static String escapedPathFromUnescapedPath(String url) {
+        return encode(HttpURL.getEscapedPath(url));
+    }
 }
 
 
Index: src/webdav/client/src/org/apache/webdav/lib/WebdavSession.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/WebdavSession.java,v
retrieving revision 1.28
diff -u -r1.28 WebdavSession.java
--- src/webdav/client/src/org/apache/webdav/lib/WebdavSession.java      4 Apr 2003 
15:25:20 -0000       1.28
+++ src/webdav/client/src/org/apache/webdav/lib/WebdavSession.java      25 Jun 2003 
18:30:22 -0000
@@ -176,7 +176,6 @@
     public HttpClient getSessionInstance(HttpURL httpURL, boolean reset)
         throws IOException {
 
-        String authority = httpURL.getAuthority();
         if (reset)
             client = null;
         if (client == null) {
@@ -192,13 +191,13 @@
             String userName = httpURL.getUserName();
             if (userName != null && userName.length() > 0) {
                 String password = httpURL.getPassword();
-                client.getState().setCredentials(null,
+                client.getState().setCredentials(null, httpURL.getHost(),
                     new UsernamePasswordCredentials(userName, password));
 
             }
 
             if (proxyCredentials != null) {
-                client.getState().setProxyCredentials(null, proxyCredentials);
+                client.getState().setProxyCredentials(null, proxyHost, 
proxyCredentials);
             }
         }
 
@@ -225,17 +224,11 @@
     /**
      * Close an session and delete the connection information.
      *
-     * @param client The HttpClient instance.
      * @exception IOException Error in closing socket.
      */
     public void closeSession()
         throws IOException {
-        if (this.client!=null) {
-            this.client.endSession();
-            // Remove the progress listener.
-            // webdavClient.getProgressUtil().addProgressListener(this);
-            this.client = null;
-        }
+        this.client = null;
     }
 
 
Index: src/webdav/client/src/org/apache/webdav/lib/methods/AclReportMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/AclReportMethod.java,v
retrieving revision 1.2
diff -u -r1.2 AclReportMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/AclReportMethod.java    4 Apr 
2003 15:25:21 -0000       1.2
+++ src/webdav/client/src/org/apache/webdav/lib/methods/AclReportMethod.java    25 Jun 
2003 18:30:22 -0000
@@ -26,7 +26,7 @@
 
     /**
      * @param path
-     * @param requested properties
+     * @param propertyNames requested properties
      * @param depth
      * @param reportType - one of the supported report types
      */
@@ -66,7 +66,8 @@
     }
 
     /**
-     * Set header. handle the special case of Depth.
+     * Set a header value, redirecting the special case of header "Depth" to
+     * [EMAIL PROTECTED] #setDepth} as appropriate.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -91,8 +92,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param host the host
      * @param state State token
+     * @param conn The connection being used for the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
         throws IOException, HttpException {
Index: src/webdav/client/src/org/apache/webdav/lib/methods/CopyMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/CopyMethod.java,v
retrieving revision 1.20
diff -u -r1.20 CopyMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/CopyMethod.java 4 Apr 2003 
15:25:21 -0000       1.20
+++ src/webdav/client/src/org/apache/webdav/lib/methods/CopyMethod.java 25 Jun 2003 
18:30:23 -0000
@@ -135,7 +135,8 @@
 
 
     /**
-     * Set header. handle the special case of Overwrite and Destination
+     * Set a header value, redirecting the special case of Overwrite and Destination 
headers
+     * to [EMAIL PROTECTED] #setOverwrite} and [EMAIL PROTECTED] #setDestination} as 
appropriate.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -218,9 +219,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param httpsRequired true, if the protocol is https, else http
-     * @param host the host
      * @param state HttpState token
+     * @param conn The connection being used for the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
@@ -229,7 +229,7 @@
 
         String absoluteDestination =
             conn.getProtocol().getScheme() + "://" + conn.getHost() + ":" + 
conn.getPort()
-            + URLUtil.URLEncode(destination, "utf-8");  // utf-8 for now jpl
+            + destination;  // utf-8 for now jpl
         super.setRequestHeader("Destination", absoluteDestination);
 
         if (!isOverwrite())
Index: src/webdav/client/src/org/apache/webdav/lib/methods/GetMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/GetMethod.java,v
retrieving revision 1.16
diff -u -r1.16 GetMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/GetMethod.java  16 Jun 2003 
15:25:22 -0000      1.16
+++ src/webdav/client/src/org/apache/webdav/lib/methods/GetMethod.java  25 Jun 2003 
18:30:23 -0000
@@ -99,24 +99,33 @@
 
     /**
      * Method constructor.
+     *
+     * @deprecated Client is now responsible for any caching, the tempDir parameter
+     *  is not used.  Use [EMAIL PROTECTED] #GetMethod(String)} instead.
      */
     public GetMethod(String path, String tempDir) {
-        super(URLUtil.URLEncode(path, "UTF-8"), tempDir);
+        this(path);
     }
 
 
     /**
      * Method constructor.
+     *
+     * @deprecated The client is now responsible for any caching, and the tempDir
+     * and tempFile parameters are not used.  Use [EMAIL PROTECTED] 
#GetMethod(String)} instead.
      */
     public GetMethod(String path, String tempDir, String tempFile) {
-        super(URLUtil.URLEncode(path, "UTF-8"), tempDir, tempFile);
+        this(path);
     }
 
     /**
      * Method constructor.
+     *
+     * @deprecated The client is now responsible for any caching, and the fileData
+     * parameter is not used.  Use [EMAIL PROTECTED] #GetMethod(String)} instead.
      */
     public GetMethod(String path, File fileData) {
-        super(URLUtil.URLEncode(path, "UTF-8"), fileData);
+        this(path);
     }
 }
 
Index: 
src/webdav/client/src/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java,v
retrieving revision 1.7
diff -u -r1.7 HttpRequestBodyMethodBase.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java 
 16 Jun 2003 15:25:22 -0000      1.7
+++ src/webdav/client/src/org/apache/webdav/lib/methods/HttpRequestBodyMethodBase.java 
 25 Jun 2003 18:30:23 -0000
@@ -106,12 +106,13 @@
      * Path-setting constructor.
      *
      * @param path the path to request. The path is expected
-     *        to be NOT URL-encoded.
+     *        to be already URL encoded.  It may be either an absolute or
+     * server relative path.
      *
      * @since 1.0
      */
     public HttpRequestBodyMethodBase(String path) {
-        super(URLUtil.URLEncode(path, "UTF-8"));
+        super(path);
     }
 
 
Index: src/webdav/client/src/org/apache/webdav/lib/methods/LockMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/LockMethod.java,v
retrieving revision 1.35
diff -u -r1.35 LockMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/LockMethod.java 4 Apr 2003 
15:25:21 -0000       1.35
+++ src/webdav/client/src/org/apache/webdav/lib/methods/LockMethod.java 25 Jun 2003 
18:30:23 -0000
@@ -159,13 +159,6 @@
      */
     private short scope = SCOPE_EXCLUSIVE;
 
-
-    /**
-     * The type of lock we're requesting.  The default type is TYPE_WRITE.
-     */
-    private short type = TYPE_WRITE;
-
-
     /**
      * Depth.
      */
@@ -257,7 +250,8 @@
 
 
     /**
-     * Set header. handle the special case of Depth and Time
+     * Set a header value, redirecting the special cases of Depth and Time headers
+     * to [EMAIL PROTECTED] #setDepth} and [EMAIL PROTECTED] #setTimeout} as 
appropriate.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -280,7 +274,7 @@
             if (headerValue.startsWith("Second-"))
                 headerValue = headerValue.substring("Second-".length());
             try {
-                setTimeout(Long.parseLong(headerValue));
+                setTimeout(Integer.parseInt(headerValue));
             } catch (NumberFormatException e) {
             }
         }
@@ -382,8 +376,6 @@
 
     /**
      * Set the timeout value.
-     *
-     * @return timeout
      */
     public void setTimeout(int timeout) {
         checkNotUsed();
@@ -413,7 +405,6 @@
         super.recycle();
         this.refreshOpaqueToken = null;
         this.depth = DEPTH_INFINITY;
-        this.type = TYPE_WRITE;
         this.scope = SCOPE_EXCLUSIVE;
         this.timeout = TIMEOUT_INFINITY;
     }
@@ -422,8 +413,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param host the host
      * @param state State token
+     * @param conn The connection being used for the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
Index: src/webdav/client/src/org/apache/webdav/lib/methods/MkcolMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/MkcolMethod.java,v
retrieving revision 1.9
diff -u -r1.9 MkcolMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/MkcolMethod.java        3 Apr 
2003 15:51:57 -0000       1.9
+++ src/webdav/client/src/org/apache/webdav/lib/methods/MkcolMethod.java        25 Jun 
2003 18:30:23 -0000
@@ -143,20 +143,6 @@
         return "MKCOL";
     }
 
-
-    /**
-     * Set the path part of my request.
-     * It is responsibility of the caller to ensure that the path is
-     * properly encoded (URL safe).
-     *
-     * @param path the path to request. The path is expected
-     *        to be NOT URL-encoded
-     */
-    public void setPath(String path ) {
-        setPath(path, null);
-    }
-
-
     /**
      * Set the path part of my request.
      * It is responsibility of the caller to ensure that the path is
@@ -165,6 +151,9 @@
      * @param path the path to request. The path is expected
      *        to be NOT URL-encoded
      * @param enc the encoding used to encode the path. UTF-8 is the default.
+     *
+     * @deprecated Callers should properly encode the path prior to invoking the
+     * [EMAIL PROTECTED] #setPath} function, and invoke that function directly.
      */
     public void setPath(String path, String enc ) {
         if (enc == null) enc = "UTF-8";
Index: src/webdav/client/src/org/apache/webdav/lib/methods/MoveMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/MoveMethod.java,v
retrieving revision 1.20
diff -u -r1.20 MoveMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/MoveMethod.java 4 Apr 2003 
15:25:22 -0000       1.20
+++ src/webdav/client/src/org/apache/webdav/lib/methods/MoveMethod.java 25 Jun 2003 
18:30:24 -0000
@@ -135,7 +135,8 @@
 
 
     /**
-     * Set header. handle the special case of Overwrite and Destination
+     * Set a header value, redirecting the special case of the Overwrite and 
Destination
+     * headers to [EMAIL PROTECTED] #setOverwrite} and [EMAIL PROTECTED] 
#setDestination} as appropriate.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -217,9 +218,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param httpsRequired true, if the protocol is https, else http
-     * @param host the host
      * @param state State token
+     * @param conn The connection being used to make the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
@@ -228,7 +228,7 @@
 
         String absoluteDestination =
             conn.getProtocol().getScheme() + "://" + conn.getHost() + ":" + 
conn.getPort()
-            + URLUtil.URLEncode(destination, "utf-8");  // utf-8 for now jpl
+            + destination;  // utf-8 for now jpl
         super.setRequestHeader("Destination", absoluteDestination);
 
         if (!isOverwrite())
Index: src/webdav/client/src/org/apache/webdav/lib/methods/PropFindMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/PropFindMethod.java,v
retrieving revision 1.34
diff -u -r1.34 PropFindMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/PropFindMethod.java     4 Apr 
2003 15:25:22 -0000       1.34
+++ src/webdav/client/src/org/apache/webdav/lib/methods/PropFindMethod.java     25 Jun 
2003 18:30:24 -0000
@@ -221,7 +221,8 @@
 
 
     /**
-     * Set header. handle the special case of Depth.
+     * Set a request header value, redirecting the special case of the "Depth" header
+     * to invoke [EMAIL PROTECTED] #setDepth} instead.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -359,8 +360,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param host the host
      * @param state State token
+     * @param conn The connection being used to make the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
Index: src/webdav/client/src/org/apache/webdav/lib/methods/ReportMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/ReportMethod.java,v
retrieving revision 1.7
diff -u -r1.7 ReportMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/ReportMethod.java       4 Apr 
2003 15:25:22 -0000       1.7
+++ src/webdav/client/src/org/apache/webdav/lib/methods/ReportMethod.java       25 Jun 
2003 18:30:24 -0000
@@ -208,7 +208,8 @@
 
 
     /**
-     * Set header. handle the special case of Depth.
+     * Set a header value, redirecting attempts to set the "Depth" header to
+     * a [EMAIL PROTECTED] #setDepth} call.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -358,8 +359,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param host the host
      * @param state State token
+     * @param conn The connection being used to make the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
Index: src/webdav/client/src/org/apache/webdav/lib/methods/UnlockMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/UnlockMethod.java,v
retrieving revision 1.16
diff -u -r1.16 UnlockMethod.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/UnlockMethod.java       3 Apr 
2003 15:51:57 -0000       1.16
+++ src/webdav/client/src/org/apache/webdav/lib/methods/UnlockMethod.java       25 Jun 
2003 18:30:24 -0000
@@ -131,7 +131,8 @@
     }
 
     /**
-     * Set header. handle the special case of lock-token.
+     * Set header, handling the special case of the lock-token header so
+     * that it calls [EMAIL PROTECTED] #setLockToken} instead.
      *
      * @param headerName Header name
      * @param headerValue Header value
@@ -151,8 +152,8 @@
     /**
      * Generate additional headers needed by the request.
      *
-     * @param host the host
      * @param state HttpState token
+     * @param conn The connection being used to send the request.
      */
     public void addRequestHeaders(HttpState state, HttpConnection conn)
     throws IOException, HttpException {
@@ -178,20 +179,10 @@
      *
      * @param path the path to request. The path is expected
      *        to be NOT URL-encoded
-     */
-    public void setPath(String path ) {
-        setPath(path, null);
-    }
-
-
-    /**
-     * Set the path part of my request.
-     * It is responsibility of the caller to ensure that the path is
-     * properly encoded (URL safe).
-     *
-     * @param path the path to request. The path is expected
-     *        to be NOT URL-encoded
      * @param enc the encoding used to encode the path. UTF-8 is the default.
+     * 
+     * @deprecated Callers should properly encode the path prior to invoking the
+     * [EMAIL PROTECTED] #setPath} function, and invoke that function directly.
      */
     public void setPath(String path, String enc ) {
         if (enc == null) enc = "UTF-8";
Index: src/webdav/client/src/org/apache/webdav/lib/methods/XMLResponseMethodBase.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/client/src/org/apache/webdav/lib/methods/XMLResponseMethodBase.java,v
retrieving revision 1.36
diff -u -r1.36 XMLResponseMethodBase.java
--- src/webdav/client/src/org/apache/webdav/lib/methods/XMLResponseMethodBase.java     
 17 Jan 2003 13:45:01 -0000      1.36
+++ src/webdav/client/src/org/apache/webdav/lib/methods/XMLResponseMethodBase.java     
 25 Jun 2003 18:30:25 -0000
@@ -78,7 +78,6 @@
 import org.apache.commons.httpclient.HttpState;
 import org.apache.util.DOMUtils;
 import org.apache.util.DOMWriter;
-import org.apache.util.URLUtil;
 import org.apache.util.WebdavStatus;
 import org.apache.webdav.lib.BaseProperty;
 import org.apache.webdav.lib.Property;
@@ -253,7 +252,7 @@
     }
 
     /**
-     * Write the request body to the given [EMAIL PROTECTED] HttpConnection}
+     * Write the request body to the given [EMAIL PROTECTED] HttpConnection}.
      *
      * <p>
      * This implementation writes any computed body and returns <tt>true</tt>.
@@ -531,7 +530,7 @@
         public String getHref() {
             Element href = getFirstElement("DAV:", "href");
             if (href != null) {
-                return URLUtil.URLDecode(DOMUtils.getTextValue(href));
+                return DOMUtils.getTextValue(href);
             } else {
                 return "";
             }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to