KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > jxxload_help > DiscardHelp


1 // Copyright 2000 Samuele Pedroni
2

3 package jxxload_help;
4
5 import org.python.core.PyJavaClass;
6
7 public class DiscardHelp extends Object JavaDoc {
8
9   private DiscardHelp() {
10   }
11
12   private static boolean check(Class JavaDoc c,ClassLoader JavaDoc loader,java.util.Vector JavaDoc interfaces) {
13     try {
14         Class JavaDoc s = c;
15         do {
16             if (s.getClassLoader() == loader) return true;
17             s = s.getSuperclass();
18         } while (s != null);
19         
20         for(java.util.Enumeration JavaDoc enumm=interfaces.elements(); enumm.hasMoreElements();) {
21             Class JavaDoc intf = (Class JavaDoc)enumm.nextElement();
22             if (intf.isAssignableFrom(c)) return true;
23         }
24         
25     } catch(SecurityException JavaDoc e) {
26     }
27     return false;
28   }
29
30   // clearly not thread safe
31
public static void discard(ClassLoader JavaDoc loader,java.util.Vector JavaDoc interfaces) {
32     
33     org.python.core.InternalTables tbl = PyJavaClass.getInternalTables();
34     
35     tbl._beginCanonical();
36     
37     PyJavaClass jc;
38     while ((jc = (PyJavaClass)tbl._next()) != null ) {
39         Class JavaDoc c = (Class JavaDoc)jc.__tojava__(Class JavaDoc.class);
40         if(check(c,loader,interfaces)) tbl._flushCurrent();
41     }
42     
43     tbl._beginOverAdapterClasses();
44     
45     Class JavaDoc c;
46     
47     while ((c = (Class JavaDoc)tbl._next()) != null) {
48         if(interfaces.contains(c)) tbl._flushCurrent();
49     }
50     
51     tbl._beginOverAdapters();
52     
53     while ((c = (Class JavaDoc)tbl._next()) != null) {
54         if(interfaces.contains(c)) tbl._flushCurrent();
55     }
56     
57   }
58
59 }
60
Popular Tags