1 3 package jxxload_help; 4 5 public class PackageManager extends org.python.core.PathPackageManager { 6 7 private JavaLoaderFactory factory; 8 private ClassLoader loader; 9 10 public synchronized ClassLoader getLoader() { 11 if (loader == null) loader = factory.makeLoader(); 12 return loader; 13 } 14 15 public synchronized ClassLoader checkLoader() { 16 return loader; 17 } 18 19 public synchronized void resetLoader() { 20 loader = null; 21 } 22 23 public PackageManager(org.python.core.PyList path,JavaLoaderFactory factory) { 25 this.factory = factory; 26 27 for (int i = 0; i < path.__len__(); i++) { 28 String entry = path.__finditem__(i).toString(); 29 if (entry.endsWith(".jar") || entry.endsWith(".zip")) { 30 addJarToPackages(new java.io.File (entry),false); 31 } else { 32 java.io.File dir = new java.io.File (entry); 33 if (entry.length() == 0 || dir.isDirectory()) addDirectory(dir); 34 } 35 } 36 } 37 38 public Class findClass(String pkg,String name,String reason) { 39 if (pkg != null && pkg.length()>0) name = pkg + '.' + name; 40 try { 41 return getLoader().loadClass(name); 42 } 43 catch(ClassNotFoundException e) { 44 return null; 45 } 46 catch (LinkageError e) { 47 throw org.python.core.Py.JavaError(e); 48 } 49 } 50 51 public void addJarDir(String jdir, boolean cache) { 52 throw new RuntimeException ("addJarDir not supported for reloadable packages"); 53 } 54 55 public void addJar(String jdir, boolean cache) { 56 throw new RuntimeException ("addDir not supported for reloadable packages"); 57 } 58 } 59 | Popular Tags |