001
014
015 package com.liferay.portal.kernel.util;
016
017
021 public class ClassLoaderUtil {
022
023 public static ClassLoader getAggregatePluginsClassLoader(
024 String[] servletContextNames, boolean addContextClassLoader) {
025
026 return _pacl.getAggregatePluginsClassLoader(
027 servletContextNames, addContextClassLoader);
028 }
029
030 public static ClassLoader getClassLoader(Class<?> clazz) {
031 return _pacl.getClassLoader(clazz);
032 }
033
034 public static ClassLoader getContextClassLoader() {
035 return _pacl.getContextClassLoader();
036 }
037
038 public static ClassLoader getPluginClassLoader(String servletContextName) {
039 return _pacl.getPluginClassLoader(servletContextName);
040 }
041
042 public static ClassLoader getPortalClassLoader() {
043 return _pacl.getPortalClassLoader();
044 }
045
046 public static void setContextClassLoader(ClassLoader classLoader) {
047 _pacl.setContextClassLoader(classLoader);
048 }
049
050 public static class NoPACL implements PACL {
051
052 @Override
053 public ClassLoader getAggregatePluginsClassLoader(
054 String[] servletContextNames, boolean addContextClassLoader) {
055
056 ClassLoader[] classLoaders = null;
057
058 int offset = 0;
059
060 if (addContextClassLoader) {
061 classLoaders = new ClassLoader[servletContextNames.length + 1];
062
063 Thread currentThread = Thread.currentThread();
064
065 classLoaders[0] = currentThread.getContextClassLoader();
066
067 offset = 1;
068 }
069 else {
070 classLoaders = new ClassLoader[servletContextNames.length];
071 }
072
073 for (int i = 0; i < servletContextNames.length; i++) {
074 classLoaders[offset + i] = ClassLoaderPool.getClassLoader(
075 servletContextNames[i]);
076 }
077
078 return AggregateClassLoader.getAggregateClassLoader(classLoaders);
079 }
080
081 @Override
082 public ClassLoader getClassLoader(Class<?> clazz) {
083 return clazz.getClassLoader();
084 }
085
086 @Override
087 public ClassLoader getContextClassLoader() {
088 Thread currentThread = Thread.currentThread();
089
090 return currentThread.getContextClassLoader();
091 }
092
093 @Override
094 public ClassLoader getPluginClassLoader(String servletContextName) {
095 return ClassLoaderPool.getClassLoader(servletContextName);
096 }
097
098 @Override
099 public ClassLoader getPortalClassLoader() {
100 return PortalClassLoaderUtil.getClassLoader();
101 }
102
103 @Override
104 public void setContextClassLoader(ClassLoader classLoader) {
105 Thread thread = Thread.currentThread();
106
107 thread.setContextClassLoader(classLoader);
108 }
109
110 }
111
112 public interface PACL {
113
114 public ClassLoader getAggregatePluginsClassLoader(
115 String[] servletContextNames, boolean addContextClassLoader);
116
117 public ClassLoader getClassLoader(Class<?> clazz);
118
119 public ClassLoader getContextClassLoader();
120
121 public ClassLoader getPluginClassLoader(String servletContextName);
122
123 public ClassLoader getPortalClassLoader();
124
125 public void setContextClassLoader(ClassLoader classLoader);
126
127 }
128
129 private static final PACL _pacl = new NoPACL();
130
131 }