org.picocontainer.defaults
Class CustomPermissionsURLClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by java.security.SecureClassLoader
          extended by java.net.URLClassLoader
              extended by org.picocontainer.defaults.CustomPermissionsURLClassLoader

public class CustomPermissionsURLClassLoader
extends java.net.URLClassLoader

CustomPermissionsURLClassLoader extends URLClassLoader, adding the abilty to programatically add permissions easily. To be effective for permission management, it should be run in conjunction with a policy that restricts some of the classloaders, but not all. It's not ordinarily used by PicoContainer, but is here because PicoContainer is common to most classloader trees.

Author:
Paul Hammant

Field Summary
private  java.util.Map permissionsMap
           
 
Constructor Summary
CustomPermissionsURLClassLoader(java.net.URL[] urls, java.util.Map permissionsMap, java.lang.ClassLoader parent)
           
 
Method Summary
private  java.lang.ClassNotFoundException decorateException(java.lang.String name, java.lang.ClassNotFoundException e)
           
protected  java.lang.Class findClass(java.lang.String name)
           
 java.security.PermissionCollection getPermissions(java.security.CodeSource codeSource)
           
 java.lang.Class loadClass(java.lang.String name)
           
 java.lang.String toString()
           
 
Methods inherited from class java.net.URLClassLoader
addURL, definePackage, findResource, findResources, getURLs, newInstance, newInstance
 
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, getResource, 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, wait, wait, wait
 

Field Detail

permissionsMap

private final java.util.Map permissionsMap
Constructor Detail

CustomPermissionsURLClassLoader

public CustomPermissionsURLClassLoader(java.net.URL[] urls,
                                       java.util.Map permissionsMap,
                                       java.lang.ClassLoader parent)
Method Detail

loadClass

public java.lang.Class loadClass(java.lang.String name)
                          throws java.lang.ClassNotFoundException
Overrides:
loadClass in class java.lang.ClassLoader
Throws:
java.lang.ClassNotFoundException

findClass

protected java.lang.Class findClass(java.lang.String name)
                             throws java.lang.ClassNotFoundException
Overrides:
findClass in class java.net.URLClassLoader
Throws:
java.lang.ClassNotFoundException

decorateException

private java.lang.ClassNotFoundException decorateException(java.lang.String name,
                                                           java.lang.ClassNotFoundException e)

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getPermissions

public java.security.PermissionCollection getPermissions(java.security.CodeSource codeSource)
Overrides:
getPermissions in class java.net.URLClassLoader