summaryrefslogtreecommitdiffstats
path: root/lib/jython/Lib/jxxload_help/PackageManager.java
diff options
context:
space:
mode:
authorjhugunin <jhugunin>2003-01-03 23:19:47 +0000
committerjhugunin <jhugunin>2003-01-03 23:19:47 +0000
commit8ec8f0c0c6c68d9b13c3bc3416c3234eddd48379 (patch)
tree8a2e07ba2a0048aae570053e019e02bd093f175f /lib/jython/Lib/jxxload_help/PackageManager.java
parentf685f979a4d3eb3844f74850deece1da265bc975 (diff)
downloadaspectj-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.java58
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");
+ }
+}