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]
