Author: markh
Date: Fri Feb 29 07:02:52 2008
New Revision: 632337
URL: http://svn.apache.org/viewvc?rev=632337&view=rev
Log:
Used Glassfish's ClassLoaderUtil to ensure URLClassLoaders are releasing locks
on Jars in tests
Modified:
maven/sandbox/trunk/shared/maven-runtime/pom.xml
maven/sandbox/trunk/shared/maven-runtime/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
Modified: maven/sandbox/trunk/shared/maven-runtime/pom.xml
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-runtime/pom.xml?rev=632337&r1=632336&r2=632337&view=diff
==============================================================================
--- maven/sandbox/trunk/shared/maven-runtime/pom.xml (original)
+++ maven/sandbox/trunk/shared/maven-runtime/pom.xml Fri Feb 29 07:02:52 2008
@@ -84,6 +84,13 @@
<version>2.2</version>
<scope>test</scope>
</dependency>
+ <!-- only required for com.sun.appserv.ClassLoaderUtil -->
+ <dependency>
+ <groupId>org.mortbay.jetty</groupId>
+ <artifactId>jsp-2.1</artifactId>
+ <version>6.1.7</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
</project>
Modified:
maven/sandbox/trunk/shared/maven-runtime/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
URL:
http://svn.apache.org/viewvc/maven/sandbox/trunk/shared/maven-runtime/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java?rev=632337&r1=632336&r2=632337&view=diff
==============================================================================
---
maven/sandbox/trunk/shared/maven-runtime/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
(original)
+++
maven/sandbox/trunk/shared/maven-runtime/src/test/java/org/apache/maven/shared/runtime/DefaultMavenRuntimeTest.java
Fri Feb 29 07:02:52 2008
@@ -21,12 +21,14 @@
import java.io.File;
import java.io.FilenameFilter;
+import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.Arrays;
import java.util.List;
import java.util.Properties;
+import java.util.Vector;
import org.apache.commons.io.filefilter.SuffixFileFilter;
import org.apache.maven.project.MavenProject;
@@ -35,6 +37,8 @@
import org.apache.maven.shared.test.plugin.TestToolsException;
import org.codehaus.plexus.PlexusTestCase;
+import com.sun.appserv.ClassLoaderUtil;
+
/**
* Tests <code>DefaultMavenRuntime</code>.
*
@@ -67,21 +71,23 @@
// tests ------------------------------------------------------------------
public void testGetSortedProjectsWithSingleJar()
- throws TestToolsException, MalformedURLException, MavenRuntimeException
+ throws TestToolsException, MavenRuntimeException, IOException
{
packageProject( "testSingleJar/pom.xml" );
File jar = getPackage( "testSingleJar/pom.xml" );
- ClassLoader classLoader = newClassLoader( jar );
+ URLClassLoader classLoader = newClassLoader( jar );
List projects = mavenRuntime.getSortedProjects( classLoader );
+ close( classLoader );
+
assertMavenProjects(
"org.apache.maven.shared.runtime.tests:testSingleJar:1.0", projects );
}
public void testGetSortedProjectsWithMultipleJars()
- throws TestToolsException, MalformedURLException, MavenRuntimeException
+ throws TestToolsException, MavenRuntimeException, IOException
{
packageProject( "testMultipleJars/project1/pom.xml" );
packageProject( "testMultipleJars/project2/pom.xml" );
@@ -91,10 +97,12 @@
File jar2 = getPackage( "testMultipleJars/project2/pom.xml" );
File jar3 = getPackage( "testMultipleJars/project3/pom.xml" );
- ClassLoader classLoader = newClassLoader( new File[] { jar1, jar2,
jar3 } );
+ URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2,
jar3 } );
List projects = mavenRuntime.getSortedProjects( classLoader );
+ close( classLoader );
+
assertMavenProjects( new String[] {
"org.apache.maven.shared.runtime.tests:testMultipleJars1:1.0",
"org.apache.maven.shared.runtime.tests:testMultipleJars2:1.0",
@@ -103,7 +111,7 @@
}
public void testGetSortedProjectsWithDependentJars()
- throws TestToolsException, MalformedURLException, MavenRuntimeException
+ throws TestToolsException, MavenRuntimeException, IOException
{
packageProject( "testDependentJars/pom.xml" );
@@ -111,10 +119,12 @@
File jar2 = getPackage( "testDependentJars/project2/pom.xml" );
File jar3 = getPackage( "testDependentJars/project3/pom.xml" );
- ClassLoader classLoader = newClassLoader( new File[] { jar1, jar2,
jar3 } );
+ URLClassLoader classLoader = newClassLoader( new File[] { jar1, jar2,
jar3 } );
List projects = mavenRuntime.getSortedProjects( classLoader );
+ close( classLoader );
+
assertMavenProjects( new String[] {
"org.apache.maven.shared.runtime.tests:testDependentJars3:1.0",
"org.apache.maven.shared.runtime.tests:testDependentJars1:1.0",
@@ -150,12 +160,12 @@
return jar;
}
- private ClassLoader newClassLoader( File file ) throws
MalformedURLException
+ private URLClassLoader newClassLoader( File file ) throws
MalformedURLException
{
return newClassLoader( new File[] { file } );
}
- private ClassLoader newClassLoader( File[] files ) throws
MalformedURLException
+ private URLClassLoader newClassLoader( File[] files ) throws
MalformedURLException
{
URL[] urls = new URL[files.length];
@@ -166,6 +176,16 @@
return new URLClassLoader( urls, null );
}
+
+ private void close( URLClassLoader classLoader ) throws IOException
+ {
+ IOException[] exceptions = ClassLoaderUtil.releaseLoader( classLoader,
new Vector() );
+
+ if (exceptions.length > 0)
+ {
+ throw exceptions[0];
+ }
+ }
private void assertMavenProjects( String id, List projects )
{
@@ -191,6 +211,8 @@
private void assertMavenProject( String groupId, String artifactId, String
version, MavenProject project )
{
+ assertNotNull( "Project is null", project );
+
assertEquals( "Group id", groupId, project.getGroupId() );
assertEquals( "Artifact id", artifactId, project.getArtifactId() );
assertEquals( "Version", version, project.getVersion() );