Author: markt
Date: Tue Jun  4 21:54:48 2013
New Revision: 1489648

URL: http://svn.apache.org/r1489648
Log:
Add the ability for a context.xml file in a webapp to override the default 
value of copyXML on the host. There are some 'interesting' edge cases here. 
Test cases to follow.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
    tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java

Modified: tomcat/trunk/java/org/apache/catalina/core/StandardContext.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/StandardContext.java?rev=1489648&r1=1489647&r2=1489648&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/StandardContext.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/StandardContext.java Tue Jun  4 
21:54:48 2013
@@ -486,6 +486,12 @@ public class StandardContext extends Con
 
 
     /**
+     * Context level override for default {@link StandardHost#isCopyXML()}.
+     */
+    private boolean copyXML = false;
+
+
+    /**
      * The default context override flag for this web application.
      */
     private boolean override = false;
@@ -2376,6 +2382,17 @@ public class StandardContext extends Con
 
     }
 
+
+    public boolean getCopyXML() {
+        return copyXML;
+    }
+
+
+    public void setCopyXML(boolean copyXML) {
+        this.copyXML = copyXML;
+    }
+
+
     /**
      * Return the Java class name of the Wrapper implementation used
      * for servlets registered in this Context.

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=1489648&r1=1489647&r2=1489648&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/HostConfig.java Tue Jun  4 
21:54:48 2013
@@ -53,6 +53,7 @@ import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
 import org.apache.catalina.Manager;
+import org.apache.catalina.core.StandardContext;
 import org.apache.catalina.core.StandardHost;
 import org.apache.catalina.util.ContextName;
 import org.apache.catalina.util.IOTools;
@@ -892,14 +893,10 @@ public class HostConfig
                 copyThisXml = ((StandardHost) host).isCopyXML();
             }
 
-            /**
-             * TODO
-             *
             // If Host is using default value Context can override it.
             if (!copyXML && context instanceof StandardContext) {
                 copyXML = ((StandardContext) context).getCopyXML();
             }
-            */
 
             if (xmlInWar && copyThisXml) {
                 // Change location of XML file to config base
@@ -1084,8 +1081,7 @@ public class HostConfig
                 new File(host.getConfigBaseFile(), cn.getBaseName() + ".xml");
 
 
-        DeployedApplication deployedApp = new DeployedApplication(cn.getName(),
-                xml.exists() && deployXML && copyXML);
+        DeployedApplication deployedApp;
 
         try {
             if (deployXML && xml.exists()) {
@@ -1103,6 +1099,12 @@ public class HostConfig
                         digester.reset();
                     }
                 }
+
+                if (copyXML == false && context instanceof StandardContext) {
+                    // Host is using default value. Context may override it.
+                    copyXML = ((StandardContext) context).getCopyXML();
+                }
+
                 if (copyXML) {
                     InputStream is = null;
                     OutputStream os = null;
@@ -1146,6 +1148,9 @@ public class HostConfig
             log.error(sm.getString("hostConfig.deployDir.error",
                     dir.getAbsolutePath()), t);
         } finally {
+            deployedApp = new DeployedApplication(cn.getName(),
+                    xml.exists() && deployXML && copyXML);
+
             // Fake re-deploy resource to detect if a WAR is added at a later
             // point
             deployedApp.redeployResources.put(dir.getAbsolutePath() + ".war",



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

Reply via email to