1 package org.sapia.clazzy; 2 3 import java.security.SecureClassLoader ; 4 5 29 public class BaseClassLoader extends SecureClassLoader { 30 31 private boolean _parentFirst = true; 32 33 public BaseClassLoader() { 34 super(Thread.currentThread().getContextClassLoader()); 35 } 36 37 public BaseClassLoader(ClassLoader parent) { 38 super(parent); 39 } 40 41 48 public void setParentFirst(boolean parentFirst) { 49 _parentFirst = parentFirst; 50 } 51 52 55 public synchronized Class loadClass(String name, boolean resolve) 56 throws ClassNotFoundException { 57 Class clazz = findLoadedClass(name); 58 if(clazz == null) { 59 if(_parentFirst) { 60 clazz = loadClassFromParent(name); 61 if(clazz != null) { 62 if(resolve) { 63 super.resolveClass(clazz); 64 } 65 return clazz; 66 } 67 } 68 try { 69 clazz = findClass(name); 70 } catch(ClassNotFoundException e) { 71 } 73 if(clazz == null && !_parentFirst) { 74 clazz = loadClassFromParent(name); 75 if(clazz != null) { 76 if(resolve) { 77 super.resolveClass(clazz); 78 } 79 return clazz; 80 } 81 } 82 } 83 if(clazz == null) { 84 throw new ClassNotFoundException (name); 85 } 86 if(resolve) { 87 super.resolveClass(clazz); 88 } 89 return clazz; 90 } 91 92 private Class loadClassFromParent(String name) { 93 ClassLoader parent = getParent(); 94 if(parent != null) { 95 try { 96 return parent.loadClass(name); 97 } catch(ClassNotFoundException e) { 98 return null; 99 } 100 } 101 return null; 102 } 103 } 104 | Popular Tags |