001
014
015 package com.liferay.portal.bean;
016
017 import com.liferay.portal.util.ClassLoaderUtil;
018
019 import java.lang.reflect.InvocationHandler;
020 import java.lang.reflect.InvocationTargetException;
021 import java.lang.reflect.Method;
022
023
026 public class VelocityBeanHandler implements InvocationHandler {
027
028 public VelocityBeanHandler(Object bean, ClassLoader classLoader) {
029 _bean = bean;
030 _classLoader = classLoader;
031 }
032
033 public ClassLoader getClassLoader() {
034 return _classLoader;
035 }
036
037 public Object invoke(Object proxy, Method method, Object[] arguments)
038 throws Throwable {
039
040 ClassLoader contextClassLoader =
041 ClassLoaderUtil.getContextClassLoader();
042
043 try {
044 if ((_classLoader != null) &&
045 (_classLoader != contextClassLoader)) {
046
047 ClassLoaderUtil.setContextClassLoader(_classLoader);
048 }
049
050 return method.invoke(_bean, arguments);
051 }
052 catch (InvocationTargetException ite) {
053 return null;
054 }
055 finally {
056 if ((_classLoader != null) &&
057 (_classLoader != contextClassLoader)) {
058
059 ClassLoaderUtil.setContextClassLoader(contextClassLoader);
060 }
061 }
062 }
063
064 private Object _bean;
065 private ClassLoader _classLoader;
066
067 }