Author: kfujino Date: Tue May 22 09:25:18 2012 New Revision: 1341369 URL: http://svn.apache.org/viewvc?rev=1341369&view=rev Log: Enable host's xmlBase attribute in ContextConfig.
Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Modified: tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java?rev=1341369&r1=1341368&r2=1341369&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Tue May 22 09:25:18 2012 @@ -512,8 +512,7 @@ public class ContextConfig implements Li } } - File hostContextFile = new File(getConfigBase(), - getHostConfigPath(Constants.HostContextXml)); + File hostContextFile = new File(getHostConfigBase(), Constants.HostContextXml); if (hostContextFile.exists()) { try { URL hostContextUrl = hostContextFile.toURI().toURL(); @@ -1105,32 +1104,42 @@ public class ContextConfig implements Li return configBase; } - - protected String getHostConfigPath(String resourceName) { - StringBuilder result = new StringBuilder(); + protected File getHostConfigBase() { + File file = null; Container container = context; - Container host = null; - Container engine = null; + Host host = null; + Engine engine = null; while (container != null) { if (container instanceof Host) { - host = container; + host = (Host)container; } if (container instanceof Engine) { - engine = container; + engine = (Engine)container; } container = container.getParent(); } - if (engine != null) { - result.append(engine.getName()).append('/'); + if (host != null && host.getXmlBase()!=null) { + String xmlBase = host.getXmlBase(); + file = new File(xmlBase); + if (!file.isAbsolute()) + file = new File(context.getCatalinaBase(), xmlBase); + } else { + StringBuilder result = new StringBuilder(); + if (engine != null) { + result.append(engine.getName()).append('/'); + } + if (host != null) { + result.append(host.getName()).append('/'); + } + file = new File (getConfigBase(), result.toString()); } - if (host != null) { - result.append(host.getName()).append('/'); + try { + return file.getCanonicalFile(); + } catch (IOException e) { + return file; } - result.append(resourceName); - return result.toString(); } - /** * Scan the web.xml files that apply to the web application and merge them * using the rules defined in the spec. For the global web.xml files, @@ -1644,23 +1653,15 @@ public class ContextConfig implements Li * it. */ protected InputSource getHostWebXmlSource() { - String resourceName = getHostConfigPath(Constants.HostWebXml); - - // In an embedded environment, configBase might not be set - File configBase = getConfigBase(); - if (configBase == null) { - return null; - } - String basePath = null; try { - basePath = configBase.getCanonicalPath(); + basePath = getHostConfigBase().getCanonicalPath(); } catch (IOException e) { log.error(sm.getString("contextConfig.baseError"), e); return null; } - return getWebXmlSource(resourceName, basePath); + return getWebXmlSource(Constants.HostWebXml, basePath); } /** --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org