Author: pero Date: Tue Apr 18 05:59:06 2006 New Revision: 394930 URL: http://svn.apache.org/viewcvs?rev=394930&view=rev Log: Make sure that StoreConfig save external referenced war files at context.xml correct.
Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardContext.java tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/ContextConfig.java tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreAppender.java tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreContextAppender.java tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/server-registry.xml tomcat/container/tc5.5.x/webapps/docs/changelog.xml Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardContext.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardContext.java?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardContext.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardContext.java Tue Apr 18 05:59:06 2006 @@ -332,6 +332,11 @@ /** + * The original document root for this web application. + */ + private String originalDocBase = null; + + /** * The exception pages for this web application, keyed by fully qualified * class name of the Java exception. */ @@ -1241,6 +1246,28 @@ } + /** + * Return the original document root for this Context. This can be an absolute + * pathname, a relative pathname, or a URL. + * Is only set as deployment has change docRoot! + */ + public String getOriginalDocBase() { + + return (this.originalDocBase); + + } + + /** + * Set the original document root for this Context. This can be an absolute + * pathname, a relative pathname, or a URL. + * + * @param docBase The orginal document root + */ + public void setOriginalDocBase(String docBase) { + + this.originalDocBase = docBase; + } + // experimental public boolean isLazy() { return lazy; Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/mbeans-descriptors.xml Tue Apr 18 05:59:06 2006 @@ -129,6 +129,10 @@ description="Name of the object" type="java.lang.String"/> + <attribute name="originalDocBase" + description="The original document root for this web application" + type="java.lang.String"/> + <attribute name="override" description="The DefaultContext override flag for this web application" type="boolean"/> Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/ContextConfig.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/ContextConfig.java?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/ContextConfig.java (original) +++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/startup/ContextConfig.java Tue Apr 18 05:59:06 2006 @@ -858,7 +858,8 @@ docBase = file.getCanonicalPath(); } file = new File(docBase); - + String origDocBase = docBase ; + if (docBase.toLowerCase().endsWith(".war") && !file.isDirectory() && unpackWARs) { URL war = new URL("jar:" + (new File(docBase)).toURL() + "!/"); String contextPath = context.getPath(); @@ -868,6 +869,9 @@ docBase = ExpandWar.expand(host, war, contextPath); file = new File(docBase); docBase = file.getCanonicalPath(); + if (context instanceof StandardContext) { + ((StandardContext) context).setOriginalDocBase(origDocBase); + } } else { File docDir = new File(docBase); if (!docDir.exists()) { @@ -881,6 +885,9 @@ } else { docBase = warFile.getCanonicalPath(); } + } + if (context instanceof StandardContext) { + ((StandardContext)context).setOriginalDocBase(origDocBase); } } } Modified: tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreAppender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreAppender.java?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreAppender.java (original) +++ tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreAppender.java Tue Apr 18 05:59:06 2006 @@ -254,8 +254,7 @@ // The property has its default value continue; } - if (isPrintValue(bean, bean2, descriptors[i].getName(), desc)) - printValue(writer, indent, descriptors[i].getName(), value); + printAttribute(writer, indent, bean, desc, descriptors[i].getName(), bean2, value); } if (bean instanceof ResourceBase) { @@ -273,6 +272,20 @@ } } + } + + /** + * @param writer + * @param indent + * @param bean + * @param desc + * @param attributeName + * @param bean2 + * @param value + */ + protected void printAttribute(PrintWriter writer, int indent, Object bean, StoreDescription desc, String attributeName, Object bean2, Object value) { + if (isPrintValue(bean, bean2, attributeName, desc)) + printValue(writer, indent, attributeName, value); } /** Modified: tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreContextAppender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreContextAppender.java?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreContextAppender.java (original) +++ tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/StoreContextAppender.java Tue Apr 18 05:59:06 2006 @@ -17,6 +17,7 @@ import java.io.File; import java.io.IOException; +import java.io.PrintWriter; import org.apache.catalina.Container; import org.apache.catalina.core.StandardContext; @@ -34,6 +35,28 @@ private static Log log = LogFactory.getLog(StoreContextAppender.class); + /** + * @param writer + * @param indent + * @param bean + * @param desc + * @param attributeName + * @param bean2 + * @param value + */ + protected void printAttribute(PrintWriter writer, int indent, Object bean, StoreDescription desc, String attributeName, Object bean2, Object value) { + if (isPrintValue(bean, bean2, attributeName, desc)) { + if(attributeName.equals("docBase")) { + if(bean instanceof StandardContext) { + String docBase = ((StandardContext)bean).getOriginalDocBase() ; + if(docBase != null) + value = docBase ; + } + } + printValue(writer, indent, attributeName, value); + } + } + /* * Print Context Values. <ul><li> Spezial handling to default workDir. * </li><li> Don't save path at external context.xml </li><li> Don't @@ -86,9 +109,12 @@ protected File getDocBase(StandardContext context, File appBase) { File docBase; - File file = new File(context.getDocBase()); + String contextDocBase = context.getOriginalDocBase() ; + if(contextDocBase == null) + contextDocBase = context.getDocBase() ; + File file = new File(contextDocBase); if (!file.isAbsolute()) - file = new File(appBase, context.getDocBase()); + file = new File(appBase, contextDocBase); try { docBase = file.getCanonicalFile(); } catch (IOException e) { Modified: tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/server-registry.xml URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/server-registry.xml?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/server-registry.xml (original) +++ tomcat/container/tc5.5.x/modules/storeconfig/src/share/org/apache/catalina/storeconfig/server-registry.xml Tue Apr 18 05:59:06 2006 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="UTF-8"?> -<Registry name="Tomcat" version="5.5.5" encoding="UTF-8" > +<Registry name="Tomcat" version="5.5.18" encoding="UTF-8" > <Description tag="Server" standard="true" @@ -55,6 +55,7 @@ <TransientAttribute>engineName</TransientAttribute> <TransientAttribute>name</TransientAttribute> <TransientAttribute>publicId</TransientAttribute> + <TransientAttribute>originalDocBase</TransientAttribute> <TransientAttribute>replaceWelcomeFiles</TransientAttribute> <TransientAttribute>saveConfig</TransientAttribute> <TransientAttribute>sessionTimeout</TransientAttribute> Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?rev=394930&r1=394929&r2=394930&view=diff ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Tue Apr 18 05:59:06 2006 @@ -24,6 +24,13 @@ </update> </changelog> </subsection> + <subsection name="Webapps"> + <changelog> + <fix> + <bug>37781</bug>: Make sure that StoreConfig save external referenced war files at context.xml correct. (pero) + </fix> + </changelog> + </subsection> </section> <section name="Tomcat 5.5.17 (yoavs)"> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]