|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjava.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.argouml.uml.reveng.ImportClassLoader
Class to help users reverse engineer class information from arbitrary .jar/.class file resources, like an import classpath.
can be used as follows:
try{
ImportClassLoader loader = ImportClassLoader.getInstance();
// add paths...
loader.addFile(new File("/opt/lib/myjar.jar"));
Class clazz = loader.loadClass("org.xyz.MyException");
Object ex = clazz.newInstance();
cat.info("loaded class ok");
}catch(Exception e){cat.warn("error loading class: "+e.toString());}
It supports adding and removing Files from the import classpath. And saving and loading the path to/from the users properties file.
It should be possible to make this the system class loader, but I haven't got this to work yet:
final URLClassLoader urlClassLoader = new URLClassLoader(urls, cl);
//create a new custom class with the default classloader as its parent
try {
EventQueue eq = Toolkit.getDefaultToolkit().getSystemEventQueue();
eq.invokeAndWait(new Runnable() {
public void run() {
Thread.currentThread().setContextClassLoader(urlClassLoader);
//this will replace the default system class loader with the new custom
//classloader, so that the jvm will use the new custom classloader to
// lookup a class
}
});
//...
Nested Class Summary |
Nested classes inherited from class java.lang.ClassLoader |
|
Field Summary | |
private static ImportClassLoader |
instance
|
private static Logger |
LOG
logger |
Fields inherited from class java.net.URLClassLoader |
|
Fields inherited from class java.security.SecureClassLoader |
|
Fields inherited from class java.lang.ClassLoader |
|
Constructor Summary | |
private |
ImportClassLoader(URL[] urls)
|
Method Summary | |
void |
addFile(File f)
|
static ImportClassLoader |
getInstance()
Try and return the existing instance if one exists. |
static ImportClassLoader |
getInstance(URL[] urls)
There is no default constructor for URLClassloader, so we should provide urls when creating the instance. |
static URL[] |
getURLs(String path)
Add the files for which the paths are given, and return in URL format. |
void |
loadUserPath()
Get the user-configured path. |
void |
removeFile(File f)
Remove the given file. |
void |
saveUserPath()
Store the user-configured path. |
void |
setPath(Object[] paths)
|
void |
setPath(String path)
Add the file for which a path is given. |
String |
toString()
|
Methods inherited from class java.net.URLClassLoader |
addURL, definePackage, findClass, findResource, findResources, getPermissions, getURLs, newInstance, newInstance |
Methods inherited from class java.security.SecureClassLoader |
defineClass |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
private static final Logger LOG
private static ImportClassLoader instance
Constructor Detail |
private ImportClassLoader(URL[] urls)
Method Detail |
public static ImportClassLoader getInstance() throws MalformedURLException
MalformedURLException
- when the url is badpublic static ImportClassLoader getInstance(URL[] urls) throws MalformedURLException
urls
- the URLs
MalformedURLException
- when the URL is badpublic void addFile(File f) throws MalformedURLException
f
- the file to be added
MalformedURLException
- when the URL is badpublic void removeFile(File f)
f
- the file to be removedpublic void setPath(String path)
path
- the path in String formatpublic static URL[] getURLs(String path)
path
- the paths in String format
public void setPath(Object[] paths)
paths
- the paths to the files to be addedpublic void loadUserPath()
public void saveUserPath()
public String toString()
Object.toString()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
ArgoUML © 1996-2004 (20050222) | ArgoUML Homepage | ArgoUML Developers' page | ArgoUML Cookbook |