I have seen no responses to this.
Should I assume it is a bug and
submit it to bugzilla?

Frank Lawlor

-----Original Message-----
From: Frank Lawlor [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 08, 2001 5:06 PM
To: Slide (E-mail)
Subject: WebDAV Path Bug


I wanted to allow my users to access various subtrees
of my site with WebDAV so I added the following
to my web.xml

  <servlet>
    <servlet-name>webdav</servlet-name>

<servlet-class>org.apache.catalina.servlets.WebdavServlet</servlet-class>
  ...
  </servlet>

  <servlet-mapping>
    <servlet-name>webdav</servlet-name>
    <url-pattern>/Projects/First/Documents/*</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>webdav</servlet-name>
    <url-pattern>/Projects/Second/Documents/*</url-pattern>
  </servlet-mapping>
  ...


This seems to ALMOST work with Tomcat 4.0 rc2
When I use NT4 Explorer Web Folders to connect
it connects fine and shows the correct
contents of /Projects/First/Documents/.

But, as soon as I tried to access any contents
I got a rather uninformative error.  I noticed
however that the localhost_log would say something like:

2001-11-07 17:50:15 webdav: DefaultServlet.serveResource:  Request PathInfo
'/ZZZ.txt

when I suspected that the PathInfo should have been
/Projects/First/Documents/ZZZ.txt

As a test I put a file called ZZZ.txt in the root of
my web app and sure enough it opened it.

After tracing thru things it wasn't clear to me
why the getRelativePath(request) call in
DefaultServlet.serveResource() was only returning
the last part (only happens on the GET call),
but to see if I could get the
correct behavior I changed the line
   String path = getRelativePath(request);
to
   String path = request.getRequestURI().substring(
       request.getContextPath().length());

This gave the correct path and allowed proper
navigation and opening of the files.

This looks like a bug.  Maybe because development
and testing assumed that the servlet-mapping
url-pattern would always be /*.

Note that my mapping above is NOT THE SAME AS
using 'scope' because there are multiple subtrees
and each has different security constraints.
Also I still want users to access
other paths in the app without invoking WebDAV.

Frank Lawlor
Athens Group, Inc.
(512) 345-0600 x151
Athens Group, an employee-owned consulting firm integrating technology
strategy and software solutions.




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



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

Reply via email to