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: [email protected]
For additional commands, e-mail: [email protected]