@HashCodeAndEqualsPlugin.Enhance protected static class ResettableClassFileTransformer.WithDelegation.Substitutable extends ResettableClassFileTransformer.AbstractBase implements ResettableClassFileTransformer.Substitutable
ResettableClassFileTransformer.ResettableClassFileTransformer.AbstractBase, ResettableClassFileTransformer.Substitutable, ResettableClassFileTransformer.WithDelegation| Modifier and Type | Field and Description |
|---|---|
protected ResettableClassFileTransformer |
classFileTransformer
The class file transformer to delegate to.
|
| Modifier | Constructor and Description |
|---|---|
protected |
Substitutable(ResettableClassFileTransformer classFileTransformer)
Creates a new delegating resettable class file transformer.
|
| Modifier and Type | Method and Description |
|---|---|
Iterator<AgentBuilder.Transformer> |
iterator(TypeDescription typeDescription,
ClassLoader classLoader,
JavaModule module,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain)
Creates an iterator over the transformers that are applied for a given type.
|
static ResettableClassFileTransformer.Substitutable |
of(ResettableClassFileTransformer classFileTransformer)
Creates a new substitutable class file transformer of another class file transformer.
|
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.
|
void |
substitute(ResettableClassFileTransformer classFileTransformer)
Substitutes the current class file transformer.
|
byte[] |
transform(ClassLoader classLoader,
String internalName,
Class<?> classBeingRedefined,
ProtectionDomain protectionDomain,
byte[] binaryRepresentation) |
ResettableClassFileTransformer |
unwrap()
Returns the underlying non-substitutable class file transformer.
|
reset, reset, reset, reset, reset, reset, resetprotected volatile ResettableClassFileTransformer classFileTransformer
protected Substitutable(ResettableClassFileTransformer classFileTransformer)
classFileTransformer - The class file transformer to delegate to.public static ResettableClassFileTransformer.Substitutable of(ResettableClassFileTransformer classFileTransformer)
classFileTransformer - The class file transformer to wrap.public void substitute(ResettableClassFileTransformer classFileTransformer)
substitute in interface ResettableClassFileTransformer.SubstitutableclassFileTransformer - The class file transformer to use.public ResettableClassFileTransformer unwrap()
unwrap in interface ResettableClassFileTransformer.Substitutablepublic Iterator<AgentBuilder.Transformer> iterator(TypeDescription typeDescription, @MaybeNull ClassLoader classLoader, @MaybeNull JavaModule module, @MaybeNull Class<?> classBeingRedefined, @MaybeNull ProtectionDomain protectionDomain)
iterator in interface ResettableClassFileTransformertypeDescription - A description of a type.classLoader - The type's class loader or null if the boot loader.module - The type's module or null if the module system is not supported by the current VM.classBeingRedefined - The class being redefined or null if the type is not yet loaded.protectionDomain - The type's protection domain or null if not available.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.InstallationListener is informed about the
resetting without undoing any code changes.
Note: A reset class file transformer should not be reinstalled. Instead, the AgentBuilder
which 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().
reset in interface ResettableClassFileTransformerinstrumentation - The instrumentation instance from which to deregister the transformer.classFileTransformer - The actual class file transformer to deregister which might be this instance 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.true if a reset was applied and this transformer was not previously removed.public byte[] transform(@MaybeNull ClassLoader classLoader, @MaybeNull String internalName, @MaybeNull Class<?> classBeingRedefined, @MaybeNull ProtectionDomain protectionDomain, byte[] binaryRepresentation) throws IllegalClassFormatException
transform in interface ClassFileTransformerIllegalClassFormatExceptionCopyright © 2014–2025. All rights reserved.