Author: pero Date: Sat Jul 3 23:02:46 2010 New Revision: 960284 URL: http://svn.apache.org/viewvc?rev=960284&view=rev Log: Fix NPE and add small test case to check VirtualWebappLoader.
Added: tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java (with props) Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=960284&r1=960283&r2=960284&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java (original) +++ tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Sat Jul 3 23:02:46 2010 @@ -483,9 +483,7 @@ public class WebappLoader extends Lifecy * such that the loaded classes should be reloaded? */ public boolean modified() { - - return (classLoader.modified()); - + return classLoader != null ? classLoader.modified() : false ; } @@ -493,7 +491,7 @@ public class WebappLoader extends Lifecy * Used to periodically signal to the classloader to release JAR resources. */ public void closeJARs(boolean force) { - if (classLoader !=null){ + if (classLoader !=null) { classLoader.closeJARs(force); } } Added: tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java?rev=960284&view=auto ============================================================================== --- tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java (added) +++ tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java Sat Jul 3 23:02:46 2010 @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.catalina.loader; + +import java.io.File; + +import org.apache.catalina.core.StandardContext; +import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.naming.resources.FileDirContext; + +public class TestVirtualWebappLoader extends TomcatBaseTest { + + public void testModified() throws Exception { + WebappLoader loader = new WebappLoader(); + assertNull(loader.getClassLoader()); + assertFalse(loader.modified()); + } + + public void testStartInternal() throws Exception { + Tomcat tomcat = getTomcatInstance(); + File appDir = new File("test/webapp-3.0"); + // Must have a real docBase - just use temp + StandardContext ctx = + (StandardContext)tomcat.addContext("/", appDir.getAbsolutePath()); + + VirtualWebappLoader loader = new VirtualWebappLoader(); + + loader.setContainer(ctx); + ctx.setLoader(loader); + ctx.setResources(new FileDirContext()); + ctx.resourcesStart(); + File dir = new File("test/webapp-3.0-fragments/WEB-INF/lib"); + loader.setVirtualClasspath(dir.getAbsolutePath() + "/*.jar"); + loader.startInternal(); + String[] repos = loader.getRepositories(); + assertEquals(2,repos.length); + loader.stopInternal(); + // ToDo: Why doesn't remove repositories? + repos = loader.getRepositories(); + assertEquals(2, repos.length); + + // no leak + loader.startInternal(); + repos = loader.getRepositories(); + assertEquals(2,repos.length); + + // clear loader + ctx.setLoader(null); + // see tearDown()! + tomcat.start(); + } +} Propchange: tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: tomcat/trunk/test/org/apache/catalina/loader/TestVirtualWebappLoader.java ------------------------------------------------------------------------------ svn:keywords = Author Date Id Revision --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org