KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > loom > classman > runtime > test > JoinClassLoaderTestCase


1 /*
2  * Copyright (C) The Spice Group. All rights reserved.
3  *
4  * This software is published under the terms of the Spice
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.loom.classman.runtime.test;
9
10 import java.io.File JavaDoc;
11 import java.net.MalformedURLException JavaDoc;
12 import java.net.URL JavaDoc;
13 import java.net.URLClassLoader JavaDoc;
14 import java.util.Enumeration JavaDoc;
15
16 import org.codehaus.loom.classman.runtime.JoinClassLoader;
17 import org.codehaus.loom.classman.test.AbstractLoaderTestCase;
18 import org.codehaus.loom.classman.test.DataConstants;
19
20 /**
21  * Unit test for join classloader.
22  *
23  * @author Peter Donald
24  * @version $Revision: 1.1 $ $Date: 2004/04/19 22:19:26 $
25  */

26 public class JoinClassLoaderTestCase
27     extends AbstractLoaderTestCase
28 {
29     public void testJoinClassLoader()
30         throws Exception JavaDoc
31     {
32         if( System.getProperty( "gump", "false" ).equals( "true" ) )
33         {
34             //Can't test the rest of this as it requires
35
//explicit classloader setup that gump ignores.
36
return;
37         }
38
39         final URLClassLoader JavaDoc cl1 = createClassLoader( "cl1.jar" );
40         final URLClassLoader JavaDoc cl2 = createClassLoader( "cl2.jar" );
41         final ClassLoader JavaDoc[] cls = new ClassLoader JavaDoc[]{cl1, cl2};
42         final JoinClassLoader join =
43             new JoinClassLoader( cls, ClassLoader.getSystemClassLoader() );
44         try
45         {
46             join.loadClass( DataConstants.DATA1_CLASS );
47         }
48         catch( ClassNotFoundException JavaDoc e )
49         {
50             fail( "Unable to load Data1 from cl1 classloader" );
51         }
52         try
53         {
54             join.loadClass( DataConstants.DATA2_CLASS );
55         }
56         catch( ClassNotFoundException JavaDoc e )
57         {
58             fail( "Unable to load CL2Data from cl2 classloader" );
59         }
60         try
61         {
62             join.loadClass( "i.no.exist" );
63             fail( "Expected that would be unable to load non-existent class" );
64         }
65         catch( ClassNotFoundException JavaDoc e )
66         {
67         }
68
69         try
70         {
71             assertEquals( "Loading from system classloader",
72                           Integer JavaDoc.class,
73                           join.loadClass( Integer JavaDoc.class.getName() ) );
74         }
75         catch( ClassNotFoundException JavaDoc e )
76         {
77             fail( "Unable to load Integer from classloader" );
78         }
79
80         final URL JavaDoc url1 = join.getResource( DataConstants.DATA1_RESOURCE );
81         assertNotNull( "Loading " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
82                        url1 );
83         final URL JavaDoc url2 = join.getResource( "noexist.txt" );
84         assertNull( "Loading noexist.txt from c1 classloader", url2 );
85
86         final Enumeration JavaDoc resources1 = join.getResources( DataConstants.DATA1_RESOURCE );
87         assertNotNull( "Loading set of " + DataConstants.DATA1_RESOURCE + " from c1 classloader",
88                        resources1 );
89         assertTrue( "Count of resource from classloader", resources1.hasMoreElements() );
90         assertEquals( "Resource found from classloader", url1, resources1.nextElement() );
91
92         assertTrue( "Second Count of resource from classloader", !resources1.hasMoreElements() );
93
94         final Enumeration JavaDoc resources2 = join.getResources( "noexist.txt" );
95         assertNotNull( "Loading set of noexist.txt from c1 classloader", resources2 );
96         assertTrue( "Count of noexist.txt from classloader", !resources2.hasMoreElements() );
97
98         try
99         {
100             ClassLoader.getSystemClassLoader().loadClass( DataConstants.DATA1_CLASS );
101         }
102         catch( ClassNotFoundException JavaDoc e )
103         {
104             return;
105         }
106         fail( "Able to load Data1 from system classloader" );
107     }
108
109     public void testCtorNullsInClassLoaderSet()
110         throws Exception JavaDoc
111     {
112         try
113         {
114             new JoinClassLoader( null,
115                                  ClassLoader.getSystemClassLoader() );
116             fail( "Expected a NPE" );
117         }
118         catch( NullPointerException JavaDoc e )
119         {
120             assertEquals( "NPE type", "classLoaders", e.getMessage() );
121         }
122         try
123         {
124             new JoinClassLoader( new ClassLoader JavaDoc[]{null},
125                                  ClassLoader.getSystemClassLoader() );
126             fail( "Expected a NPE" );
127         }
128         catch( NullPointerException JavaDoc e )
129         {
130             assertEquals( "NPE type", "classLoaders[0]", e.getMessage() );
131         }
132     }
133
134     private URLClassLoader JavaDoc createClassLoader( final String JavaDoc filename ) throws MalformedURLException JavaDoc
135     {
136         final File JavaDoc baseDirectory = getBaseDirectory();
137         final File JavaDoc file = new File JavaDoc( baseDirectory, filename );
138         final URL JavaDoc url = file.toURL();
139         final URL JavaDoc[] urls = new URL JavaDoc[]{url};
140         return new URLClassLoader JavaDoc( urls, ClassLoader.getSystemClassLoader() );
141     }
142 }
143
Popular Tags