/* * Created on 07-Feb-2004 * Author is Michael Camacho */ package pipe.gui; import java.io.File; import java.io.IOException; import java.net.*; import java.util.logging.Level; import java.util.logging.Logger; final class ExtFileManager { private static URLClassLoader cLoader = null; private static final Logger LOGGER = Logger.getLogger(ExtFileManager.class.getName()); private ExtFileManager() { } public static Class<?> loadExtClass(String className) { Class<?> c = null; try { c = cLoader.loadClass(className); } catch (ClassNotFoundException e) { LOGGER.log(Level.SEVERE, e.getMessage()); } return c; } public static Class<?> loadExtClass(File classFile) { Class<?> myClass = null; File path = classFile.getParentFile(); String name = classFile.getName(); addSearchPath(path); if (name.endsWith(".class")) { name = name.substring(0, name.length() - 6); try { myClass = cLoader.loadClass(name); } catch (ClassNotFoundException e) { LOGGER.log(Level.SEVERE, e.getMessage()); } } return myClass; } public static void addSearchPath(File p) { if (p.exists() && p.isDirectory()) { try { URL pathURL = p.getCanonicalFile().toURI().toURL(); addSearchPath(pathURL); } catch (IOException e) { LOGGER.log(Level.SEVERE, "Failed to add path: URI.toURL generated an error." + e.getMessage()); } } } public static void addSearchPath(URL url) { if (cLoader == null) { cLoader = new URLClassLoader(new URL[]{url}, Thread.currentThread().getContextClassLoader()); } else { cLoader = new URLClassLoader(new URL[]{url}, cLoader); } } public static File getClassRoot(Class someClass) { File dataDir; URL url = Thread.currentThread().getContextClassLoader().getResource("images"); try { URI sourceURI = new URI(url.toString()); dataDir = new File(sourceURI).getParentFile(); } catch (URISyntaxException e) { return null; } catch (IllegalArgumentException e) { return null; } if (!dataDir.isDirectory()) { dataDir = dataDir.getParentFile(); } return dataDir; } }