Class ClassInjector.UsingReflection.Dispatcher.Direct
java.lang.Object
net.bytebuddy.dynamic.loading.ClassInjector.UsingReflection.Dispatcher.Direct
- All Implemented Interfaces:
ClassInjector.UsingReflection.Dispatcher, ClassInjector.UsingReflection.Dispatcher.Initializable
- Direct Known Subclasses:
ClassInjector.UsingReflection.Dispatcher.Direct.ForJava7CapableVm, ClassInjector.UsingReflection.Dispatcher.Direct.ForLegacyVm
- Enclosing interface:
ClassInjector.UsingReflection.Dispatcher
@Enhance
public abstract static class ClassInjector.UsingReflection.Dispatcher.Direct
extends Object
implements ClassInjector.UsingReflection.Dispatcher, ClassInjector.UsingReflection.Dispatcher.Initializable
A class injection dispatcher that is using reflection on the
ClassLoader methods.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprotected static classA resolved class dispatcher for a class injector on a VM running at least Java 7.protected static classA resolved class dispatcher for a class injector prior to Java 7.Nested classes/interfaces inherited from interface ClassInjector.UsingReflection.Dispatcher
ClassInjector.UsingReflection.Dispatcher.CreationAction, ClassInjector.UsingReflection.Dispatcher.Direct, ClassInjector.UsingReflection.Dispatcher.Initializable, ClassInjector.UsingReflection.Dispatcher.Unavailable, ClassInjector.UsingReflection.Dispatcher.UsingUnsafeInjection, ClassInjector.UsingReflection.Dispatcher.UsingUnsafeOverrideNested classes/interfaces inherited from interface ClassInjector.UsingReflection.Dispatcher.Initializable
ClassInjector.UsingReflection.Dispatcher.Initializable.Unavailable -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final Methodprotected final Methodprotected final MethodAn instance ofClassLoader.findLoadedClass(String).protected final MethodAn instance ofjava.lang.ClassLoader#getDefinedPackage(String).protected final MethodAn instance ofClassLoader.getPackage(String).Fields inherited from interface ClassInjector.UsingReflection.Dispatcher
UNDEFINED -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionClass<?> defineClass(ClassLoader classLoader, String name, byte[] binaryRepresentation, ProtectionDomain protectionDomain) Defines a class for the given class loader.definePackage(ClassLoader classLoader, String name, String specificationTitle, String specificationVersion, String specificationVendor, String implementationTitle, String implementationVersion, String implementationVendor, URL sealBase) Defines a package for the given class loader.Class<?> findClass(ClassLoader classLoader, String name) Looks up a class from the given class loader.getDefinedPackage(ClassLoader classLoader, String name) Looks up a package from a class loader.getPackage(ClassLoader classLoader, String name) Looks up a package from a class loader or its ancestor.Initializes this dispatcher.booleanIndicates if this dispatcher is available.protected static ClassInjector.UsingReflection.Dispatcher.Initializablemake()Creates a direct dispatcher.Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ClassInjector.UsingReflection.Dispatcher
getClassLoadingLock
-
Field Details
-
findLoadedClass
An instance ofClassLoader.findLoadedClass(String). -
defineClass
-
getDefinedPackage
An instance ofjava.lang.ClassLoader#getDefinedPackage(String). May benull. -
getPackage
An instance ofClassLoader.getPackage(String). -
definePackage
-
-
Constructor Details
-
Direct
protected Direct(Method findLoadedClass, Method defineClass, @MaybeNull Method getDefinedPackage, Method getPackage, Method definePackage) Creates a new direct injection dispatcher.- Parameters:
findLoadedClass- An instance ofClassLoader.findLoadedClass(String).defineClass- An instance ofClassLoader.defineClass(String, byte[], int, int, ProtectionDomain).getDefinedPackage- An instance ofjava.lang.ClassLoader#getDefinedPackage(String). May benull.getPackage- An instance ofClassLoader.getPackage(String).definePackage- An instance ofClassLoader.definePackage(String, String, String, String, String, String, String, URL).
-
-
Method Details
-
make
Creates a direct dispatcher.- Returns:
- A direct dispatcher for class injection.
- Throws:
Exception- If the creation is impossible.
-
isAvailable
public boolean isAvailable()Indicates if this dispatcher is available.- Specified by:
isAvailablein interfaceClassInjector.UsingReflection.Dispatcher.Initializable- Returns:
trueif this dispatcher is available.
-
initialize
Initializes this dispatcher.- Specified by:
initializein interfaceClassInjector.UsingReflection.Dispatcher.Initializable- Returns:
- The initialized dispatcher.
-
findClass
Looks up a class from the given class loader.- Specified by:
findClassin interfaceClassInjector.UsingReflection.Dispatcher- Parameters:
classLoader- The class loader for which a class should be located.name- The binary name of the class that should be located.- Returns:
- The class for the binary name or
nullif no such class is defined for the provided class loader.
-
defineClass
public Class<?> defineClass(ClassLoader classLoader, String name, byte[] binaryRepresentation, @MaybeNull ProtectionDomain protectionDomain) Defines a class for the given class loader.- Specified by:
defineClassin interfaceClassInjector.UsingReflection.Dispatcher- Parameters:
classLoader- The class loader for which a new class should be defined.name- The binary name of the class that should be defined.binaryRepresentation- The binary representation of the class.protectionDomain- The protection domain for the defined class.- Returns:
- The defined, loaded class.
-
getDefinedPackage
Looks up a package from a class loader. If the operation is not supported, falls back toClassInjector.UsingReflection.Dispatcher.getPackage(ClassLoader, String)- Specified by:
getDefinedPackagein interfaceClassInjector.UsingReflection.Dispatcher- Parameters:
classLoader- The class loader to query.name- The binary name of the package.- Returns:
- The package for the given name as defined by the provided class loader or
nullif no such package exists.
-
getPackage
Looks up a package from a class loader or its ancestor.- Specified by:
getPackagein interfaceClassInjector.UsingReflection.Dispatcher- Parameters:
classLoader- The class loader to query.name- The binary name of the package.- Returns:
- The package for the given name as defined by the provided class loader or its ancestor, or
nullif no such package exists.
-
definePackage
public Package definePackage(ClassLoader classLoader, String name, @MaybeNull String specificationTitle, @MaybeNull String specificationVersion, @MaybeNull String specificationVendor, @MaybeNull String implementationTitle, @MaybeNull String implementationVersion, @MaybeNull String implementationVendor, @MaybeNull URL sealBase) Defines a package for the given class loader.- Specified by:
definePackagein interfaceClassInjector.UsingReflection.Dispatcher- Parameters:
classLoader- The class loader for which a package is to be defined.name- The binary name of the package.specificationTitle- The specification title of the package ornullif no specification title exists.specificationVersion- The specification version of the package ornullif no specification version exists.specificationVendor- The specification vendor of the package ornullif no specification vendor exists.implementationTitle- The implementation title of the package ornullif no implementation title exists.implementationVersion- The implementation version of the package ornullif no implementation version exists.implementationVendor- The implementation vendor of the package ornullif no implementation vendor exists.sealBase- The seal base URL ornullif the package should not be sealed.- Returns:
- The defined package.
-