1 package org.columba.core.plugin; 17 18 import java.lang.reflect.Constructor ; 19 import java.net.URL ; 20 import java.net.URLClassLoader ; 21 import java.net.URLStreamHandlerFactory ; 22 import java.util.logging.Logger ; 23 24 34 public class ExternalClassLoader extends URLClassLoader { 35 36 private static final Logger LOG = Logger 37 .getLogger("org.columba.core.loader"); 38 39 45 public ExternalClassLoader(URL [] urls, ClassLoader parent) { 46 super(urls, parent); 47 } 48 49 54 public ExternalClassLoader(URL [] urls) { 55 super(urls); 56 } 57 58 65 public ExternalClassLoader(URL [] urls, ClassLoader parent, 66 URLStreamHandlerFactory factory) { 67 super(urls, parent, factory); 68 } 69 70 public void addURL(URL url) { 71 super.addURL(url); 72 } 73 74 public Class findClass(String className) throws ClassNotFoundException { 75 Class temp = super.findClass(className); 76 77 return temp; 78 } 79 80 public Object instanciate(String className) throws Exception { 81 Class actClass = findClass(className); 82 83 return actClass.newInstance(); 84 } 85 86 public Object instanciate(String className, Object [] args) throws Exception { 87 88 Class actClass = loadClass(className, false); 89 90 Constructor constructor = null; 91 92 if ((args == null) || (args.length == 0)) { 96 97 return actClass.newInstance(); 98 } 99 100 constructor = ClassLoaderHelper.findConstructor(args, actClass); 101 102 if (constructor == null) { 104 LOG.severe("Couldn't find constructor for " + className 105 + " with matching argument-list: "); 106 for (int i = 0; i < args.length; i++) { 107 LOG.severe("argument[" + i + "]=" + args[i]); 108 } 109 return null; 110 } 111 112 return constructor.newInstance(args); 113 } 114 115 118 public URL findResource(String name) { 119 120 URL url = super.findResource(name); 121 return url; 122 } 123 124 } | Popular Tags |