// Copyright 2000 Samuele Pedroni
package jxxload_help;
import org.python.core.PyJavaClass;
public class DiscardHelp extends Object {
private DiscardHelp() {
}
private static boolean check(Class c,ClassLoader loader,java.util.Vector interfaces) {
try {
Class s = c;
do {
if (s.getClassLoader() == loader) return true;
s = s.getSuperclass();
} while (s != null);
for(java.util.Enumeration enumm=interfaces.elements(); enumm.hasMoreElements();) {
Class intf = (Class)enumm.nextElement();
if (intf.isAssignableFrom(c)) return true;
}
} catch(SecurityException e) {
}
return false;
}
// clearly not thread safe
public static void discard(ClassLoader loader,java.util.Vector interfaces) {
org.python.core.InternalTables tbl = PyJavaClass.getInternalTables();
tbl._beginCanonical();
PyJavaClass jc;
while ((jc = (PyJavaClass)tbl._next()) != null ) {
Class c = (Class)jc.__tojava__(Class.class);
if(check(c,loader,interfaces)) tbl._flushCurrent();
}
tbl._beginOverAdapterClasses();
Class c;
while ((c = (Class)tbl._next()) != null) {
if(interfaces.contains(c)) tbl._flushCurrent();
}
tbl._beginOverAdapters();
while ((c = (Class)tbl._next()) != null) {
if(interfaces.contains(c)) tbl._flushCurrent();
}
}
}