1
14
15 package com.liferay.portal.kernel.bean;
16
17 import java.lang.Object;
18 import java.lang.reflect.InvocationHandler;
19 import java.lang.reflect.InvocationTargetException;
20 import java.lang.reflect.Method;
21
22
27 public class ClassLoaderBeanHandler implements InvocationHandler {
28
29 public ClassLoaderBeanHandler(Object bean, ClassLoader classLoader) {
30 _bean = bean;
31 _classLoader = classLoader;
32 }
33
34 public Object getBean() {
35 return _bean;
36 }
37
38 public ClassLoader getClassLoader() {
39 return _classLoader;
40 }
41
42 public Object invoke(Object proxy, Method method, Object[] args)
43 throws Throwable {
44
45 Thread currentThread = Thread.currentThread();
46
47 ClassLoader contextClassLoader = currentThread.getContextClassLoader();
48
49 try {
50 if ((_classLoader != null) &&
51 (contextClassLoader != _classLoader)) {
52
53 currentThread.setContextClassLoader(_classLoader);
54 }
55
56 return method.invoke(_bean, args);
57 }
58 catch (InvocationTargetException ite) {
59 throw ite.getTargetException();
60 }
61 finally {
62 if ((_classLoader != null) &&
63 (contextClassLoader != _classLoader)) {
64
65 currentThread.setContextClassLoader(contextClassLoader);
66 }
67 }
68 }
69
70 private Object _bean;
71 private ClassLoader _classLoader;
72
73 }