[prev in list] [next in list] [prev in thread] [next in thread] 

List:       slide-dev
Subject:    Some Bugs if WebDAV-Servlet is not the Default-Servlet
From:       Stefan_Lützkendorf <luetzken () itaw ! hu-berlin ! de>
Date:       2003-10-20 19:23:11
[Download RAW message or body]

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: luetzken@itaw.hu-berlin.de          |
> Tel.: ++49 (030) 30 86 20 88              |
> > 
+--------------------------------------------+


---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic