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() );


Reply via email to