public static enum AgentBuilder.LambdaInstrumentationStrategy extends Enum<AgentBuilder.LambdaInstrumentationStrategy>
LambdaMetafactory
if this feature is enabled.Modifier and Type | Class and Description |
---|---|
protected static class |
AgentBuilder.LambdaInstrumentationStrategy.AlternativeMetaFactoryRedirection
Implements the alternative lambda meta factory.
|
protected static class |
AgentBuilder.LambdaInstrumentationStrategy.LambdaInjector
An injector for injecting the lambda class dispatcher to the system class path.
|
protected static class |
AgentBuilder.LambdaInstrumentationStrategy.LambdaInstanceFactory
A factory that creates instances that represent lambda expressions.
|
protected static class |
AgentBuilder.LambdaInstrumentationStrategy.MetaFactoryRedirection
Implements the regular lambda meta factory.
|
Enum Constant and Description |
---|
DISABLED
A strategy that does not instrument the
LambdaMetafactory . |
ENABLED
A strategy that enables instrumentation of the
LambdaMetafactory if such a factory exists on the current VM. |
Modifier and Type | Field and Description |
---|---|
protected static MethodVisitor |
IGNORE_ORIGINAL
Indicates that an original implementation can be ignored when redefining a method.
|
Modifier and Type | Method and Description |
---|---|
protected abstract void |
apply(ByteBuddy byteBuddy,
Instrumentation instrumentation,
ClassFileTransformer classFileTransformer)
Applies a transformation to lambda instances if applicable.
|
boolean |
isEnabled()
Indicates if this strategy enables instrumentation of the
LambdaMetafactory . |
protected abstract boolean |
isInstrumented(Class<?> type)
Validates if the supplied class is instrumented.
|
static AgentBuilder.LambdaInstrumentationStrategy |
of(boolean enabled)
Returns an enabled lambda instrumentation strategy for
true . |
static void |
release(ClassFileTransformer classFileTransformer,
Instrumentation instrumentation)
Releases the supplied class file transformer when it was built with
AgentBuilder.with(LambdaInstrumentationStrategy) enabled. |
String |
toString() |
static AgentBuilder.LambdaInstrumentationStrategy |
valueOf(String name)
Returns the enum constant of this type with the specified name.
|
static AgentBuilder.LambdaInstrumentationStrategy[] |
values()
Returns an array containing the constants of this enum type, in
the order they are declared.
|
public static final AgentBuilder.LambdaInstrumentationStrategy ENABLED
LambdaMetafactory
if such a factory exists on the current VM.
Classes representing lambda expressions that are created by Byte Buddy are fully compatible to those created by
the JVM and can be serialized or deserialized to one another. The classes do however show a few differences:
public static final AgentBuilder.LambdaInstrumentationStrategy DISABLED
LambdaMetafactory
.protected static final MethodVisitor IGNORE_ORIGINAL
public static AgentBuilder.LambdaInstrumentationStrategy[] values()
for (AgentBuilder.LambdaInstrumentationStrategy c : AgentBuilder.LambdaInstrumentationStrategy.values()) System.out.println(c);
public static AgentBuilder.LambdaInstrumentationStrategy 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 nullpublic static void release(ClassFileTransformer classFileTransformer, Instrumentation instrumentation)
AgentBuilder.with(LambdaInstrumentationStrategy)
enabled.
Subsequently, the class file transformer is no longer applied when a class that represents a lambda expression is created.classFileTransformer
- The class file transformer to release.instrumentation
- The instrumentation instance that is used to potentially rollback the instrumentation of the LambdaMetafactory
.public static AgentBuilder.LambdaInstrumentationStrategy of(boolean enabled)
true
.enabled
- If lambda instrumentation should be enabled.true
if the returned strategy should be enabled.protected abstract void apply(ByteBuddy byteBuddy, Instrumentation instrumentation, ClassFileTransformer classFileTransformer)
byteBuddy
- The Byte Buddy instance to use.instrumentation
- The instrumentation instance for applying a redefinition.classFileTransformer
- The class file transformer to apply.public boolean isEnabled()
LambdaMetafactory
.true
if this strategy is enabled.protected abstract boolean isInstrumented(Class<?> type)
type
- The redefined type or null
if no such type exists.true
if the supplied type should be instrumented according to this strategy.public String toString()
toString
in class Enum<AgentBuilder.LambdaInstrumentationStrategy>
Copyright © 2014–2016. All rights reserved.