1 package org.codehaus.classworlds;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 import junit.framework.TestCase;
50
51 import java.io.File;
52 import java.net.URL;
53
54 public class DefaultClassRealmTest
55 extends TestCase
56 {
57 public DefaultClassRealmTest( String name )
58 {
59 super( name );
60 }
61
62
63
64
65
66 public void testLoadClassFromRealm()
67 throws Exception
68 {
69 DefaultClassRealm mainRealm = new DefaultClassRealm( new ClassWorld(), "main" );
70
71 mainRealm.addConstituent( getJarUrl( "component0-1.0.jar" ) );
72
73 mainRealm.loadClass( "org.codehaus.plexus.Component0" );
74 }
75
76 public void testLoadClassFromChildRealmWhereClassIsLocatedInParentRealm()
77 throws Exception
78 {
79 DefaultClassRealm mainRealm = new DefaultClassRealm( new ClassWorld(), "main" );
80
81 mainRealm.addConstituent( getJarUrl( "component0-1.0.jar" ) );
82
83 ClassRealm childRealm = mainRealm.createChildRealm( "child" );
84
85 childRealm.loadClass( "org.codehaus.plexus.Component0" );
86 }
87
88 public void testLoadClassFromChildRealmWhereClassIsLocatedInGrantParentRealm()
89 throws Exception
90 {
91 DefaultClassRealm mainRealm = new DefaultClassRealm( new ClassWorld(), "main" );
92
93 mainRealm.addConstituent( getJarUrl( "component0-1.0.jar" ) );
94
95 ClassRealm childRealm = mainRealm.createChildRealm( "child" );
96
97 ClassRealm grandchildRealm = childRealm.createChildRealm( "grandchild" );
98
99 grandchildRealm.loadClass( "org.codehaus.plexus.Component0" );
100 }
101
102 public void testLoadNonExistentClass()
103 throws Exception
104 {
105 DefaultClassRealm mainRealm = new DefaultClassRealm( new ClassWorld(), "main" );
106
107 mainRealm.addConstituent( getJarUrl( "component0-1.0.jar" ) );
108
109 try
110 {
111 mainRealm.loadClass( "org.foo.bar.NonExistentClass" );
112
113 fail( "A ClassNotFoundException should have been thrown!" );
114 }
115 catch ( ClassNotFoundException e )
116 {
117 }
118 }
119
120 public void testImport()
121 throws Exception
122 {
123 ClassWorld world = new ClassWorld();
124
125 ClassRealm r0 = world.newRealm( "r0" );
126
127 ClassRealm r1 = world.newRealm( "r1" );
128
129 r0.addConstituent( getJarUrl( "component0-1.0.jar" ) );
130
131 r1.importFrom( "r0", "org.codehaus.plexus" );
132
133 r1.loadClass( "org.codehaus.plexus.Component0" );
134 }
135
136
137
138
139
140 public void testResource()
141 throws Exception
142 {
143 DefaultClassRealm mainRealm = new DefaultClassRealm( new ClassWorld(), "main" );
144
145 mainRealm.addConstituent( getJarUrl( "component0-1.0.jar" ) );
146
147 URL resource = mainRealm.getResource( "META-INF/plexus/components.xml" );
148
149 assertNotNull( resource );
150 }
151
152
153
154
155
156 protected URL getJarUrl( String jarName )
157 throws Exception
158 {
159 File jarFile = new File( System.getProperty( "basedir" ), "src/test-jars/" + jarName );
160
161 return jarFile.toURL();
162 }
163 }