public class ShadowingClassLoader extends DecoratingClassLoader
addTransformer(java.lang.instrument.ClassFileTransformer)
,
OverridingClassLoader
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.String,java.lang.Class<?>> |
classCache |
private java.util.List<java.lang.instrument.ClassFileTransformer> |
classFileTransformers |
static java.lang.String[] |
DEFAULT_EXCLUDED_PACKAGES
Packages that are excluded by default.
|
private java.lang.ClassLoader |
enclosingClassLoader |
Constructor and Description |
---|
ShadowingClassLoader(java.lang.ClassLoader enclosingClassLoader)
Create a new ShadowingClassLoader, decorating the given ClassLoader,
applying
DEFAULT_EXCLUDED_PACKAGES . |
ShadowingClassLoader(java.lang.ClassLoader enclosingClassLoader,
boolean defaultExcludes)
Create a new ShadowingClassLoader, decorating the given ClassLoader.
|
Modifier and Type | Method and Description |
---|---|
void |
addTransformer(java.lang.instrument.ClassFileTransformer transformer)
Add the given ClassFileTransformer to the list of transformers that this
ClassLoader will apply.
|
private byte[] |
applyTransformers(java.lang.String name,
byte[] bytes) |
void |
copyTransformers(ShadowingClassLoader other)
Copy all ClassFileTransformers from the given ClassLoader to the list of
transformers that this ClassLoader will apply.
|
private java.lang.Class<?> |
doLoadClass(java.lang.String name) |
java.net.URL |
getResource(java.lang.String name) |
java.io.InputStream |
getResourceAsStream(java.lang.String name) |
java.util.Enumeration<java.net.URL> |
getResources(java.lang.String name) |
protected boolean |
isEligibleForShadowing(java.lang.String className)
Determine whether the specified class is eligible for shadowing
by this class loader.
|
java.lang.Class<?> |
loadClass(java.lang.String name) |
private boolean |
shouldShadow(java.lang.String className)
Determine whether the given class should be excluded from shadowing.
|
excludeClass, excludePackage, isExcluded
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResources, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
public static final java.lang.String[] DEFAULT_EXCLUDED_PACKAGES
private final java.lang.ClassLoader enclosingClassLoader
private final java.util.List<java.lang.instrument.ClassFileTransformer> classFileTransformers
private final java.util.Map<java.lang.String,java.lang.Class<?>> classCache
public ShadowingClassLoader(java.lang.ClassLoader enclosingClassLoader)
DEFAULT_EXCLUDED_PACKAGES
.enclosingClassLoader
- the ClassLoader to decorateShadowingClassLoader(ClassLoader, boolean)
public ShadowingClassLoader(java.lang.ClassLoader enclosingClassLoader, boolean defaultExcludes)
enclosingClassLoader
- the ClassLoader to decoratedefaultExcludes
- whether to apply DEFAULT_EXCLUDED_PACKAGES
public void addTransformer(java.lang.instrument.ClassFileTransformer transformer)
transformer
- the ClassFileTransformerpublic void copyTransformers(ShadowingClassLoader other)
other
- the ClassLoader to copy frompublic java.lang.Class<?> loadClass(java.lang.String name) throws java.lang.ClassNotFoundException
loadClass
in class java.lang.ClassLoader
java.lang.ClassNotFoundException
private boolean shouldShadow(java.lang.String className)
className
- the name of the classprotected boolean isEligibleForShadowing(java.lang.String className)
className
- the class name to checkDecoratingClassLoader.isExcluded(java.lang.String)
private java.lang.Class<?> doLoadClass(java.lang.String name) throws java.lang.ClassNotFoundException
java.lang.ClassNotFoundException
private byte[] applyTransformers(java.lang.String name, byte[] bytes)
public java.net.URL getResource(java.lang.String name)
getResource
in class java.lang.ClassLoader
@Nullable public java.io.InputStream getResourceAsStream(java.lang.String name)
getResourceAsStream
in class java.lang.ClassLoader
public java.util.Enumeration<java.net.URL> getResources(java.lang.String name) throws java.io.IOException
getResources
in class java.lang.ClassLoader
java.io.IOException