public static enum AgentBuilder.RedefinitionStrategy extends Enum<AgentBuilder.RedefinitionStrategy>
A redefinition strategy regulates how already loaded classes are modified by a built agent.
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()
.
Modifier and Type | Class and Description |
---|---|
static interface |
AgentBuilder.RedefinitionStrategy.BatchAllocator
A batch allocator which is responsible for applying a redefinition in a batches.
|
protected static class |
AgentBuilder.RedefinitionStrategy.Collector
A collector is responsible for collecting classes that are to be considered for modification.
|
static interface |
AgentBuilder.RedefinitionStrategy.Listener
A listener to be applied during a redefinition.
|
Enum Constant and Description |
---|
DISABLED
Disables redefinition such that already loaded classes are not affected by the agent.
|
REDEFINITION
Applies a redefinition to all classes that are already loaded and that would have been transformed if
the built agent was registered before they were loaded.
|
RETRANSFORMATION
Applies a retransformation to all classes that are already loaded and that would have been transformed if
the built agent was registered before they were loaded.
|
Modifier and Type | Method and Description |
---|---|
protected boolean |
isEnabled()
Indicates that this redefinition strategy applies a modification of already loaded classes.
|
protected abstract boolean |
isRetransforming(Instrumentation instrumentation)
Indicates if this strategy requires a class file transformer to be registered with a hint to apply the
transformer for retransformation.
|
protected abstract AgentBuilder.RedefinitionStrategy.Collector |
make(AgentBuilder.Default.Transformation transformation)
Creates a collector instance that is responsible for collecting loaded classes for potential retransformation.
|
String |
toString() |
static AgentBuilder.RedefinitionStrategy |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static AgentBuilder.RedefinitionStrategy[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final AgentBuilder.RedefinitionStrategy DISABLED
public static final AgentBuilder.RedefinitionStrategy REDEFINITION
Applies a redefinition to all classes that are already loaded and that would have been transformed if
the built agent was registered before they were loaded. The created ClassFileTransformer
is not
registered for applying retransformations.
Using this strategy, a redefinition is applied as a single transformation request. This means that a single illegal redefinition of a class causes the entire redefinition attempt to fail.
Note: When applying a redefinition, it is normally required to use a AgentBuilder.TypeStrategy
that applies
a redefinition instead of rebasing classes such as AgentBuilder.TypeStrategy.Default.REDEFINE
. Also, consider
the constrains given by this type strategy.
public static final AgentBuilder.RedefinitionStrategy RETRANSFORMATION
Applies a retransformation to all classes that are already loaded and that would have been transformed if
the built agent was registered before they were loaded. The created ClassFileTransformer
is registered
for applying retransformations.
Using this strategy, a retransformation is applied as a single transformation request. This means that a single illegal retransformation of a class causes the entire retransformation attempt to fail.
Note: When applying a redefinition, it is normally required to use a AgentBuilder.TypeStrategy
that applies
a redefinition instead of rebasing classes such as AgentBuilder.TypeStrategy.Default.REDEFINE
. Also, consider
the constrains given by this type strategy.
public static AgentBuilder.RedefinitionStrategy[] values()
for (AgentBuilder.RedefinitionStrategy c : AgentBuilder.RedefinitionStrategy.values()) System.out.println(c);
public static AgentBuilder.RedefinitionStrategy valueOf(String name)
name
- the name of the enum constant to be returned.IllegalArgumentException
- if this enum type has no constant with the specified nameNullPointerException
- if the argument is nullprotected abstract boolean isRetransforming(Instrumentation instrumentation)
instrumentation
- The instrumentation instance used.true
if a class file transformer must be registered with a hint for retransformation.protected boolean isEnabled()
true
if this redefinition strategy applies a modification of already loaded classes.protected abstract AgentBuilder.RedefinitionStrategy.Collector make(AgentBuilder.Default.Transformation transformation)
transformation
- The transformation that is registered for the agent.public String toString()
toString
in class Enum<AgentBuilder.RedefinitionStrategy>
Copyright © 2014–2016. All rights reserved.