You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kf...@apache.org on 2012/05/28 09:11:43 UTC

svn commit: r1343153 - in /tomcat/trunk/java/org/apache/catalina: Host.java core/StandardHost.java startup/ContextConfig.java startup/HostConfig.java

Author: kfujino
Date: Mon May 28 07:11:43 2012
New Revision: 1343153

URL: http://svn.apache.org/viewvc?rev=1343153&view=rev
Log:
fix for Konstantin's review.
Add new calculation method of host's default config path to Host(StanderdHost).

Modified:
    tomcat/trunk/java/org/apache/catalina/Host.java
    tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
    tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java
    tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java

Modified: tomcat/trunk/java/org/apache/catalina/Host.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Host.java?rev=1343153&r1=1343152&r2=1343153&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Host.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Host.java Mon May 28 07:11:43 2012
@@ -86,6 +86,12 @@ public interface Host extends Container 
     public void setXmlBase(String xmlBase);
 
     /**
+     * Return a default configuration path of this Host. The file will be
+     * canonical if possible.
+     */
+    public File getConfigBaseFile();
+
+    /**
      * Return the application root for this Host.  This can be an absolute
      * pathname, a relative pathname, or a URL.
      */

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardHost.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardHost.java?rev=1343153&r1=1343152&r2=1343153&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHost.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHost.java Mon May 28 07:11:43 2012
@@ -30,6 +30,7 @@ import javax.management.ObjectName;
 
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
+import org.apache.catalina.Engine;
 import org.apache.catalina.Host;
 import org.apache.catalina.JmxEnabled;
 import org.apache.catalina.Lifecycle;
@@ -92,6 +93,11 @@ public class StandardHost extends Contai
     private String xmlBase = null;
 
     /**
+     * host's default config path
+     */
+    private volatile File hostConfigBase = null;
+
+    /**
      * The auto deploy flag for this Host.
      */
     private boolean autoDeploy = true;
@@ -270,6 +276,40 @@ public class StandardHost extends Contai
 
 
     /**
+     * ({@inheritDoc}
+     */
+    @Override
+    public File getConfigBaseFile() {
+        if (hostConfigBase != null) {
+            return hostConfigBase;
+        }
+        String path = null;
+        if (getXmlBase()!=null) {
+            path = getXmlBase();
+        } else {
+            StringBuilder xmlDir = new StringBuilder("conf");
+            Container parent = getParent();
+            if (parent instanceof Engine) {
+                xmlDir.append('/');
+                xmlDir.append(parent.getName());
+            }
+            xmlDir.append('/');
+            xmlDir.append(getName());
+            path = xmlDir.toString();
+        }
+        File file = new File(path);
+        if (!file.isAbsolute())
+            file = new File(getCatalinaBase(), path);
+        try {
+            file = file.getCanonicalFile();
+        } catch (IOException e) {// ignore
+        }
+        this.hostConfigBase = file;
+        return file;
+    }
+
+
+    /**
      * Returns true if the Host will attempt to create directories for appBase and xmlBase
      * unless they already exist.
      */

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=1343153&r1=1343152&r2=1343153&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/ContextConfig.java Mon May 28 07:11:43 2012
@@ -1106,38 +1106,10 @@ public class ContextConfig implements Li
 
     protected File getHostConfigBase() {
         File file = null;
-        Container container = context;
-        Host host = null;
-        Engine engine = null;
-        while (container != null) {
-            if (container instanceof Host) {
-                host = (Host)container;
-            }
-            if (container instanceof Engine) {
-                engine = (Engine)container;
-            }
-            container = container.getParent();
-        }
-        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());
-        }
-        try {
-            return file.getCanonicalFile();
-        } catch (IOException e) {
-            return file;
+        if (context.getParent() instanceof Host) {
+            file = ((Host)context.getParent()).getConfigBaseFile();
         }
+        return file;
     }
 
     /**
@@ -1653,15 +1625,11 @@ public class ContextConfig implements Li
      * it.
      */
     protected InputSource getHostWebXmlSource() {
-        String basePath = null;
-        try {
-            basePath = getHostConfigBase().getCanonicalPath();
-        } catch (IOException e) {
-            log.error(sm.getString("contextConfig.baseError"), e);
+        File hostConfigBase = getHostConfigBase();
+        if (hostConfigBase == null)
             return null;
-        }
 
-        return getWebXmlSource(Constants.HostWebXml, basePath);
+        return getWebXmlSource(Constants.HostWebXml, hostConfigBase.getPath());
     }
 
     /**

Modified: tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java?rev=1343153&r1=1343152&r2=1343153&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Mon May 28 07:11:43 2012
@@ -77,12 +77,6 @@ public class HostConfig
 
 
     /**
-     * Config base.
-     */
-    protected File configBase = null;
-
-
-    /**
      * The Java class name of the Context configuration class we should use.
      */
     protected String configClass = "org.apache.catalina.startup.ContextConfig";
@@ -396,38 +390,11 @@ public class HostConfig
 
 
     /**
-     * Return a File object representing the "configuration root" directory
-     * for our associated Host.
-     */
-    protected File configBase() {
-
-        if (configBase != null) {
-            return configBase;
-        }
-
-        if (host.getXmlBase()!=null) {
-            configBase = returnCanonicalPath(host.getXmlBase());
-        } else {
-            StringBuilder xmlDir = new StringBuilder("conf");
-            Container parent = host.getParent();
-            if (parent instanceof Engine) {
-                xmlDir.append('/');
-                xmlDir.append(parent.getName());
-            }
-            xmlDir.append('/');
-            xmlDir.append(host.getName());
-            configBase = returnCanonicalPath(xmlDir.toString());
-        }
-        return (configBase);
-
-    }
-
-    /**
      * Get the name of the configBase.
      * For use with JMX management.
      */
     public String getConfigBaseName() {
-        return configBase().getAbsolutePath();
+        return host.getConfigBaseFile().getAbsolutePath();
     }
 
 
@@ -438,7 +405,7 @@ public class HostConfig
     protected void deployApps() {
 
         File appBase = host.getAppBaseFile();
-        File configBase = configBase();
+        File configBase = host.getConfigBaseFile();
         String[] filteredAppPaths = filterAppPaths(appBase.list());
         // Deploy XML descriptors from configBase
         deployDescriptors(configBase, configBase.list());
@@ -491,7 +458,7 @@ public class HostConfig
     protected void deployApps(String name) {
 
         File appBase = host.getAppBaseFile();
-        File configBase = configBase();
+        File configBase = host.getConfigBaseFile();
         ContextName cn = new ContextName(name);
         String baseName = cn.getBaseName();
 
@@ -782,7 +749,7 @@ public class HostConfig
         BufferedOutputStream ostream = null;
         File xml;
         if (copyXML) {
-            xml = new File(configBase(), cn.getBaseName() + ".xml");
+            xml = new File(host.getConfigBaseFile(), cn.getBaseName() + ".xml");
         } else {
             xml = new File(host.getAppBaseFile(),
                     cn.getBaseName() + "/META-INF/context.xml");
@@ -1034,7 +1001,7 @@ public class HostConfig
                     }
                 }
                 if (copyXML) {
-                    xmlCopy = new File(configBase(), cn.getBaseName() + ".xml");
+                    xmlCopy = new File(host.getConfigBaseFile(), cn.getBaseName() + ".xml");
                     InputStream is = null;
                     OutputStream os = null;
                     try {
@@ -1213,7 +1180,7 @@ public class HostConfig
                                     host.getAppBaseFile().getAbsolutePath() +
                                     File.separator))
                                     || (current.getAbsolutePath().startsWith(
-                                            configBase().getAbsolutePath()))) {
+                                            host.getConfigBaseFile().getAbsolutePath()))) {
                                 if (log.isDebugEnabled())
                                     log.debug("Delete " + current);
                                 ExpandWar.delete(current);
@@ -1269,7 +1236,7 @@ public class HostConfig
                         if ((current.getAbsolutePath().startsWith(
                                 host.getAppBaseFile().getAbsolutePath() + File.separator))
                             || (current.getAbsolutePath().startsWith(
-                                    configBase().getAbsolutePath()))) {
+                                    host.getConfigBaseFile().getAbsolutePath()))) {
                             if (log.isDebugEnabled())
                                 log.debug("Delete " + current);
                             ExpandWar.delete(current);
@@ -1297,7 +1264,7 @@ public class HostConfig
                         if ((current.getAbsolutePath().startsWith(
                                 host.getAppBaseFile().getAbsolutePath() + File.separator))
                             || ((current.getAbsolutePath().startsWith(
-                                    configBase().getAbsolutePath())
+                                    host.getConfigBaseFile().getAbsolutePath())
                                  && (current.getAbsolutePath().endsWith(".xml"))))) {
                             if (log.isDebugEnabled())
                                 log.debug("Delete " + current);
@@ -1368,7 +1335,7 @@ public class HostConfig
         }
 
         if (host.getCreateDirs()) {
-            File[] dirs = new File[] {host.getAppBaseFile(),configBase()};
+            File[] dirs = new File[] {host.getAppBaseFile(),host.getConfigBaseFile()};
             for (int i=0; i<dirs.length; i++) {
                 if (!dirs[i].mkdirs() && !dirs[i].isDirectory()) {
                     log.error(sm.getString("hostConfig.createDirs",dirs[i]));
@@ -1405,8 +1372,6 @@ public class HostConfig
             }
         }
         oname = null;
-        configBase = null;
-
     }
 
 



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