Index: C:/workspace/jython/jython/src/org/python/core/JavaImportHelper.java
===================================================================
--- C:/workspace/jython/jython/src/org/python/core/JavaImportHelper.java (revision 3537)
+++ C:/workspace/jython/jython/src/org/python/core/JavaImportHelper.java (working copy)
@@ -190,28 +190,29 @@
* @return true
if something was really added, false
otherwise
*/
private static boolean addPackage(String packageName, boolean packageAdded) {
- boolean added = false;
- PyObject module = Py.getSystemState().modules.__finditem__(packageName.intern());
+ PyObject modules = Py.getSystemState().modules;
+ String internedPackageName = packageName.intern();
+ PyObject module = modules.__finditem__(internedPackageName);
+ // a previously failed import could have created a Py.None entry in sys.modules
if (module == null || module == Py.None) {
- PyObject modules = Py.getSystemState().modules;
- int dotPos;
+ int dotPos = 0;
do {
- String internedPackageName = packageName.intern();
- if (modules.__finditem__(internedPackageName) == Py.None) {
- // a previously failed import could have created a Py.None entry in sys.modules
- modules.__delitem__(internedPackageName);
+ PyJavaPackage p = PySystemState.add_package(packageName);
+ if(dotPos == 0) {
+ modules.__setitem__(internedPackageName, p);
+ } else {
+ module = modules.__finditem__(internedPackageName);
+ if (module == null || module == Py.None) {
+ modules.__setitem__(internedPackageName, p);
+ }
}
- PyJavaPackage p = PySystemState.add_package(packageName);
- Py.getSystemState().modules.__setitem__(internedPackageName, p);
- added = true;
dotPos = packageName.lastIndexOf(DOT);
if (dotPos > 0) {
packageName = packageName.substring(0, dotPos);
+ internedPackageName = packageName.intern();
}
- } while (dotPos > 0);
- }
- // make sure not to turn off the packageAdded flag
- if (added && !packageAdded) {
+ } while(dotPos > 0);
+ // make sure not to turn off the packageAdded flag
packageAdded = true;
}
return packageAdded;