protected abstract static class AgentBuilder.RedefinitionStrategy.Collector
extends java.lang.Object
| Modifier and Type | Class and Description |
|---|---|
protected static class |
AgentBuilder.RedefinitionStrategy.Collector.ForRedefinition
A collector that applies a redefinition of already loaded classes.
|
protected static class |
AgentBuilder.RedefinitionStrategy.Collector.ForRetransformation
A collector that applies a retransformation of already loaded classes.
|
protected static class |
AgentBuilder.RedefinitionStrategy.Collector.PrependableIterator
An iterator that allows prepending of iterables to be applied previous to another iterator.
|
| Modifier and Type | Field and Description |
|---|---|
private static java.lang.Class<?> |
NO_LOADED_TYPE
A representation for a non-available loaded type.
|
protected java.util.List<java.lang.Class<?>> |
types
All types that were collected for redefinition.
|
| Modifier | Constructor and Description |
|---|---|
protected |
Collector()
Creates a new collector.
|
| Modifier and Type | Method and Description |
|---|---|
protected int |
apply(java.lang.instrument.Instrumentation instrumentation,
AgentBuilder.CircularityLock circularityLock,
AgentBuilder.LocationStrategy locationStrategy,
AgentBuilder.Listener listener,
AgentBuilder.RedefinitionStrategy.BatchAllocator redefinitionBatchAllocator,
AgentBuilder.RedefinitionStrategy.Listener redefinitionListener,
int batch)
Applies all types that this collector collected.
|
protected void |
consider(AgentBuilder.RawMatcher typeMatcher,
AgentBuilder.RawMatcher ignoredTypeMatcher,
AgentBuilder.Listener listener,
TypeDescription typeDescription,
java.lang.Class<?> type,
java.lang.Class<?> classBeingRedefined,
JavaModule module,
boolean unmodifiable)
Does consider the retransformation or redefinition of a loaded type.
|
protected void |
consider(AgentBuilder.RawMatcher typeMatcher,
AgentBuilder.RawMatcher ignoredTypeMatcher,
AgentBuilder.Listener listener,
TypeDescription typeDescription,
java.lang.Class<?> type,
JavaModule module)
Does consider the retransformation or redefinition of a loaded type without a loaded type representation.
|
protected abstract void |
doApply(java.lang.instrument.Instrumentation instrumentation,
AgentBuilder.CircularityLock circularityLock,
java.util.List<java.lang.Class<?>> types,
AgentBuilder.LocationStrategy locationStrategy,
AgentBuilder.Listener listener)
Applies this collector.
|
protected void |
include(java.util.List<java.lang.Class<?>> types)
Includes all the supplied types in this collector.
|
private static final java.lang.Class<?> NO_LOADED_TYPE
protected final java.util.List<java.lang.Class<?>> types
protected void consider(AgentBuilder.RawMatcher typeMatcher, AgentBuilder.RawMatcher ignoredTypeMatcher, AgentBuilder.Listener listener, TypeDescription typeDescription, java.lang.Class<?> type, JavaModule module)
typeMatcher - The type matcher to apply.ignoredTypeMatcher - The ignored type matcher to apply.listener - The listener to apply during the consideration.typeDescription - The type description of the type being considered.type - The loaded type being considered.module - The type's Java module or null if the current VM does not support modules.protected void consider(AgentBuilder.RawMatcher typeMatcher, AgentBuilder.RawMatcher ignoredTypeMatcher, AgentBuilder.Listener listener, TypeDescription typeDescription, java.lang.Class<?> type, java.lang.Class<?> classBeingRedefined, JavaModule module, boolean unmodifiable)
typeMatcher - A type matcher to apply.ignoredTypeMatcher - The ignored type matcher to apply.listener - The listener to apply during the consideration.typeDescription - The type description of the type being considered.type - The loaded type being considered.classBeingRedefined - The loaded type being considered or null if it should be considered non-available.module - The type's Java module or null if the current VM does not support modules.unmodifiable - true if the current type should be considered unmodifiable.protected void include(java.util.List<java.lang.Class<?>> types)
types - The types to include.protected int apply(java.lang.instrument.Instrumentation instrumentation,
AgentBuilder.CircularityLock circularityLock,
AgentBuilder.LocationStrategy locationStrategy,
AgentBuilder.Listener listener,
AgentBuilder.RedefinitionStrategy.BatchAllocator redefinitionBatchAllocator,
AgentBuilder.RedefinitionStrategy.Listener redefinitionListener,
int batch)
instrumentation - The instrumentation instance to apply changes to.circularityLock - The circularity lock to use.locationStrategy - The location strategy to use.listener - The listener to use.redefinitionBatchAllocator - The redefinition batch allocator to use.redefinitionListener - The redefinition listener to use.batch - The next batch's index.protected abstract void doApply(java.lang.instrument.Instrumentation instrumentation,
AgentBuilder.CircularityLock circularityLock,
java.util.List<java.lang.Class<?>> types,
AgentBuilder.LocationStrategy locationStrategy,
AgentBuilder.Listener listener)
throws java.lang.instrument.UnmodifiableClassException,
java.lang.ClassNotFoundException
instrumentation - The instrumentation instance to apply the transformation for.circularityLock - The circularity lock to use.types - The types of the current patch to transform.locationStrategy - The location strategy to use.listener - the listener to notify.java.lang.instrument.UnmodifiableClassException - If a class is not modifiable.java.lang.ClassNotFoundException - If a class could not be found.