Class AgentBuilder.DescriptionStrategy.SuperTypeLoading

java.lang.Object
net.bytebuddy.agent.builder.AgentBuilder.DescriptionStrategy.SuperTypeLoading
All Implemented Interfaces:
AgentBuilder.DescriptionStrategy
Enclosing interface:
AgentBuilder.DescriptionStrategy

@Enhance public static class AgentBuilder.DescriptionStrategy.SuperTypeLoading extends Object implements AgentBuilder.DescriptionStrategy

A description strategy that enforces the loading of any super type of a type description but delegates the actual type description to another description strategy.

Warning: When using this description strategy, a type is not instrumented if any of its subtypes is loaded first. The instrumentation API does not submit such types to a class file transformer on most VM implementations.

  • Field Details

  • Constructor Details

    • SuperTypeLoading

      public SuperTypeLoading(AgentBuilder.DescriptionStrategy delegate)
      Creates a new description strategy that enforces loading of a super type.
      Parameters:
      delegate - The delegate description strategy.
  • Method Details

    • isLoadedFirst

      public boolean isLoadedFirst()
      Indicates if this description strategy makes use of loaded type information and yields a different type description if no loaded type is available.
      Specified by:
      isLoadedFirst in interface AgentBuilder.DescriptionStrategy
      Returns:
      true if this description strategy prefers loaded type information when describing a type and only uses a type pool if loaded type information is not available.
    • apply

      public TypeDescription apply(String name, @MaybeNull Class<?> type, TypePool typePool, AgentBuilder.CircularityLock circularityLock, @MaybeNull ClassLoader classLoader, @MaybeNull JavaModule module)
      Describes the given type.
      Specified by:
      apply in interface AgentBuilder.DescriptionStrategy
      Parameters:
      name - The binary name of the type to describe.
      type - The type that is being redefined, if a redefinition is applied or null if no redefined type is available.
      typePool - The type pool to use for locating a type if required.
      circularityLock - The currently used circularity lock.
      classLoader - The type's class loader where null represents the bootstrap class loader.
      module - The type's module or null if the current VM does not support modules.
      Returns:
      An appropriate type description.