The Spring Framework

org.springframework.instrument.classloading
Class ShadowingClassLoader

java.lang.Object
  extended by java.lang.ClassLoader
      extended by org.springframework.instrument.classloading.ShadowingClassLoader
Direct Known Subclasses:
ResourceOverridingShadowingClassLoader

public class ShadowingClassLoader
extends ClassLoader

ClassLoader decorator that shadows an enclosing ClassLoader, applying registered transformers to all affected classes.

Since:
2.0
Author:
Rob Harrop, Rod Johnson, Costin Leau
See Also:
addTransformer(java.lang.instrument.ClassFileTransformer), isClassNameExcludedFromShadowing(String), getOptionalExcludedPackages()

Field Summary
static String[] DEFAULT_EXCLUDED_PACKAGES
          Packages that are excluded by default
 List<String> optionalExcludedPackages
          Optional excluded packages
 
Constructor Summary
ShadowingClassLoader(ClassLoader enclosingClassLoader)
          Create a new ShadowingClassLoader, decorating the given ClassLoader.
 
Method Summary
 void addTransformer(ClassFileTransformer transformer)
          Add the given ClassFileTransformer to the list of transformers that this ClassLoader will apply.
 void copyTransformers(ShadowingClassLoader other)
          Copy all ClassFileTransformers from the given ClassLoader to the list of transformers that this ClassLoader will apply.
 List<String> getOptionalExcludedPackages()
          Get the list of optional package names that can be excluded from shadowing.
 URL getResource(String name)
           
 InputStream getResourceAsStream(String name)
           
 Enumeration<URL> getResources(String name)
           
protected  boolean isClassNameExcludedFromShadowing(String className)
          Subclasses can override this method to specify whether or not a particular class should be excluded from shadowing.
 Class<?> loadClass(String name)
           
 
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getPackage, getPackages, getParent, 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

DEFAULT_EXCLUDED_PACKAGES

public static final String[] DEFAULT_EXCLUDED_PACKAGES
Packages that are excluded by default


optionalExcludedPackages

public final List<String> optionalExcludedPackages
Optional excluded packages

Constructor Detail

ShadowingClassLoader

public ShadowingClassLoader(ClassLoader enclosingClassLoader)
Create a new ShadowingClassLoader, decorating the given ClassLoader.

Parameters:
enclosingClassLoader - the ClassLoader to decorate
Method Detail

addTransformer

public void addTransformer(ClassFileTransformer transformer)
Add the given ClassFileTransformer to the list of transformers that this ClassLoader will apply.

Parameters:
transformer - the ClassFileTransformer

copyTransformers

public void copyTransformers(ShadowingClassLoader other)
Copy all ClassFileTransformers from the given ClassLoader to the list of transformers that this ClassLoader will apply.

Parameters:
other - the ClassLoader to copy from

loadClass

public Class<?> loadClass(String name)
                   throws ClassNotFoundException
Overrides:
loadClass in class ClassLoader
Throws:
ClassNotFoundException

isClassNameExcludedFromShadowing

protected boolean isClassNameExcludedFromShadowing(String className)
Subclasses can override this method to specify whether or not a particular class should be excluded from shadowing.

Parameters:
className - the class name to test

getResource

public URL getResource(String name)
Overrides:
getResource in class ClassLoader

getResourceAsStream

public InputStream getResourceAsStream(String name)
Overrides:
getResourceAsStream in class ClassLoader

getResources

public Enumeration<URL> getResources(String name)
                              throws IOException
Overrides:
getResources in class ClassLoader
Throws:
IOException

getOptionalExcludedPackages

public List<String> getOptionalExcludedPackages()
Get the list of optional package names that can be excluded from shadowing.


The Spring Framework

Copyright © 2002-2007 The Spring Framework.