You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2013/10/07 17:40:18 UTC

svn commit: r1529976 - in /tomcat/sandbox: storeconfig6/trunk/ storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/ storeconfig7/trunk/ storeconfig7/trunk/src/main/java...

Author: remm
Date: Mon Oct  7 15:40:18 2013
New Revision: 1529976

URL: http://svn.apache.org/r1529976
Log:
Port fixes to storeconfig for TC 6 and 7.

Modified:
    tomcat/sandbox/storeconfig6/trunk/pom.xml
    tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java
    tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java
    tomcat/sandbox/storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml
    tomcat/sandbox/storeconfig7/trunk/pom.xml
    tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java
    tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StandardContextSF.java
    tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java
    tomcat/sandbox/storeconfig7/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml

Modified: tomcat/sandbox/storeconfig6/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/trunk/pom.xml?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig6/trunk/pom.xml (original)
+++ tomcat/sandbox/storeconfig6/trunk/pom.xml Mon Oct  7 15:40:18 2013
@@ -27,7 +27,7 @@
 
     <groupId>org.apache.tomcat</groupId>
     <artifactId>tomcat6-storeconfig</artifactId>
-    <version> 0.0.1.Alpha2-SNAPSHOT</version>
+    <version> 0.0.1.Alpha3-SNAPSHOT</version>
 
     <name>Store Config</name>
     <description>Configuration storage for Apache Tomcat 6</description>

Modified: tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java (original)
+++ tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java Mon Oct  7 15:40:18 2013
@@ -106,10 +106,6 @@ public class ConnectorStoreAppender exte
             if (value.equals("null")) {
             	continue; // "null" values are not persisted
             }
-            // Convert IP addresses to strings so they will be persisted
-            if (value instanceof InetAddress) {
-                value = ((InetAddress) value).getHostAddress();
-            }
             if (!isPersistable(value.getClass())) {
                 continue;
             }

Modified: tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java (original)
+++ tomcat/sandbox/storeconfig6/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java Mon Oct  7 15:40:18 2013
@@ -21,6 +21,7 @@ import java.beans.IndexedPropertyDescrip
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.io.PrintWriter;
+import java.net.InetAddress;
 import java.util.Iterator;
 
 import org.apache.catalina.deploy.ResourceBase;
@@ -41,7 +42,7 @@ public class StoreAppender {
             Integer.TYPE, Boolean.class, Boolean.TYPE, Byte.class, Byte.TYPE,
             Character.class, Character.TYPE, Double.class, Double.TYPE,
             Float.class, Float.TYPE, Long.class, Long.TYPE, Short.class,
-            Short.TYPE, };
+            Short.TYPE, InetAddress.class };
 
     /**
      * print the closing tag
@@ -334,6 +335,10 @@ public class StoreAppender {
      */
     public void printValue(PrintWriter writer, int indent, String name,
             Object value) {
+        // Convert IP addresses to strings so they will be persisted
+        if (value instanceof InetAddress) {
+            value = ((InetAddress) value).getHostAddress();
+        }
         if (!(value instanceof String)) {
             value = value.toString();
         }
@@ -383,7 +388,7 @@ public class StoreAppender {
     protected boolean isPersistable(Class clazz) {
 
         for (int i = 0; i < persistables.length; i++) {
-            if (persistables[i] == clazz) {
+            if (persistables[i] == clazz || persistables[i].isAssignableFrom(clazz)) {
                 return (true);
             }
         }

Modified: tomcat/sandbox/storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml (original)
+++ tomcat/sandbox/storeconfig6/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml Mon Oct  7 15:40:18 2013
@@ -186,6 +186,7 @@
        <TransientChild>org.apache.catalina.startup.HostConfig</TransientChild>
        <TransientChild>org.apache.catalina.startup.TldConfig</TransientChild>
        <TransientChild>org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener</TransientChild>
+       <TransientChild>org.apache.catalina.core.StandardEngine$AccessLogListener</TransientChild>
      </Description>
      <Description
         id="org.apache.catalina.core.StandardServer.[ServerLifecycleListener]"

Modified: tomcat/sandbox/storeconfig7/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig7/trunk/pom.xml?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig7/trunk/pom.xml (original)
+++ tomcat/sandbox/storeconfig7/trunk/pom.xml Mon Oct  7 15:40:18 2013
@@ -27,7 +27,7 @@
 
     <groupId>org.apache.tomcat</groupId>
     <artifactId>tomcat7-storeconfig</artifactId>
-    <version>0.0.1.Alpha2-SNAPSHOT</version>
+    <version>0.0.1.Alpha3-SNAPSHOT</version>
 
     <name>Store Config</name>
     <description>Configuration storage for Apache Tomcat 7</description>

Modified: tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java (original)
+++ tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/ConnectorStoreAppender.java Mon Oct  7 15:40:18 2013
@@ -103,10 +103,6 @@ public class ConnectorStoreAppender exte
             if (value == null) {
                 continue; // Null values are not persisted
             }
-            // Convert IP addresses to strings so they will be persisted
-            if (value instanceof InetAddress) {
-                value = ((InetAddress) value).getHostAddress();
-            }
             if (!isPersistable(value.getClass())) {
                 continue;
             }

Modified: tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StandardContextSF.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StandardContextSF.java?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StandardContextSF.java (original)
+++ tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StandardContextSF.java Mon Oct  7 15:40:18 2013
@@ -31,6 +31,7 @@ import javax.naming.directory.DirContext
 import org.apache.catalina.Container;
 import org.apache.catalina.Context;
 import org.apache.catalina.Engine;
+import org.apache.catalina.Globals;
 import org.apache.catalina.Host;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleListener;
@@ -39,8 +40,11 @@ import org.apache.catalina.Manager;
 import org.apache.catalina.Realm;
 import org.apache.catalina.Valve;
 import org.apache.catalina.core.StandardContext;
+import org.apache.catalina.core.StandardHost;
+import org.apache.catalina.core.ThreadLocalLeakPreventionListener;
 import org.apache.catalina.deploy.ApplicationParameter;
 import org.apache.catalina.deploy.NamingResources;
+import org.apache.catalina.util.ContextName;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.naming.resources.ProxyDirContext;
@@ -85,6 +89,19 @@ public class StandardContextSF extends S
                         return;
                     }
                 } else if (desc.isExternalOnly()) {
+                    // Set a configFile so that the configuration is actually saved
+                    Context context = ((StandardContext) aContext);
+                    StandardHost host = (StandardHost) context.getParent();
+                    File configBase = getConfigBaseFile(host);
+                    ContextName cn = new ContextName(context.getName());
+                    String baseName = cn.getBaseName();
+                    File xml = new File(configBase, baseName + ".xml");
+                    context.setConfigFile(xml.toURI().toURL());
+                    if (desc.isBackup())
+                        storeWithBackup((StandardContext) aContext);
+                    else
+                        storeContextSeparate(aWriter, indent,
+                                (StandardContext) aContext);
                     return;
                 }
             }
@@ -94,6 +111,35 @@ public class StandardContextSF extends S
     }
 
     /**
+     * Return the Host config base path.
+     */
+    protected static File getConfigBaseFile(StandardHost host) {
+        String path = null;
+        if (host.getXmlBase() != null) {
+            path = 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());
+            path = xmlDir.toString();
+        }
+        File file = new File(path);
+        File base = new File(System.getProperty(Globals.CATALINA_BASE_PROP));
+        if (!file.isAbsolute())
+            file = new File(base,path);
+        try {
+            return file.getCanonicalFile();
+        } catch (IOException e) {
+            return file;
+        }
+    }
+
+    /**
      * Store a Context without backup add separate file or when configFile =
      * null a aWriter.
      * 
@@ -245,7 +291,13 @@ public class StandardContextSF extends S
             if (context instanceof Lifecycle) {
                 LifecycleListener listeners[] = context
                         .findLifecycleListeners();
-                storeElementArray(aWriter, indent, listeners);
+                ArrayList<LifecycleListener> listenersArray = new ArrayList<LifecycleListener>();
+                for (LifecycleListener listener : listeners) {
+                    if (!(listener instanceof ThreadLocalLeakPreventionListener)) {
+                        listenersArray.add(listener);
+                    }
+                }
+                storeElementArray(aWriter, indent, listenersArray.toArray());
             }
             // Store nested <Valve> elements
             Valve valves[] = context.getPipeline().getValves();
@@ -356,7 +408,7 @@ public class StandardContextSF extends S
                 "conf/web.xml").getCanonicalPath();
         String confHostDefault = new File(configBase, "context.xml.default")
                 .getCanonicalPath();
-        String configFile = new File(context.getConfigFile().toURI()).getCanonicalPath();
+        String configFile = (context.getConfigFile() != null ? new File(context.getConfigFile().toURI()).getCanonicalPath() : null);
         String webxml = "WEB-INF/web.xml" ;
         
         List resource = new ArrayList();

Modified: tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java (original)
+++ tomcat/sandbox/storeconfig7/trunk/src/main/java/org/apache/catalina/storeconfig/StoreAppender.java Mon Oct  7 15:40:18 2013
@@ -21,6 +21,7 @@ import java.beans.IndexedPropertyDescrip
 import java.beans.Introspector;
 import java.beans.PropertyDescriptor;
 import java.io.PrintWriter;
+import java.net.InetAddress;
 import java.util.Iterator;
 
 import org.apache.catalina.deploy.ResourceBase;
@@ -41,7 +42,7 @@ public class StoreAppender {
             Integer.TYPE, Boolean.class, Boolean.TYPE, Byte.class, Byte.TYPE,
             Character.class, Character.TYPE, Double.class, Double.TYPE,
             Float.class, Float.TYPE, Long.class, Long.TYPE, Short.class,
-            Short.TYPE, };
+            Short.TYPE, InetAddress.class };
 
     /**
      * print the closing tag
@@ -331,6 +332,10 @@ public class StoreAppender {
      */
     public void printValue(PrintWriter writer, int indent, String name,
             Object value) {
+        // Convert IP addresses to strings so they will be persisted
+        if (value instanceof InetAddress) {
+            value = ((InetAddress) value).getHostAddress();
+        }
         if (!(value instanceof String)) {
             value = value.toString();
         }
@@ -380,7 +385,7 @@ public class StoreAppender {
     protected boolean isPersistable(Class clazz) {
 
         for (int i = 0; i < persistables.length; i++) {
-            if (persistables[i] == clazz) {
+            if (persistables[i] == clazz || persistables[i].isAssignableFrom(clazz)) {
                 return (true);
             }
         }

Modified: tomcat/sandbox/storeconfig7/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml
URL: http://svn.apache.org/viewvc/tomcat/sandbox/storeconfig7/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml?rev=1529976&r1=1529975&r2=1529976&view=diff
==============================================================================
--- tomcat/sandbox/storeconfig7/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml (original)
+++ tomcat/sandbox/storeconfig7/trunk/src/main/resources/org/apache/catalina/storeconfig/server-registry.xml Mon Oct  7 15:40:18 2013
@@ -188,7 +188,7 @@
        <TransientChild>org.apache.catalina.startup.TldConfig</TransientChild>
        <TransientChild>org.apache.catalina.core.StandardHost$MemoryLeakTrackingListener</TransientChild>
        <TransientChild>org.apache.catalina.connector.MapperListener</TransientChild>
-       <TransientChild>org.apache.catalina.core.ThreadLocalLeakPreventionListener</TransientChild>
+       <TransientChild>org.apache.catalina.core.StandardEngine$AccessLogListener</TransientChild>
      </Description>
      <Description
         id="org.apache.catalina.core.StandardServer.[ServerLifecycleListener]"



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