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

Reply via email to