1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.kuali.rice.kew.plugin;
19
20 import java.net.URL;
21 import java.net.URLClassLoader;
22
23 import junit.framework.AssertionFailedError;
24 import junit.framework.TestCase;
25
26 import org.junit.Test;
27 import org.kuali.rice.core.resourceloader.ContextClassLoaderBinder;
28
29
30
31
32
33 public class ContextClassLoaderBinderTest extends TestCase {
34
35 @Test public void testBinding() {
36 try {
37 ContextClassLoaderBinder.unbind();
38 throw new AssertionFailedError("unbind succeeded without any prior bind");
39 } catch (IllegalStateException ise) {
40
41 }
42
43 ClassLoader cl0 = new URLClassLoader(new URL[] {});
44 ClassLoader cl1 = new URLClassLoader(new URL[] {});
45 ClassLoader cl2 = new URLClassLoader(new URL[] {});
46
47 ClassLoader original = Thread.currentThread().getContextClassLoader();
48 ContextClassLoaderBinder.bind(cl0);
49 assertEquals(cl0, Thread.currentThread().getContextClassLoader());
50 ContextClassLoaderBinder.unbind();
51 assertEquals(original, Thread.currentThread().getContextClassLoader());
52
53 ContextClassLoaderBinder.bind(cl0);
54 assertEquals(cl0, Thread.currentThread().getContextClassLoader());
55 ContextClassLoaderBinder.bind(cl1);
56 assertEquals(cl1, Thread.currentThread().getContextClassLoader());
57 ContextClassLoaderBinder.unbind();
58 assertEquals(cl0, Thread.currentThread().getContextClassLoader());
59 ContextClassLoaderBinder.unbind();
60 assertEquals(original, Thread.currentThread().getContextClassLoader());
61
62 ContextClassLoaderBinder.bind(cl0);
63 assertEquals(cl0, Thread.currentThread().getContextClassLoader());
64 ContextClassLoaderBinder.bind(cl1);
65 assertEquals(cl1, Thread.currentThread().getContextClassLoader());
66 ContextClassLoaderBinder.bind(cl2);
67 assertEquals(cl2, Thread.currentThread().getContextClassLoader());
68 ContextClassLoaderBinder.unbind();
69 assertEquals(cl1, Thread.currentThread().getContextClassLoader());
70 ContextClassLoaderBinder.unbind();
71 assertEquals(cl0, Thread.currentThread().getContextClassLoader());
72 ContextClassLoaderBinder.unbind();
73 assertEquals(original, Thread.currentThread().getContextClassLoader());
74 }
75 }