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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org