Class ClassFileLocator.AgentBased

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable, ClassFileLocator
    Enclosing interface:
    ClassFileLocator

    @Enhance
    public static class ClassFileLocator.AgentBased
    extends java.lang.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.
    • Field Detail

      • INSTALLER_TYPE

        private static final java.lang.String INSTALLER_TYPE
        The name of the Byte Buddy net.bytebuddy.agent.Installer class.
        See Also:
        Constant Field Values
      • INSTRUMENTATION_GETTER

        private static final java.lang.String INSTRUMENTATION_GETTER
        The name of the net.bytebuddy.agent.Installer getter for reading an installed Instrumentation.
        See Also:
        Constant Field Values
      • STATIC_MEMBER

        private static final java.lang.Object STATIC_MEMBER
        Indicator for access to a static member via reflection to make the code more readable.
      • instrumentation

        private final java.lang.instrument.Instrumentation instrumentation
        The instrumentation instance to use for looking up the binary format of a type.
    • Constructor Detail

      • AgentBased

        public AgentBased​(java.lang.instrument.Instrumentation instrumentation,
                          java.lang.ClassLoader classLoader)
        Creates an agent-based class file locator.
        Parameters:
        instrumentation - The instrumentation to be used.
        classLoader - The class loader to read a class from.
      • AgentBased

        public AgentBased​(java.lang.instrument.Instrumentation instrumentation,
                          ClassFileLocator.AgentBased.ClassLoadingDelegate classLoadingDelegate)
        Creates an agent-based class file locator.
        Parameters:
        instrumentation - The instrumentation to be used.
        classLoadingDelegate - The delegate responsible for class loading.
    • Method Detail

      • fromInstalledAgent

        public static ClassFileLocator fromInstalledAgent​(java.lang.ClassLoader classLoader)
        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

        public static ClassFileLocator of​(java.lang.instrument.Instrumentation instrumentation,
                                          java.lang.Class<?> type)
        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

        public ClassFileLocator.Resolution locate​(java.lang.String name)
        Locates the class file for a given type and returns the binary data of the class file.
        Specified by:
        locate in interface ClassFileLocator
        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 interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable