diff options
author | jhugunin <jhugunin> | 2003-01-03 23:19:47 +0000 |
---|---|---|
committer | jhugunin <jhugunin> | 2003-01-03 23:19:47 +0000 |
commit | 8ec8f0c0c6c68d9b13c3bc3416c3234eddd48379 (patch) | |
tree | 8a2e07ba2a0048aae570053e019e02bd093f175f /lib/jython/Lib/jxxload_help/PackageManager.java | |
parent | f685f979a4d3eb3844f74850deece1da265bc975 (diff) | |
download | aspectj-8ec8f0c0c6c68d9b13c3bc3416c3234eddd48379.tar.gz aspectj-8ec8f0c0c6c68d9b13c3bc3416c3234eddd48379.zip |
making jython-2.1 available for scripting
Diffstat (limited to 'lib/jython/Lib/jxxload_help/PackageManager.java')
-rw-r--r-- | lib/jython/Lib/jxxload_help/PackageManager.java | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/lib/jython/Lib/jxxload_help/PackageManager.java b/lib/jython/Lib/jxxload_help/PackageManager.java new file mode 100644 index 000000000..18775debf --- /dev/null +++ b/lib/jython/Lib/jxxload_help/PackageManager.java @@ -0,0 +1,58 @@ +// Copyright 2000 Samuele Pedroni + +package jxxload_help; + +public class PackageManager extends org.python.core.PathPackageManager { + + private JavaLoaderFactory factory; + private ClassLoader loader; + + public synchronized ClassLoader getLoader() { + if (loader == null) loader = factory.makeLoader(); + return loader; + } + + public synchronized ClassLoader checkLoader() { + return loader; + } + + public synchronized void resetLoader() { + loader = null; + } + + // ??pending add cache support? + public PackageManager(org.python.core.PyList path,JavaLoaderFactory factory) { + this.factory = factory; + + for (int i = 0; i < path.__len__(); i++) { + String entry = path.__finditem__(i).toString(); + if (entry.endsWith(".jar") || entry.endsWith(".zip")) { + addJarToPackages(new java.io.File(entry),false); + } else { + java.io.File dir = new java.io.File(entry); + if (entry.length() == 0 || dir.isDirectory()) addDirectory(dir); + } + } + } + + public Class findClass(String pkg,String name,String reason) { + if (pkg != null && pkg.length()>0) name = pkg + '.' + name; + try { + return getLoader().loadClass(name); + } + catch(ClassNotFoundException e) { + return null; + } + catch (LinkageError e) { + throw org.python.core.Py.JavaError(e); + } + } + + public void addJarDir(String jdir, boolean cache) { + throw new RuntimeException("addJarDir not supported for reloadable packages"); + } + + public void addJar(String jdir, boolean cache) { + throw new RuntimeException("addDir not supported for reloadable packages"); + } +} |