Package net.bytebuddy.agent.builder
Class ResettableClassFileTransformer.WithDelegation
java.lang.Object
net.bytebuddy.agent.builder.ResettableClassFileTransformer.AbstractBase
net.bytebuddy.agent.builder.ResettableClassFileTransformer.WithDelegation
- All Implemented Interfaces:
ClassFileTransformer,ResettableClassFileTransformer
- Enclosing interface:
ResettableClassFileTransformer
@Enhance
public abstract static class ResettableClassFileTransformer.WithDelegation
extends ResettableClassFileTransformer.AbstractBase
Implements a resettable class file transformer that allows for the delegation of a transformation. Typically implemented
when using a
AgentBuilder.TransformerDecorator.-
Nested Class Summary
Nested classes/interfaces inherited from interface net.bytebuddy.agent.builder.ResettableClassFileTransformer
ResettableClassFileTransformer.AbstractBase, ResettableClassFileTransformer.WithDelegation -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final ResettableClassFileTransformerThe class file transformer to delegate to. -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedWithDelegation(ResettableClassFileTransformer classFileTransformer) Creates a new delegating resettable class file transformer. -
Method Summary
Modifier and TypeMethodDescriptioniterator(TypeDescription typeDescription, ClassLoader classLoader, JavaModule module, Class<?> classBeingRedefined, ProtectionDomain protectionDomain) Creates an iterator over the transformers that are applied for a given type.booleanreset(Instrumentation instrumentation, ResettableClassFileTransformer classFileTransformer, AgentBuilder.RedefinitionStrategy redefinitionStrategy, AgentBuilder.RedefinitionStrategy.DiscoveryStrategy redefinitionDiscoveryStrategy, AgentBuilder.RedefinitionStrategy.BatchAllocator redefinitionBatchAllocator, AgentBuilder.RedefinitionStrategy.Listener redefinitionListener) Deregisters this class file transformer and redefines any transformed class to its state without this class file transformer applied, if the supplied redefinition strategy is enabled.Methods inherited from class net.bytebuddy.agent.builder.ResettableClassFileTransformer.AbstractBase
reset, reset, reset, reset, reset, reset, resetMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.instrument.ClassFileTransformer
transform, transform
-
Field Details
-
classFileTransformer
The class file transformer to delegate to.
-
-
Constructor Details
-
WithDelegation
Creates a new delegating resettable class file transformer.- Parameters:
classFileTransformer- The class file transformer to delegate to.
-
-
Method Details
-
iterator
public Iterator<AgentBuilder.Transformer> iterator(TypeDescription typeDescription, @MaybeNull ClassLoader classLoader, @MaybeNull JavaModule module, @MaybeNull Class<?> classBeingRedefined, ProtectionDomain protectionDomain) Creates an iterator over the transformers that are applied for a given type.- Parameters:
typeDescription- A description of a type.classLoader- The type's class loader ornullif the boot loader.module- The type's module ornullif the module system is not supported by the current VM.classBeingRedefined- The class being redefined ornullif the type is not yet loaded.protectionDomain- The type's protection domain.- Returns:
- An iterator over the transformers that are applied by this class file transformer if the given type is discovered.
-
reset
public boolean reset(Instrumentation instrumentation, ResettableClassFileTransformer classFileTransformer, AgentBuilder.RedefinitionStrategy redefinitionStrategy, AgentBuilder.RedefinitionStrategy.DiscoveryStrategy redefinitionDiscoveryStrategy, AgentBuilder.RedefinitionStrategy.BatchAllocator redefinitionBatchAllocator, AgentBuilder.RedefinitionStrategy.Listener redefinitionListener) Deregisters this class file transformer and redefines any transformed class to its state without this class file transformer applied, if the supplied redefinition strategy is enabled. If it is not enabled, only the
AgentBuilder.InstallationListeneris informed about the resetting without undoing any code changes.Note: A reset class file transformer should not be reinstalled. Instead, the
AgentBuilderwhich built the transformer should be asked to install a new transformer.Important: Most JVMs do not support changes of a class's structure after a class was already loaded. Therefore, it is typically required that this class file transformer was built while enabling
AgentBuilder.disableClassFormatChanges().- Parameters:
instrumentation- The instrumentation instance from which to deregister the transformer.classFileTransformer- The actual class file transformer to deregister which might bethisinstance or any wrapper.redefinitionStrategy- The redefinition to apply.redefinitionDiscoveryStrategy- The discovery strategy for the types to reset.redefinitionBatchAllocator- The batch allocator to use.redefinitionListener- The redefinition listener to apply.- Returns:
trueif a reset was applied and this transformer was not previously removed.
-