Author: markt Date: Sun Oct 25 13:40:52 2015 New Revision: 1710445 URL: http://svn.apache.org/viewvc?rev=1710445&view=rev Log: https://bz.apache.org/bugzilla/show_bug.cgi?id=58518 Fix a regression in BZ 56777 (that added support for URIs in config file locations) File paths on Windows could previously be specified with \ or / as the separator. BZ 56777 broke that. This commit restores that behaviour.
Modified: tomcat/trunk/java/org/apache/tomcat/util/file/ConfigFileLoader.java Modified: tomcat/trunk/java/org/apache/tomcat/util/file/ConfigFileLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/file/ConfigFileLoader.java?rev=1710445&r1=1710444&r2=1710445&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/file/ConfigFileLoader.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/file/ConfigFileLoader.java Sun Oct 25 13:40:52 2015 @@ -30,11 +30,12 @@ import java.net.URL; */ public class ConfigFileLoader { + private static final File CATALINA_BASE_FILE; private static final URI CATALINA_BASE_URI; static { - File catalinaBase = new File(System.getProperty("catalina.base")); - CATALINA_BASE_URI = catalinaBase.toURI(); + CATALINA_BASE_FILE = new File(System.getProperty("catalina.base")); + CATALINA_BASE_URI = CATALINA_BASE_FILE.toURI(); } private ConfigFileLoader() { @@ -59,17 +60,30 @@ public class ConfigFileLoader { // Absolute URIs will be left alone // Relative files will be resolved relative to catalina base // Absolute files will be converted to URIs - URI uri; - if (location != null && - (location.length() > 2 && ":\\".equals(location.substring(1, 3)) || - location.startsWith("\\\\"))) { - // This is an absolute file path in Windows or a UNC path - File f = new File(location); - uri =f.getAbsoluteFile().toURI(); - } else { - // URL, relative path or an absolute path on a non-Windows platforms + + URI uri = null; + + // Location was originally always a file before URI support was added so + // try file first. + + // First guess, an absolute file path + File f = new File(location); + if (!f.isFile()) { + // Second guess, a file path relative to CATALINA_BASE + if (!f.isAbsolute()) { + f = new File(CATALINA_BASE_FILE, location); + } + } + if (f.isFile()) { + uri = f.getAbsoluteFile().toURI(); + } + + if (uri == null) { + // Third and final guess, a URI uri = CATALINA_BASE_URI.resolve(location); } + + // Obtain the input stream we need URL url = uri.toURL(); return url.openConnection().getInputStream(); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org