net.datacrow.core.services.plugin
Class ServiceClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by net.datacrow.core.services.plugin.ServiceClassLoader

public class ServiceClassLoader
extends java.lang.ClassLoader

The class loader used to find custom and standard online services.

Author:
Robert Jan van der Waals

Field Summary
protected  java.util.Map<java.lang.String,java.lang.Class<?>> cache
           
protected  java.util.Collection<java.io.File> jarFiles
           
 
Constructor Summary
ServiceClassLoader(java.lang.String path)
          Creates a new PluginClassLoader that searches in the directory path passed as a parameter.
ServiceClassLoader(java.lang.String path, boolean callSuper)
          This version of the constructor is used when ImageJ is launched using Java WebStart.
 
Method Summary
 java.util.Collection<java.lang.Class<?>> getClasses()
           
 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)
           
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, 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

jarFiles

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

cache

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

ServiceClassLoader

public ServiceClassLoader(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 sub directories. The JAR and ZIP files are stored in a Vector for future searches.

Parameters:
path - the path to the services directory.

ServiceClassLoader

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

Method Detail

getClasses

public java.util.Collection<java.lang.Class<?>> getClasses()

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)