Hello,

I found some bugs which occur if the WebdavServlet is not mapped
to the "/" servlet path, i.e. if it is not the default servlet.

For the testcases I have run the fixes below are working.
(tests passed: functional/copy, delete, get, lock, move, prop*, put, users)

There are obviously more fixes needed, potentialy all places where
request.getContextPath is used

An other unresolved bug related is in LogFilter, where %p
is associated with req.getServletPath();

Regards, Stefan

p.s. the quick fixes

Index: webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/AbstractWebdavMethod.java,v
retrieving revision 1.16
diff -r1.16 AbstractWebdavMethod.java
392a393,404
>     /**
>      * Returns URI prefix that qualifies the WebADV Servlet.
>      *
>      * @return the prefix that makes a Slide-URI to an HTTP URI.
>      */
>     public String getFullServletPath() {
>        if (config.isDefaultServlet()) {
>            return req.getContextPath();
>        } else {
>            return req.getContextPath() + req.getServletPath();
>        }
>     }
399,403c411,419
<
<         if (path.startsWith("/"))
<             return WebdavUtils.encodeURL(req.getContextPath() + path);
<         else
<             return WebdavUtils.encodeURL(req.getContextPath() + "/" + path);
---
>         StringBuffer result = new StringBuffer(req.getContextPath());
>         if (!config.isDefaultServlet()) {
>            result.append(req.getServletPath());
>         }
>         if (!path.startsWith("/")) {
>            result.append("/");
>         }
>         result.append(path);
>         return WebdavUtils.encodeURL(result.toString());
Index: webdav/server/org/apache/slide/webdav/method/LockMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/LockMethod.java,v
retrieving revision 1.51
diff -r1.51 LockMethod.java
633c633
<                                                                 
req.getContextPath());
---
>                                                           getFullServletPath());
Index: webdav/server/org/apache/slide/webdav/method/PropFindMethod.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/PropFindMethod.java,v
retrieving revision 1.92
diff -r1.92 PropFindMethod.java
537c537,543
<                     List propstatList= 
propertyRetriever.getPropertiesOfObject(requestedProperties, revisionDescriptors, 
revisionDescriptor, req.getContextPath(), serverURL, extendedAllprop);
---
>                     List propstatList= propertyRetriever.getPropertiesOfObject(
>                            requestedProperties,
>                            revisionDescriptors,
>                            revisionDescriptor,
>                            getFullServletPath(),
>                            serverURL,
>                            extendedAllprop);
606,609c612,615
<                          req.getServerName()+ ":" +
<                          req.getServerPort() +
<                          req.getContextPath() +
<                          resourcePath);
---
>                      req.getServerName()+ ":" +
>                      req.getServerPort() +
>                      getFullServletPath() +
>                      resourcePath);
Index: webdav/server/org/apache/slide/webdav/util/DirectoryIndexGenerator.java
===================================================================
RCS file: 
/home/cvspublic/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/DirectoryIndexGenerator.java,v
retrieving revision 1.4
diff -r1.4 DirectoryIndexGenerator.java
249,252c249,250
<             writer.print(WebdavUtils.encodeURL(contextPath, "UTF-8"));
<             if (parentDirectory.equals(""))
<                 parentDirectory = "/";
<             writer.print(parentDirectory);   // I18N chars
---
>             writer.print(WebdavUtils.getAbsolutePath(parentDirectory,
>                                                      req, this.config));
348c346,347
<             writer.print(WebdavUtils.encodeURL(contextPath + 
currentResource.substring(scope.length())));
---
>             writer.print(WebdavUtils.getAbsolutePath(
>                                              currentResource,req, this.config));




-- +--------------------------------------------+ | | | Stefan L�tzkendorf | | | | Institut f�r Terminologie und | | angewandte Wissensforschung (itaw) GmbH | | | | Sitz: Am K�llnischen Park 6/7 | | D-10179 Berlin | | Mail: [EMAIL PROTECTED] | | Tel.: ++49 (030) 30 86 20 88 | | | +--------------------------------------------+


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



Reply via email to