1 8 9 package mx4j.loading; 10 11 import java.io.IOException ; 12 import java.io.InputStream ; 13 import java.io.ObjectInputStream ; 14 import java.io.ObjectStreamClass ; 15 import java.io.StreamCorruptedException ; 16 import java.lang.reflect.Proxy ; 17 18 24 public class ClassLoaderObjectInputStream extends ObjectInputStream 25 { 26 private ClassLoader classLoader; 27 28 34 public ClassLoaderObjectInputStream(InputStream stream, ClassLoader classLoader) throws IOException , StreamCorruptedException 35 { 36 super(stream); 37 this.classLoader = classLoader; 38 } 39 40 protected Class resolveClass(ObjectStreamClass osc) throws IOException , ClassNotFoundException 41 { 42 String name = osc.getName(); 43 return loadClass(name); 44 } 45 46 protected Class resolveProxyClass(String [] interfaces) throws IOException , ClassNotFoundException 47 { 48 Class [] classes = new Class [interfaces.length]; 49 for (int i = 0; i < interfaces.length; ++i) classes[i] = loadClass(interfaces[i]); 50 51 return Proxy.getProxyClass(classLoader, classes); 52 } 53 54 private Class loadClass(String name) throws ClassNotFoundException 55 { 56 if (classLoader != null) 57 return classLoader.loadClass(name); 58 else 59 return Class.forName(name, true, null); 60 } 61 } 62 | Popular Tags |