net.datacrow.core.plugin
Class PluginClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by net.datacrow.core.plugin.PluginClassLoader

public class PluginClassLoader
extends java.lang.ClassLoader


Field Summary
protected  java.util.Map<java.lang.String,java.lang.Class<?>> cache
           
protected  java.util.Collection<java.io.File> jarFiles
           
protected  java.lang.String path
           
 
Constructor Summary
PluginClassLoader(java.lang.String path)
          Creates a new PluginClassLoader that searches in the directory path passed as a parameter.
PluginClassLoader(java.lang.String path, boolean callSuper)
          This version of the constructor is used when ImageJ is launched using Java WebStart.
 
Method Summary
 java.net.URL getResource(java.lang.String name)
           
 java.io.InputStream getResourceAsStream(java.lang.String name)
          Returns a resource from the path or JAR files as an InputStream
 java.lang.Class<?> loadClass(java.lang.String className)
          Returns a Class from the path or JAR files.
 java.lang.Class<?> loadClass(java.lang.String className, boolean resolveIt)
          Returns a Class from the path or JAR files.
protected  byte[] loadClassBytes(java.lang.String name)
          This does the actual work of loading the bytes from the disk.
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

path

protected java.lang.String path

cache

protected final java.util.Map<java.lang.String,java.lang.Class<?>> cache

jarFiles

protected final java.util.Collection<java.io.File> jarFiles
Constructor Detail

PluginClassLoader

public PluginClassLoader(java.lang.String path)
Creates a new PluginClassLoader that searches in the directory path passed as a parameter. The constructor automatically finds all JAR and ZIP files in the path and first level of subdirectories. The JAR and ZIP files are stored in a Vector for future searches.

Parameters:
path - the path to the plugins directory.

PluginClassLoader

public PluginClassLoader(java.lang.String path,
                         boolean callSuper)
This version of the constructor is used when ImageJ is launched using Java WebStart.

Method Detail

getResource

public java.net.URL getResource(java.lang.String name)
Overrides:
getResource in class java.lang.ClassLoader

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String name)
Returns a resource from the path or JAR files as an InputStream

Overrides:
getResourceAsStream in class java.lang.ClassLoader
Parameters:
name - a resource name.

loadClass

public java.lang.Class<?> loadClass(java.lang.String className)
                             throws java.lang.ClassNotFoundException
Returns a Class from the path or JAR files. Classes are automatically resolved.

Overrides:
loadClass in class java.lang.ClassLoader
Parameters:
className - a class name without the .class extension.
Throws:
java.lang.ClassNotFoundException

loadClass

public java.lang.Class<?> loadClass(java.lang.String className,
                                    boolean resolveIt)
                             throws java.lang.ClassNotFoundException
Returns a Class from the path or JAR files. Classes are resolved if resolveIt is true.

Overrides:
loadClass in class java.lang.ClassLoader
Parameters:
className - a String class name without the .class extension. resolveIt a boolean (should almost always be true)
Throws:
java.lang.ClassNotFoundException

loadClassBytes

protected byte[] loadClassBytes(java.lang.String name)
This does the actual work of loading the bytes from the disk. Returns an array of bytes that will be defined as a Class. This should be overloaded to have the Class Loader look in more places.

Parameters:
name - a class name without the .class extension.