Package jxxload_help

Source Code of jxxload_help.DiscardHelp

// 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();
    }
   
  }

}
TOP

Related Classes of jxxload_help.DiscardHelp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.