00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 package org.objectweb.proactive.core.classloader;
00032
00033 import java.net.MalformedURLException;
00034 import java.rmi.server.RMIClassLoader;
00035 import java.rmi.server.RMIClassLoaderSpi;
00036
00037
00055 public class ProActiveRMIClassLoaderSpi extends RMIClassLoaderSpi {
00056 private ClassLoader proActiveClassLoader = null;
00057 RMIClassLoaderSpi rmiClassLoaderSpi = RMIClassLoader.getDefaultProviderInstance();
00058 private boolean useProActiveClassLoader = ClassLoader.getSystemClassLoader()
00059 .toString().startsWith("org.objectweb.proactive.core.classloader.ProActiveClassLoader");
00060
00061 public ProActiveRMIClassLoaderSpi() {
00062 if (useProActiveClassLoader) {
00063
00064 proActiveClassLoader = ClassLoader.getSystemClassLoader();
00065 }
00066 }
00067
00073 public Class<?> loadClass(String codebase, String name,
00074 ClassLoader defaultLoader)
00075 throws MalformedURLException, ClassNotFoundException {
00076 return rmiClassLoaderSpi.loadClass(codebase, name,
00077 ((proActiveClassLoader != null) ? proActiveClassLoader : defaultLoader));
00078 }
00079
00085 public Class<?> loadProxyClass(String codebase, String[] interfaces,
00086 ClassLoader defaultLoader)
00087 throws MalformedURLException, ClassNotFoundException {
00088 return rmiClassLoaderSpi.loadProxyClass(codebase, interfaces,
00089 ((proActiveClassLoader != null) ? proActiveClassLoader : defaultLoader));
00090 }
00091
00092
00093
00094
00095 public ClassLoader getClassLoader(String codebase)
00096 throws MalformedURLException {
00097 if (proActiveClassLoader != null) {
00098 return proActiveClassLoader;
00099 } else {
00100 return rmiClassLoaderSpi.getClassLoader(codebase);
00101 }
00102 }
00103
00104
00105
00106
00107 public String getClassAnnotation(Class arg0) {
00108 return rmiClassLoaderSpi.getClassAnnotation(arg0);
00109 }
00110 }