package jmsltestsuite; import java.io.IOException; import java.util.Enumeration; import java.util.Vector; import com.softsynth.jmsl.util.JMSLClassLoader; import com.softsynth.jmsl.util.classbrowser.ClassBrowser; import com.softsynth.jmsl.util.classbrowser.ClassListener; /** * Look for instances of com.softsynth.jsyn.SynthNote in classpath * * @author Nick Didkovsky 4/17/02 11:56PM */ public class TestClassBrowser implements ClassListener { // ClassLoader classLoader; Class superClassToFind; Vector foundClasses; public TestClassBrowser() throws ClassNotFoundException { // classLoader = this.getClass().getClassLoader(); // superClassToFind = Class.forName("com.softsynth.jsyn.SynthNote", // false, classLoader); superClassToFind = JMSLClassLoader.load("com.softsynth.jsyn.SynthNote"); foundClasses = new Vector(); } public void handleClass(String fullyQualifiedClassName) { // System.out.println(fullyQualifiedClassName); try { // Class c = Class.forName(fullyQualifiedClassName, false, // classLoader); Class c = JMSLClassLoader.load(fullyQualifiedClassName); if (superClassToFind.isAssignableFrom(c)) { foundClasses.addElement(fullyQualifiedClassName); } } catch (ClassNotFoundException e) { } catch (NoClassDefFoundError e) { } catch (ClassFormatError e) { } } public Enumeration foundClasses() { return foundClasses.elements(); } public static void main(String args[]) { try { System.out.println("Wait ... examining all classes in classpath, including jar's ..."); TestClassBrowser findSynthNotes = new TestClassBrowser(); ClassBrowser browser = new ClassBrowser(); browser.addClassListener(findSynthNotes); browser.browse(); System.out.println("\n\nFound the following SynthNotes in your classpath:"); for (Enumeration e = findSynthNotes.foundClasses(); e.hasMoreElements();) { System.out.println((String) e.nextElement()); } System.exit(0); } catch (IOException e) { e.printStackTrace(); System.out.println("ERROR " + e); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("ERROR " + e); } } }