com.sshtools.j2ssh.util
Class DynamicClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by com.sshtools.j2ssh.util.DynamicClassLoader

public class DynamicClassLoader
extends java.lang.ClassLoader

Version:
$Revision: 1.1 $
Author:
$author$

Nested Class Summary
private static class DynamicClassLoader.ClassCacheEntry
           
 
Field Summary
private  java.util.Hashtable cache
           
private  java.util.List classpath
           
private  int generation
           
private static int generationCounter
           
private static org.apache.commons.logging.Log log
           
private  java.lang.ClassLoader parent
           
 
Constructor Summary
DynamicClassLoader(java.lang.ClassLoader parent, java.util.List classpath)
          Creates a new DynamicClassLoader object.
 
Method Summary
 java.net.URL getResource(java.lang.String name)
           
 java.io.InputStream getResourceAsStream(java.lang.String name)
           
private  boolean isJarArchive(java.io.File file)
           
private  byte[] loadBytesFromStream(java.io.InputStream in, int length)
           
protected  java.lang.Class loadClass(java.lang.String name, boolean resolve)
           
private  byte[] loadClassFromDirectory(java.io.File dir, java.lang.String name, DynamicClassLoader.ClassCacheEntry cache)
           
private  byte[] loadClassFromZipfile(java.io.File file, java.lang.String name, DynamicClassLoader.ClassCacheEntry cache)
           
private  java.io.InputStream loadResourceFromDirectory(java.io.File dir, java.lang.String name)
           
private  java.io.InputStream loadResourceFromZipfile(java.io.File file, java.lang.String name)
           
private  java.lang.Class loadSystemClass(java.lang.String name, boolean resolve)
           
 DynamicClassLoader reinstantiate()
           
private  boolean securityAllowsClass(java.lang.String className)
           
 boolean shouldReload()
           
 boolean shouldReload(java.lang.String classname)
           
 
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, loadClass, 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

log

private static org.apache.commons.logging.Log log

generationCounter

private static int generationCounter

cache

private java.util.Hashtable cache

classpath

private java.util.List classpath

generation

private int generation

parent

private java.lang.ClassLoader parent
Constructor Detail

DynamicClassLoader

public DynamicClassLoader(java.lang.ClassLoader parent,
                          java.util.List classpath)
                   throws java.lang.IllegalArgumentException
Creates a new DynamicClassLoader object.

Parameters:
parent -
classpath -
Throws:
java.lang.IllegalArgumentException
Method Detail

getResource

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

getResourceAsStream

public java.io.InputStream getResourceAsStream(java.lang.String name)
Overrides:
getResourceAsStream in class java.lang.ClassLoader
Parameters:
name -
Returns:

reinstantiate

public DynamicClassLoader reinstantiate()
Returns:

shouldReload

public boolean shouldReload(java.lang.String classname)
Parameters:
classname -
Returns:

shouldReload

public boolean shouldReload()
Returns:

loadClass

protected java.lang.Class loadClass(java.lang.String name,
                                    boolean resolve)
                             throws java.lang.ClassNotFoundException
Overrides:
loadClass in class java.lang.ClassLoader
Parameters:
name -
resolve -
Returns:
Throws:
java.lang.ClassNotFoundException

isJarArchive

private boolean isJarArchive(java.io.File file)

loadBytesFromStream

private byte[] loadBytesFromStream(java.io.InputStream in,
                                   int length)
                            throws java.io.IOException
Throws:
java.io.IOException

loadClassFromDirectory

private byte[] loadClassFromDirectory(java.io.File dir,
                                      java.lang.String name,
                                      DynamicClassLoader.ClassCacheEntry cache)
                               throws java.io.IOException
Throws:
java.io.IOException

loadClassFromZipfile

private byte[] loadClassFromZipfile(java.io.File file,
                                    java.lang.String name,
                                    DynamicClassLoader.ClassCacheEntry cache)
                             throws java.io.IOException
Throws:
java.io.IOException

loadResourceFromDirectory

private java.io.InputStream loadResourceFromDirectory(java.io.File dir,
                                                      java.lang.String name)

loadResourceFromZipfile

private java.io.InputStream loadResourceFromZipfile(java.io.File file,
                                                    java.lang.String name)

loadSystemClass

private java.lang.Class loadSystemClass(java.lang.String name,
                                        boolean resolve)
                                 throws java.lang.NoClassDefFoundError,
                                        java.lang.ClassNotFoundException
Throws:
java.lang.NoClassDefFoundError
java.lang.ClassNotFoundException

securityAllowsClass

private boolean securityAllowsClass(java.lang.String className)