From e487075e30c4326d3573ba898d2c52a40eb4edb8 Mon Sep 17 00:00:00 2001 From: Charlie Groves Date: Sat, 24 Jan 2009 20:11:54 +0000 Subject: [PATCH] Try the current classloader for places where the context classloader isn't set --- src/org/python/core/ClasspathPyImporter.java | 29 ++++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/org/python/core/ClasspathPyImporter.java b/src/org/python/core/ClasspathPyImporter.java index cd60ac916..b5f3d4707 100644 --- a/src/org/python/core/ClasspathPyImporter.java +++ b/src/org/python/core/ClasspathPyImporter.java @@ -83,23 +83,28 @@ public void close() { } @Override - protected String makeEntry(String fullFilename) { - if (entries.containsKey(fullFilename)) { - return fullFilename; + protected String makeEntry(String filename) { + if (entries.containsKey(filename)) { + return filename; } - InputStream is = null; - ClassLoader classLoader = Py.getSystemState().getClassLoader(); - if (classLoader != null) { - Py.writeDebug("import", "trying " + fullFilename + " in sys class loader"); - is = classLoader.getResourceAsStream(fullFilename); + InputStream is = tryClassLoader(filename, Py.getSystemState().getClassLoader(), "sys"); + if (is == null) { + is = tryClassLoader(filename, Thread.currentThread().getContextClassLoader(), "context"); } if (is == null) { - Py.writeDebug("import", "trying " + fullFilename + " in context class loader"); - is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fullFilename); + is = tryClassLoader(filename, ClasspathPyImporter.class.getClassLoader(), "current"); } if (is != null) { - entries.put(fullFilename, is); - return fullFilename; + entries.put(filename, is); + return filename; + } + return null; + } + + private InputStream tryClassLoader(String fullFilename, ClassLoader loader, String name) { + if (loader != null) { + Py.writeDebug("import", "trying " + fullFilename + " in " + name + " class loader"); + return loader.getResourceAsStream(fullFilename); } return null; }