Package net.bytebuddy.dynamic
Class ClassFileLocator.ForInstrumentation
java.lang.Object
net.bytebuddy.dynamic.ClassFileLocator.ForInstrumentation
- All Implemented Interfaces:
Closeable
,AutoCloseable
,ClassFileLocator
- Enclosing interface:
- ClassFileLocator
@Enhance
public static class ClassFileLocator.ForInstrumentation
extends Object
implements ClassFileLocator
A Java agent that allows the location of class files by emulating a retransformation. Note that this class file
locator causes a class to be loaded in order to look up its class file. Also, this locator does deliberately not
support the look-up of classes that represent lambda expressions.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
A delegate that is queried for loading a class.protected static interface
A dispatcher to interact with theInstrumentation
API.protected static class
A non-operational class file transformer that remembers the binary format of a given class.Nested classes/interfaces inherited from interface net.bytebuddy.dynamic.ClassFileLocator
ClassFileLocator.Compound, ClassFileLocator.ForClassLoader, ClassFileLocator.ForFolder, ClassFileLocator.ForInstrumentation, ClassFileLocator.ForJarFile, ClassFileLocator.ForModule, ClassFileLocator.ForModuleFile, ClassFileLocator.ForUrl, ClassFileLocator.NoOp, ClassFileLocator.PackageDiscriminating, ClassFileLocator.Resolution, ClassFileLocator.Simple
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final ClassFileLocator.ForInstrumentation.ClassLoadingDelegate
The delegate to load a class by its name.private static final ClassFileLocator.ForInstrumentation.Dispatcher
A dispatcher for interacting with the instrumentation API.private static final String
The name of the Byte Buddynet.bytebuddy.agent.Installer
class.private final Instrumentation
The instrumentation instance to use for looking up the binary format of a type.private static final String
The name of thenet.bytebuddy.agent.Installer
getter for reading an installedInstrumentation
.private static final Object
Indicator for access to a static member via reflection to make the code more readable.Fields inherited from interface net.bytebuddy.dynamic.ClassFileLocator
CLASS_FILE_EXTENSION
-
Constructor Summary
ConstructorsConstructorDescriptionForInstrumentation
(Instrumentation instrumentation, ClassLoader classLoader) Creates an agent-based class file locator.ForInstrumentation
(Instrumentation instrumentation, ClassFileLocator.ForInstrumentation.ClassLoadingDelegate classLoadingDelegate) Creates an agent-based class file locator. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
private static <T> T
doPrivileged
(PrivilegedAction<T> action) A proxy forjava.security.AccessController#doPrivileged
that is activated if available.static ClassFileLocator
fromInstalledAgent
(ClassLoader classLoader) Returns an agent-based class file locator for the given class loader and an already installed Byte Buddy-agent.Locates the class file for a given type and returns the binary data of the class file.static ClassFileLocator
of
(Instrumentation instrumentation, Class<?> type) Returns a class file locator that is capable of locating a class file for the given type using the given instrumentation instance.
-
Field Details
-
INSTALLER_TYPE
The name of the Byte Buddynet.bytebuddy.agent.Installer
class.- See Also:
-
INSTRUMENTATION_GETTER
The name of thenet.bytebuddy.agent.Installer
getter for reading an installedInstrumentation
.- See Also:
-
STATIC_MEMBER
Indicator for access to a static member via reflection to make the code more readable. -
DISPATCHER
A dispatcher for interacting with the instrumentation API. -
instrumentation
The instrumentation instance to use for looking up the binary format of a type. -
classLoadingDelegate
The delegate to load a class by its name.
-
-
Constructor Details
-
ForInstrumentation
Creates an agent-based class file locator.- Parameters:
instrumentation
- The instrumentation to be used.classLoader
- The class loader to read a class from.
-
ForInstrumentation
public ForInstrumentation(Instrumentation instrumentation, ClassFileLocator.ForInstrumentation.ClassLoadingDelegate classLoadingDelegate) Creates an agent-based class file locator.- Parameters:
instrumentation
- The instrumentation to be used.classLoadingDelegate
- The delegate responsible for class loading.
-
-
Method Details
-
doPrivileged
A proxy forjava.security.AccessController#doPrivileged
that is activated if available.- Type Parameters:
T
- The type of the action's resolved value.- Parameters:
action
- The action to execute from a privileged context.- Returns:
- The action's resolved value.
-
fromInstalledAgent
Returns an agent-based class file locator for the given class loader and an already installed Byte Buddy-agent.- Parameters:
classLoader
- The class loader that is expected to load the looked-up a class.- Returns:
- A class file locator for the given class loader based on a Byte Buddy agent.
-
of
Returns a class file locator that is capable of locating a class file for the given type using the given instrumentation instance.- Parameters:
instrumentation
- The instrumentation instance to query for a retransformation.type
- The locatable type which class loader is used as a fallback.- Returns:
- A class file locator for locating the class file of the given type.
-
locate
Locates the class file for a given type and returns the binary data of the class file.- Specified by:
locate
in interfaceClassFileLocator
- Parameters:
name
- The name of the type to locate a class file representation for.- Returns:
- Any binary representation of the type which might be illegal.
-
close
public void close()- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
-