The attached patches address a couple of issue highlighted by bug 23267 - zero length contexts caused a NPE on contextFile.getParentFile() - another exception on contextPath.substring(1) for zero length contexts
I also removed the filename.equals("ROOT") test as I couldn't see anywhere in the docs where this is specified as mandatory. Patches for TC5 and TC4 both attached (untested on TC5) Mark Index: catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-catalina/catalina/src/share/org/apache/catali na/core/StandardHostDeployer.java,v retrieving revision 1.15 diff -u -r1.15 StandardHostDeployer.java --- catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java 2 Sep 2003 21:22:04 -0000 1.15 +++ catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java 26 Sep 2003 23:13:58 -0000 @@ -661,6 +661,10 @@ appBase = new File(System.getProperty("catalina.base"), host.getAppBase()); File contextFile = new File(context.getDocBase()); + // If doc base is relative, it is relative to appBase + if (!contextFile.isAbsolute()) + contextFile = new File(appBase,context.getDocBase()); + File baseDir = contextFile.getParentFile(); if ((baseDir == null) || (appBase.getCanonicalPath().equals @@ -679,8 +683,16 @@ if (isWAR) { filename = filename.substring(0,filename.length()-4); } - if (contextPath.length() == 0 && filename.equals("ROOT") || - filename.equals(contextPath.substring(1))) { + + boolean toDelete = false; + if (contextPath.length() == 0) { + toDelete = true; + } else { + if (filename.equals(contextPath.substring(1))) + toDelete = true; + } + + if (toDelete) { if (!isWAR) { long contextLastModified = contextFile.lastModified(); Index: catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java =================================================================== RCS file: /home/cvspublic/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/co re/StandardHostDeployer.java,v retrieving revision 1.13 diff -u -r1.13 StandardHostDeployer.java --- catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java 13 Jan 2003 23:23:28 -0000 1.13 +++ catalina/src/share/org/apache/catalina/core/StandardHostDeployer.java 26 Sep 2003 22:55:12 -0000 @@ -65,13 +65,10 @@ package org.apache.catalina.core; -import java.io.BufferedOutputStream; import java.io.File; -import java.io.FileOutputStream; import java.io.InputStream; import java.io.IOException; import java.net.URL; -import java.util.Enumeration; import org.apache.catalina.Container; import org.apache.catalina.Context; import org.apache.catalina.Deployer; @@ -85,7 +82,6 @@ import org.apache.catalina.startup.NamingRuleSet; import org.apache.catalina.util.StringManager; import org.apache.commons.digester.Digester; -import org.xml.sax.SAXParseException; /** @@ -530,6 +526,9 @@ appBase = new File(System.getProperty("catalina.base"), host.getAppBase()); File contextFile = new File(context.getDocBase()); + // If doc base is relative, it is relative to appBase + if (!contextFile.isAbsolute()) + contextFile = new File(appBase,context.getDocBase()); File baseDir = contextFile.getParentFile(); if (appBase.getCanonicalPath().equals(baseDir.getCanonicalPath())) { isAppBase = true; @@ -546,8 +545,16 @@ if (isWAR) { filename = filename.substring(0,filename.length()-4); } - if (contextPath.length() == 0 && filename.equals("ROOT") || - filename.equals(contextPath.substring(1))) { + + boolean toDelete = false; + if (contextPath.length() == 0) { + toDelete = true; + } else { + if (filename.equals(contextPath.substring(1))) + toDelete = true; + } + + if (toDelete) { if (!isWAR) { if (contextFile.isDirectory()) { deleteDir(contextFile); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]