Author: kkolinko Date: Thu Jan 21 20:07:28 2016 New Revision: 1726080 URL: http://svn.apache.org/viewvc?rev=1726080&view=rev Log: Backport additional tests from Tomcat 7. Process META-INF/context.xml file when deploying an expanded directory with Tomcat.addWebapp(). Clean unused imports.
Added: tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/deployment/ tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/deployment/dirContext/ - copied from r1725929, tomcat/tc7.0.x/trunk/test/deployment/dirContext/ tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/deployment/dirNoContext/ - copied from r1725929, tomcat/tc7.0.x/trunk/test/deployment/dirNoContext/ Modified: tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/TestTomcat.java tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/Tomcat.java Modified: tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/TestTomcat.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/TestTomcat.java?rev=1726080&r1=1726079&r2=1726080&view=diff ============================================================================== --- tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/TestTomcat.java (original) +++ tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/TestTomcat.java Thu Jan 21 20:07:28 2016 @@ -23,11 +23,6 @@ import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.net.URLConnection; -import java.security.Principal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; import javax.naming.InitialContext; @@ -48,17 +43,11 @@ import org.junit.Test; import org.apache.catalina.Context; import org.apache.catalina.Host; -import org.apache.catalina.Lifecycle; -import org.apache.catalina.LifecycleEvent; -import org.apache.catalina.LifecycleListener; -import org.apache.catalina.Wrapper; import org.apache.catalina.core.StandardContext; import org.apache.catalina.core.StandardHost; import org.apache.catalina.deploy.ContextEnvironment; import org.apache.catalina.deploy.ContextResourceLink; import org.apache.catalina.ha.context.ReplicatedContext; -import org.apache.catalina.realm.GenericPrincipal; -import org.apache.catalina.realm.RealmBase; import org.apache.tomcat.util.buf.ByteChunk; public class TestTomcat extends TomcatBaseTest { @@ -458,4 +447,148 @@ public class TestTomcat extends TomcatBa assertEquals(1, initCount.getCallCount()); } + + @Test + public void testGetWebappConfigFileFromDirectory() { + Tomcat tomcat = new Tomcat(); + assertNotNull(tomcat.getWebappConfigFile("test/deployment/dirContext", "")); + } + + @Test + public void testGetWebappConfigFileFromDirectoryNegative() { + Tomcat tomcat = new Tomcat(); + assertNull(tomcat.getWebappConfigFile("test/deployment/dirNoContext", "")); + } + +// Reading context.xml from a war file without copying it +// is not implemented in Tomcat 6. (BZ 48662, r928380) +// @Test +// public void testGetWebappConfigFileFromJar() { +// Tomcat tomcat = new Tomcat(); +// assertNotNull(tomcat.getWebappConfigFile("test/deployment/context.war", "")); +// } +// +// @Test +// public void testGetWebappConfigFileFromJarNegative() { +// Tomcat tomcat = new Tomcat(); +// assertNull(tomcat.getWebappConfigFile("test/deployment/noContext.war", "")); +// } +// +// @Test +// public void testBug51526() throws Exception { +// Tomcat tomcat = getTomcatInstance(); +// +// File appFile = new File("test/deployment/context.war"); +// StandardContext context = (StandardContext) tomcat.addWebapp(null, "/test", +// appFile.getAbsolutePath()); +// +// tomcat.start(); +// +// assertEquals("WAR_CONTEXT", context.getSessionCookieName()); +// } +// +// @Test +// public void testGetDefaultContextPerAddWebapp() { +// Tomcat tomcat = getTomcatInstance(); +// +// File appFile = new File("test/deployment/context.war"); +// Context context = tomcat.addWebapp(null, +// "/test", appFile.getAbsolutePath()); +// +// assertEquals(StandardContext.class.getName(), context.getClass() +// .getName()); +// } +// +// @Test +// public void testGetBrokenContextPerAddWepapp() { +// Tomcat tomcat = getTomcatInstance(); +// Host host = tomcat.getHost(); +// if (host instanceof StandardHost) { +// ((StandardHost) host).setContextClass("InvalidContextClassName"); +// } +// +// try { +// File appFile = new File("test/deployment/context.war"); +// tomcat.addWebapp(null, "/test", appFile.getAbsolutePath()); +// fail(); +// } catch (IllegalArgumentException e) { +// // OK +// } +// } +// +// @Test +// public void testGetCustomContextPerAddWebappWithNullHost() { +// Tomcat tomcat = getTomcatInstance(); +// Host host = tomcat.getHost(); +// if (host instanceof StandardHost) { +// ((StandardHost) host).setContextClass(ReplicatedContext.class +// .getName()); +// } +// +// File appFile = new File("test/deployment/context.war"); +// Context context = tomcat.addWebapp(null, "/test", +// appFile.getAbsolutePath()); +// +// assertEquals(ReplicatedContext.class.getName(), context.getClass() +// .getName()); +// } +// +// @Test +// public void testGetCustomContextPerAddWebappWithHost() { +// Tomcat tomcat = getTomcatInstance(); +// Host host = tomcat.getHost(); +// if (host instanceof StandardHost) { +// ((StandardHost) host).setContextClass(ReplicatedContext.class +// .getName()); +// } +// +// File appFile = new File("test/deployment/context.war"); +// Context context = tomcat.addWebapp(host, "/test", +// appFile.getAbsolutePath()); +// +// assertEquals(ReplicatedContext.class.getName(), context.getClass() +// .getName()); +// } + + @Test + public void testGetDefaultContextPerAddContext() { + Tomcat tomcat = getTomcatInstance(); + + // No file system docBase required + Context ctx = tomcat.addContext(null, "", null); + assertEquals(StandardContext.class.getName(), ctx.getClass().getName()); + } + + @Test + public void testGetBrokenContextPerAddContext() { + Tomcat tomcat = getTomcatInstance(); + Host host = tomcat.getHost(); + if (host instanceof StandardHost) { + ((StandardHost) host).setContextClass("InvalidContextClassName"); + } + + // No file system docBase required + try { + tomcat.addContext(null, "", null); + fail(); + } catch (IllegalArgumentException e) { + // OK + } + } + + @Test + public void testGetCustomContextPerAddContextWithHost() { + Tomcat tomcat = getTomcatInstance(); + Host host = tomcat.getHost(); + if (host instanceof StandardHost) { + ((StandardHost) host).setContextClass(ReplicatedContext.class + .getName()); + } + + // No file system docBase required + Context ctx = tomcat.addContext(host, "", null); + assertEquals(ReplicatedContext.class.getName(), ctx.getClass() + .getName()); + } + } Modified: tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/Tomcat.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/Tomcat.java?rev=1726080&r1=1726079&r2=1726080&view=diff ============================================================================== --- tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/Tomcat.java (original) +++ tomcat/tc6.0.x/branches/tomcat6-testing_20160106/test/org/apache/catalina/startup/Tomcat.java Thu Jan 21 20:07:28 2016 @@ -19,18 +19,7 @@ package org.apache.catalina.startup; import java.io.File; import java.io.IOException; import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.Principal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; import java.util.Stack; -import java.util.jar.JarEntry; -import java.util.jar.JarFile; -import java.util.logging.Level; -import java.util.logging.Logger; import javax.servlet.Servlet; import javax.servlet.ServletException; @@ -44,11 +33,9 @@ import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleListener; -import org.apache.catalina.Realm; import org.apache.catalina.Server; import org.apache.catalina.Service; import org.apache.catalina.Wrapper; -import org.apache.catalina.authenticator.NonLoginAuthenticator; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.NamingContextListener; import org.apache.catalina.core.StandardContext; @@ -57,9 +44,6 @@ import org.apache.catalina.core.Standard import org.apache.catalina.core.StandardServer; import org.apache.catalina.core.StandardService; import org.apache.catalina.core.StandardWrapper; -import org.apache.catalina.deploy.LoginConfig; -import org.apache.catalina.realm.GenericPrincipal; -import org.apache.catalina.realm.RealmBase; // TODO: lazy init for the temp dir - only when a JSP is compiled or // get temp dir is called we need to create it. This will avoid the @@ -203,19 +187,19 @@ public class Tomcat { hostname = s; } -// /** -// * This is equivalent to adding a web application to Tomcat's webapps -// * directory. The equivalent of the default web.xml will be applied to the -// * web application and any WEB-INF/web.xml and META-INF/context.xml packaged -// * with the application will be processed normally. Normal web fragment and -// * {@link javax.servlet.ServletContainerInitializer} processing will be -// * applied. -// * -// * @throws ServletException -// */ -// public Context addWebapp(String contextPath, String docBase) throws ServletException { -// return addWebapp(getHost(), contextPath, docBase); -// } + /** + * This is equivalent to adding a web application to Tomcat's webapps + * directory. The equivalent of the default web.xml will be applied to the + * web application and any WEB-INF/web.xml and META-INF/context.xml packaged + * with the application will be processed normally. Normal web fragment and + * {@link javax.servlet.ServletContainerInitializer} processing will be + * applied. + * + * @throws ServletException + */ + public Context addWebapp(String contextPath, String docBase) throws ServletException { + return addWebapp(getHost(), contextPath, docBase); + } /** @@ -575,7 +559,7 @@ public class Tomcat { ctx.setDocBase(docBase); ((Lifecycle) ctx).addLifecycleListener(new DefaultWebXmlListener()); -// ctx.setConfigFile(getWebappConfigFile(docBase, contextPath)); + ctx.setConfigFile(getWebappConfigFile(docBase, contextPath)); ContextConfig ctxCfg = new ContextConfig(); ((Lifecycle) ctx).addLifecycleListener(ctxCfg); @@ -1173,29 +1157,27 @@ public class Tomcat { "zip", "application/zip" }; -// protected URL getWebappConfigFile(String path, String url) { -// File docBase = new File(path); -// if (docBase.isDirectory()) { -// return getWebappConfigFileFromDirectory(docBase, url); -// } else { -// return getWebappConfigFileFromJar(docBase, url); -// } -// } -// -// private URL getWebappConfigFileFromDirectory(File docBase, String url) { -// URL result = null; -// File webAppContextXml = new File(docBase, Constants.ApplicationContextXml); -// if (webAppContextXml.exists()) { -// try { -// result = webAppContextXml.toURI().toURL(); -// } catch (MalformedURLException e) { -// Logger.getLogger(getLoggerName(getHost(), url)).log(Level.WARNING, -// "Unable to determine web application context.xml " + docBase, e); -// } -// } -// return result; -// } -// + protected String getWebappConfigFile(String path, @SuppressWarnings("unused") String contextPath) { + File docBase = new File(path); + if (docBase.isDirectory()) { + return getWebappConfigFileFromDirectory(docBase); + } else { + // Reading context.xml from a war file without copying it + // is not implemented in Tomcat 6. (BZ 48662, r928380) + // return getWebappConfigFileFromJar(docBase, contextPath); + return null; + } + } + + private String getWebappConfigFileFromDirectory(File docBase) { + String result = null; + File webAppContextXml = new File(docBase, Constants.ApplicationContextXml); + if (webAppContextXml.exists()) { + result = webAppContextXml.getAbsolutePath(); + } + return result; + } + // private URL getWebappConfigFileFromJar(File docBase, String url) { // URL result = null; // JarFile jar = null; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org