Author: fhanik
Date: Wed Mar 11 22:05:12 2009
New Revision: 752651

URL: http://svn.apache.org/viewvc?rev=752651&view=rev
Log:
Allow xmlBase to be configurable, just like appBase. 

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/HostConfig.java
    tomcat/trunk/webapps/docs/config/host.xml

Modified: tomcat/trunk/java/org/apache/catalina/Host.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/Host.java?rev=752651&r1=752650&r2=752651&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/Host.java (original)
+++ tomcat/trunk/java/org/apache/catalina/Host.java Wed Mar 11 22:05:12 2009
@@ -68,6 +68,22 @@
 
 
     /**
+     * Return the XML root for this Host.  This can be an absolute
+     * pathname, a relative pathname, or a URL.
+     * If null, defaults to ${catalina.base}/conf/ directory
+     */
+    public String getXmlBase();
+    
+    /**
+     * Set the Xml root for this Host.  This can be an absolute
+     * pathname, a relative pathname, or a URL.
+     * If null, defaults to ${catalina.base}/conf/ directory
+     *
+     * @param xmlBase The new XML root
+     */
+    public void setXmlBase(String xmlBase);
+
+        /**
      * 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=752651&r1=752650&r2=752651&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardHost.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardHost.java Wed Mar 11 
22:05:12 2009
@@ -79,6 +79,10 @@
      */
     private String appBase = ".";
 
+    /**
+     * The XML root for this Host.
+     */
+    private String xmlBase = null;
 
     /**
      * The auto deploy flag for this Host.
@@ -170,6 +174,16 @@
 
     }
 
+    /**
+     * Return the XML root for this Host.  This can be an absolute
+     * pathname, a relative pathname, or a URL.
+     * If null, defaults to ${catalina.base}/conf/ directory
+     */
+    public String getXmlBase() {
+
+        return (this.xmlBase);
+
+    }
 
     /**
      * Set the application root for this Host.  This can be an absolute
@@ -184,6 +198,21 @@
         support.firePropertyChange("appBase", oldAppBase, this.appBase);
 
     }
+    
+    /**
+     * Set the Xml root for this Host.  This can be an absolute
+     * pathname, a relative pathname, or a URL.
+     * If null, defaults to ${catalina.base}/conf/ directory
+     *
+     * @param xmlBase The new XML root
+     */
+    public void setXmlBase(String xmlBase) {
+
+        String oldXmlBase = this.xmlBase;
+        this.xmlBase = xmlBase;
+        support.firePropertyChange("xmlBase", oldXmlBase, this.xmlBase);
+
+    }
 
 
     /**

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=752651&r1=752650&r2=752651&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Wed Mar 11 
22:05:12 2009
@@ -304,6 +304,9 @@
                 setUnpackWARs(((StandardHost) host).isUnpackWARs());
                 setXmlNamespaceAware(((StandardHost) 
host).getXmlNamespaceAware());
                 setXmlValidation(((StandardHost) host).getXmlValidation());
+                if (((StandardHost) host).getXmlBase()!=null) {
+                    
+                }
             }
         } catch (ClassCastException e) {
             log.error(sm.getString("hostConfig.cce", event.getLifecycle()), e);
@@ -394,6 +397,18 @@
         return (digester);
     }
     
+    protected File returnCanonicalPath(String path) {
+        File file = new File(path);
+        File base = new File(System.getProperty("catalina.base"));
+        if (!file.isAbsolute())
+            file = new File(base,path);
+        try {
+            return file.getCanonicalFile();
+        } catch (IOException e) {
+            return file;
+        }
+    }
+    
 
     /**
      * Return a File object representing the "application root" directory
@@ -404,17 +419,9 @@
         if (appBase != null) {
             return appBase;
         }
-
-        File file = new File(host.getAppBase());
-        if (!file.isAbsolute())
-            file = new File(System.getProperty("catalina.base"),
-                            host.getAppBase());
-        try {
-            appBase = file.getCanonicalFile();
-        } catch (IOException e) {
-            appBase = file;
-        }
-        return (appBase);
+        
+        appBase = returnCanonicalPath(host.getAppBase());
+        return appBase;
 
     }
 
@@ -428,17 +435,11 @@
         if (configBase != null) {
             return configBase;
         }
-
-        File file = new File(System.getProperty("catalina.base"), "conf");
-        Container parent = host.getParent();
-        if ((parent != null) && (parent instanceof Engine)) {
-            file = new File(file, parent.getName());
-        }
-        file = new File(file, host.getName());
-        try {
-            configBase = file.getCanonicalFile();
-        } catch (IOException e) {
-            configBase = file;
+        
+        if (host.getXmlBase()!=null) {
+            configBase = returnCanonicalPath(host.getXmlBase());
+        } else {
+            configBase = returnCanonicalPath("conf");
         }
         return (configBase);
 
@@ -748,7 +749,7 @@
         InputStream istream = null;
         BufferedOutputStream ostream = null;
         File xml = new File
-            (configBase, file.substring(0, file.lastIndexOf(".")) + ".xml");
+            (configBase(), file.substring(0, file.lastIndexOf(".")) + ".xml");
         if (deployXML && !xml.exists()) {
             try {
                 jar = new JarFile(war);
@@ -756,7 +757,7 @@
                 if (entry != null) {
                     istream = jar.getInputStream(entry);
                     
-                    configBase.mkdirs();
+                    configBase().mkdirs();
                     
                     ostream =
                         new BufferedOutputStream
@@ -950,8 +951,8 @@
                         digester.reset();
                     }
                 }
-                configBase.mkdirs();
-                File xmlCopy = new File(configBase, file + ".xml");
+                configBase().mkdirs();
+                File xmlCopy = new File(configBase(), file + ".xml");
                 InputStream is = null;
                 OutputStream os = null;
                 try {

Modified: tomcat/trunk/webapps/docs/config/host.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/config/host.xml?rev=752651&r1=752650&r2=752651&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/config/host.xml (original)
+++ tomcat/trunk/webapps/docs/config/host.xml Wed Mar 11 22:05:12 2009
@@ -85,6 +85,17 @@
         Deployment</a> for more information on automatic recognition and
         deployment of web applications to be deployed automatically.</p>
       </attribute>
+      
+      <attribute name="xmlBase" required="false">
+        <p>The <em>XML Base</em> directory for this virtual host.
+        This is the pathname of a directory that may contain context XML 
descriptors
+        to be deployed on this virtual host.  You may specify an
+        absolute pathname for this directory, or a pathname that is relative
+        to the <code>$CATALINA_BASE</code> directory.  See
+        <a href="#Automatic Application Deployment">Automatic Application
+        Deployment</a> for more information on automatic recognition and
+        deployment of web applications to be deployed automatically.</p>
+      </attribute>
 
       <attribute name="autoDeploy" required="false">
         <p>This flag value indicates if new web applications, dropped in to
@@ -155,7 +166,7 @@
         applications from interacting with the container's configuration. The 
         administrator will then be responsible for providing an external 
context 
         configuration file, and put it in 
-        <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code>.
+        <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> unless the 
attribute <code>xmlBase</code> is specified.
         The flag's value defaults to <code>true</code>.</p>
       </attribute>
 



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

Reply via email to