org.apache.cocoon.servlet
Class ParanoidClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by java.security.SecureClassLoader
          extended by java.net.URLClassLoader
              extended by org.apache.cocoon.servlet.ParanoidClassLoader

public class ParanoidClassLoader
extends URLClassLoader

The ParanoidClassLoader reverses the search order for classes. It checks this classloader before it checks its parent.

Version:
CVS $Id: ParanoidClassLoader.java 30932 2004-07-29 17:35:38Z vgritsenko $
Author:
Berin Loritsch , Sylvain Wallez

Constructor Summary
ParanoidClassLoader()
          Default constructor has no parents or initial URLs.
ParanoidClassLoader(ClassLoader parent)
          Alternate constructor to define a parent.
ParanoidClassLoader(URL[] urls)
          Alternate constructor to define initial URLs.
ParanoidClassLoader(URL[] urls, ClassLoader parent)
          Alternate constructor to define a parent and initial URL s.
ParanoidClassLoader(URL[] urls, ClassLoader parent, URLStreamHandlerFactory factory)
          Alternate constructor to define a parent, initial URLs, and a default URLStreamHandlerFactory.
 
Method Summary
 void addDirectory(File file)
          Adds a new directory of class files.
 void addURL(URL url)
          Adds a new URL
 URL getResource(String name)
          Gets a resource from this ClassLoader.
 Class loadClass(String name, boolean resolve)
          Loads the class from this ClassLoader.
static URLClassLoader newInstance(URL[] urls)
          Extends URLClassLoader's initialization methods so we return a ParanoidClassLoad instead.
static URLClassLoader newInstance(URL[] urls, ClassLoader parent)
          Extends URLClassLoader's initialization methods so we return a ParanoidClassLoad instead.
 
Methods inherited from class java.net.URLClassLoader
definePackage, findClass, findResource, findResources, getPermissions, getURLs
 
Methods inherited from class java.security.SecureClassLoader
defineClass, defineClass
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResourceAsStream, 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
 

Constructor Detail

ParanoidClassLoader

public ParanoidClassLoader()
Default constructor has no parents or initial URLs.


ParanoidClassLoader

public ParanoidClassLoader(ClassLoader parent)
Alternate constructor to define a parent.


ParanoidClassLoader

public ParanoidClassLoader(URL[] urls)
Alternate constructor to define initial URLs.


ParanoidClassLoader

public ParanoidClassLoader(URL[] urls,
                           ClassLoader parent)
Alternate constructor to define a parent and initial URL s.


ParanoidClassLoader

public ParanoidClassLoader(URL[] urls,
                           ClassLoader parent,
                           URLStreamHandlerFactory factory)
Alternate constructor to define a parent, initial URLs, and a default URLStreamHandlerFactory.

Method Detail

newInstance

public static final URLClassLoader newInstance(URL[] urls)
Extends URLClassLoader's initialization methods so we return a ParanoidClassLoad instead.


newInstance

public static final URLClassLoader newInstance(URL[] urls,
                                               ClassLoader parent)
Extends URLClassLoader's initialization methods so we return a ParanoidClassLoad instead.


loadClass

public final Class loadClass(String name,
                             boolean resolve)
                      throws ClassNotFoundException
Loads the class from this ClassLoader. If the class does not exist in this one, we check the parent. Please note that this is the exact opposite of the ClassLoader spec. We use it to work around inconsistent class loaders from third party vendors.

Overrides:
loadClass in class ClassLoader
Parameters:
name - the name of the class
resolve - if true then resolve the class
Returns:
the resulting Class object
Throws:
ClassNotFoundException - if the class could not be found

getResource

public final URL getResource(String name)
Gets a resource from this ClassLoader. If the resource does not exist in this one, we check the parent. Please note that this is the exact opposite of the ClassLoader spec. We use it to work around inconsistent class loaders from third party vendors.

Overrides:
getResource in class ClassLoader
Parameters:
name - of resource

addDirectory

public final void addDirectory(File file)
                        throws IOException
Adds a new directory of class files.

Parameters:
file - for jar or directory
Throws:
IOException

addURL

public void addURL(URL url)
Adds a new URL

Overrides:
addURL in class URLClassLoader


Copyright © 1999-2010 The Apache Software Foundation. All Rights Reserved.