From 8ec8f0c0c6c68d9b13c3bc3416c3234eddd48379 Mon Sep 17 00:00:00 2001 From: jhugunin Date: Fri, 3 Jan 2003 23:19:47 +0000 Subject: making jython-2.1 available for scripting --- lib/jython/Lib/jxxload_help/PackageManager.java | 58 +++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 lib/jython/Lib/jxxload_help/PackageManager.java (limited to 'lib/jython/Lib/jxxload_help/PackageManager.java') 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"); + } +} -- cgit v1.2.3