protected static class InvocationHandlerAdapter.ForStaticDelegation extends InvocationHandlerAdapter implements InvocationHandlerAdapter.AssignerConfigurable
InvocationHandlerAdapter
that delegates method
invocations to an adapter that is stored in a static field.Modifier and Type | Class and Description |
---|---|
protected class |
InvocationHandlerAdapter.ForStaticDelegation.Appender
An appender for implementing the
InvocationHandlerAdapter.ForStaticDelegation . |
InvocationHandlerAdapter.AssignerConfigurable, InvocationHandlerAdapter.ForInstanceDelegation, InvocationHandlerAdapter.ForStaticDelegation
Implementation.Compound, Implementation.Context, Implementation.Simple, Implementation.SpecialMethodInvocation, Implementation.Target
Modifier and Type | Field and Description |
---|---|
protected InvocationHandler |
invocationHandler
The invocation handler to which method interceptions are to be delegated.
|
assigner, cacheMethods, CACHING, fieldName
Modifier | Constructor and Description |
---|---|
protected |
ForStaticDelegation(String fieldName,
boolean cacheMethods,
Assigner assigner,
InvocationHandler invocationHandler)
Creates a new invocation handler adapter for delegating invocations to an invocation handler that is stored
in a static field.
|
Modifier and Type | Method and Description |
---|---|
ByteCodeAppender |
appender(Implementation.Target implementationTarget)
Creates a byte code appender that determines the implementation of the instrumented type's methods.
|
boolean |
equals(Object other) |
int |
hashCode() |
InstrumentedType |
prepare(InstrumentedType instrumentedType)
During the preparation phase of an implementation, implementations are eligible to adding fields or methods
to the currently instrumented type.
|
String |
toString() |
Implementation |
withAssigner(Assigner assigner)
Configures an assigner to use with this invocation handler adapter.
|
InvocationHandlerAdapter.AssignerConfigurable |
withMethodCache()
By default, any
Method instance that is handed over to an
InvocationHandler is created on each invocation of the method. |
apply, of, of, toInstanceField
protected final InvocationHandler invocationHandler
protected ForStaticDelegation(String fieldName, boolean cacheMethods, Assigner assigner, InvocationHandler invocationHandler)
fieldName
- The name of the field.cacheMethods
- Determines if the Method
instances that are handed to the
intercepted methods are cached in static
fields.assigner
- The assigner to apply when defining this implementation.invocationHandler
- The invocation handler to which all method calls are delegated.public InvocationHandlerAdapter.AssignerConfigurable withMethodCache()
InvocationHandlerAdapter
Method
instance that is handed over to an
InvocationHandler
is created on each invocation of the method.
Method
look-ups are normally cached by its defining Class
what
makes a repeated look-up of a method little expensive. However, because Method
instances are mutable by their AccessibleObject
contact, any looked-up instance
needs to be copied by its defining Class
before exposing it. This can cause performance
deficits when a method is for example called repeatedly in a loop. By enabling the method cache, this
performance penalty can be avoided by caching a single Method
instance for
any intercepted method as a static
field in the instrumented type.withMethodCache
in class InvocationHandlerAdapter
Method
instance
in form of a static
field.public Implementation withAssigner(Assigner assigner)
InvocationHandlerAdapter.AssignerConfigurable
withAssigner
in interface InvocationHandlerAdapter.AssignerConfigurable
assigner
- The assigner to apply when defining this implementation.assigner
configured.public InstrumentedType prepare(InstrumentedType instrumentedType)
Implementation
ByteCodeAppender
that is emitted
on the call to
Implementation.appender(Implementation.Target)
call. On this method call, loaded type initializers can also be added to the instrumented type.prepare
in interface Implementation
instrumentedType
- The instrumented type that is the basis of the ongoing instrumentation.public ByteCodeAppender appender(Implementation.Target implementationTarget)
Implementation
appender
in interface Implementation
implementationTarget
- The target of the current implementation.Implementation.prepare(InstrumentedType)
.public boolean equals(Object other)
equals
in class InvocationHandlerAdapter
public int hashCode()
hashCode
in class InvocationHandlerAdapter
Copyright © 2014–2015. All rights reserved.