Author: timw Date: Mon Oct 4 20:37:11 2010 New Revision: 1004415 URL: http://svn.apache.org/viewvc?rev=1004415&view=rev Log: More fixes for https://issues.apache.org/bugzilla/show_bug.cgi?id=50026 Calculating path prefix used in listings correctly so links in listings produced by WebdavServlet mounted to a subpath are correct.
Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Modified: tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java?rev=1004415&r1=1004414&r2=1004415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java Mon Oct 4 20:37:11 2010 @@ -374,6 +374,18 @@ public class DefaultServlet /** + * Determines the appropriate path to prepend resources with + * when generating directory listings. Depending on the behaviour of + * {...@link #getRelativePath(HttpServletRequest)} this will change. + * @param request the request to determine the path for + * @return the prefix to apply to all resources in the listing. + */ + protected String getPathPrefix(final HttpServletRequest request) { + return request.getContextPath(); + } + + + /** * Process a GET request for the specified resource. * * @param request The servlet request we are processing @@ -890,8 +902,7 @@ public class DefaultServlet if (serveContent) { // Serve the directory browser - renderResult = - render(request.getContextPath(), cacheEntry); + renderResult = render(getPathPrefix(request), cacheEntry); } } Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java?rev=1004415&r1=1004414&r2=1004415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Mon Oct 4 20:37:11 2010 @@ -428,6 +428,20 @@ public class WebdavServlet /** + * Determines the prefix for standard directory GET listings. + */ + @Override + protected String getPathPrefix(final HttpServletRequest request) { + // Repeat the servlet path (e.g. /webdav/) in the listing path + String contextPath = request.getContextPath(); + if (request.getServletPath() != null) { + contextPath = contextPath + request.getServletPath(); + } + return contextPath; + } + + + /** * OPTIONS Method. * * @param req The request --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org