Package net.bytebuddy.dynamic.loading
Class ByteArrayClassLoader.ChildFirst
- java.lang.Object
-
- java.lang.ClassLoader
-
- net.bytebuddy.dynamic.loading.InjectionClassLoader
-
- net.bytebuddy.dynamic.loading.ByteArrayClassLoader
-
- net.bytebuddy.dynamic.loading.ByteArrayClassLoader.ChildFirst
-
- Enclosing class:
- ByteArrayClassLoader
public static class ByteArrayClassLoader.ChildFirst extends ByteArrayClassLoader
A
ByteArrayClassLoader
which applies child-first semantics for the given type definitions.Important: Package definitions remain their parent-first semantics as loaded package definitions do not expose their class loaders. Also, it is not possible to make this class or its subclass parallel-capable as the loading strategy is overridden.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
ByteArrayClassLoader.ChildFirst.PrependingEnumeration
An enumeration that prepends an element to another enumeration and skips the last element of the provided enumeration.-
Nested classes/interfaces inherited from class net.bytebuddy.dynamic.loading.ByteArrayClassLoader
ByteArrayClassLoader.ChildFirst, ByteArrayClassLoader.ClassDefinitionAction, ByteArrayClassLoader.EmptyEnumeration, ByteArrayClassLoader.PackageLookupStrategy, ByteArrayClassLoader.PersistenceHandler, ByteArrayClassLoader.SingletonEnumeration, ByteArrayClassLoader.SynchronizationStrategy
-
Nested classes/interfaces inherited from class net.bytebuddy.dynamic.loading.InjectionClassLoader
InjectionClassLoader.Strategy
-
-
Field Summary
-
Fields inherited from class net.bytebuddy.dynamic.loading.ByteArrayClassLoader
accessControlContext, classFileTransformer, packageDefinitionStrategy, persistenceHandler, protectionDomain, SYNCHRONIZATION_STRATEGY, typeDefinitions, URL_SCHEMA
-
-
Constructor Summary
Constructors Constructor Description ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, ClassFileTransformer classFileTransformer)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ByteArrayClassLoader.PersistenceHandler persistenceHandler)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, ClassFileTransformer classFileTransformer)
Creates a new child-first byte array class loader.ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ByteArrayClassLoader.PersistenceHandler persistenceHandler)
Creates a new child-first byte array class loader.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description URL
getResource(String name)
Enumeration<URL>
getResources(String name)
static Map<TypeDescription,Class<?>>
load(ClassLoader classLoader, Map<TypeDescription,byte[]> types)
Loads a given set of class descriptions and their binary representations using a child-first class loader.static Map<TypeDescription,Class<?>>
load(ClassLoader classLoader, Map<TypeDescription,byte[]> types, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, boolean forbidExisting, boolean sealed)
Loads a given set of class descriptions and their binary representations using a child-first class loader.protected Class<?>
loadClass(String name, boolean resolve)
-
Methods inherited from class net.bytebuddy.dynamic.loading.ByteArrayClassLoader
doDefineClasses, findClass, findResource, findResources
-
Methods inherited from class net.bytebuddy.dynamic.loading.InjectionClassLoader
defineClass, defineClasses, isSealed
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResourceAsStream, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Constructor Detail
-
ChildFirst
public ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.
-
ChildFirst
public ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.sealed
-true
if this class loader is sealed.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.
-
ChildFirst
public ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ByteArrayClassLoader.PersistenceHandler persistenceHandler)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.persistenceHandler
- The persistence handler of this class loader.
-
ChildFirst
public ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ByteArrayClassLoader.PersistenceHandler persistenceHandler)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.sealed
-true
if this class loader is sealed.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.persistenceHandler
- The persistence handler of this class loader.
-
ChildFirst
public ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.protectionDomain
- The protection domain to apply wherenull
references an implicit protection domain.persistenceHandler
- The persistence handler of this class loader.packageDefinitionStrategy
- The package definer to be queried for package definitions.
-
ChildFirst
public ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.sealed
-true
if this class loader is sealed.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.protectionDomain
- The protection domain to apply wherenull
references an implicit protection domain.persistenceHandler
- The persistence handler of this class loader.packageDefinitionStrategy
- The package definer to be queried for package definitions.
-
ChildFirst
public ChildFirst(ClassLoader parent, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, ClassFileTransformer classFileTransformer)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.protectionDomain
- The protection domain to apply wherenull
references an implicit protection domain.persistenceHandler
- The persistence handler of this class loader.packageDefinitionStrategy
- The package definer to be queried for package definitions.classFileTransformer
- The class file transformer to apply on loaded classes.
-
ChildFirst
public ChildFirst(ClassLoader parent, boolean sealed, Map<String,byte[]> typeDefinitions, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, ClassFileTransformer classFileTransformer)
Creates a new child-first byte array class loader.- Parameters:
parent
- TheClassLoader
that is the parent of this class loader.sealed
-true
if this class loader is sealed.typeDefinitions
- A map of fully qualified class names pointing to their binary representations.protectionDomain
- The protection domain to apply wherenull
references an implicit protection domain.persistenceHandler
- The persistence handler of this class loader.packageDefinitionStrategy
- The package definer to be queried for package definitions.classFileTransformer
- The class file transformer to apply on loaded classes.
-
-
Method Detail
-
load
public static Map<TypeDescription,Class<?>> load(ClassLoader classLoader, Map<TypeDescription,byte[]> types)
Loads a given set of class descriptions and their binary representations using a child-first class loader.- Parameters:
classLoader
- The parent class loader.types
- The unloaded types to be loaded.- Returns:
- A map of the given type descriptions pointing to their loaded representations.
-
load
public static Map<TypeDescription,Class<?>> load(ClassLoader classLoader, Map<TypeDescription,byte[]> types, ProtectionDomain protectionDomain, ByteArrayClassLoader.PersistenceHandler persistenceHandler, PackageDefinitionStrategy packageDefinitionStrategy, boolean forbidExisting, boolean sealed)
Loads a given set of class descriptions and their binary representations using a child-first class loader.- Parameters:
classLoader
- The parent class loader.types
- The unloaded types to be loaded.protectionDomain
- The protection domain to apply wherenull
references an implicit protection domain.persistenceHandler
- The persistence handler of the created class loader.packageDefinitionStrategy
- The package definer to be queried for package definitions.forbidExisting
-true
if the class loading should throw an exception if a class was already loaded by a parent class loader.sealed
-true
if the class loader should be sealed.- Returns:
- A map of the given type descriptions pointing to their loaded representations.
-
loadClass
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
- Overrides:
loadClass
in classClassLoader
- Throws:
ClassNotFoundException
-
getResource
public URL getResource(String name)
- Overrides:
getResource
in classClassLoader
-
getResources
public Enumeration<URL> getResources(String name) throws IOException
- Overrides:
getResources
in classClassLoader
- Throws:
IOException
-
-