|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.aop.framework.ReflectiveMethodInvocation
public class ReflectiveMethodInvocation
Spring's implementation of the AOP Alliance
MethodInvocation
interface,
implementing the extended
ProxyMethodInvocation
interface.
Invokes the target object using reflection. Subclasses can override the
invokeJoinpoint()
method to change this behavior, so this is also
a useful base class for more specialized MethodInvocation implementations.
It is possible to clone an invocation, to invoke proceed()
repeatedly (once per clone), using the invocableClone()
method.
It is also possible to attach custom attributes to the invocation,
using the setUserAttribute(java.lang.String, java.lang.Object)
/ getUserAttribute(java.lang.String)
methods.
NOTE: This class is considered internal and should not be
directly accessed. The sole reason for it being public is compatibility
with existing framework integrations (e.g. Pitchfork). For any other
purposes, use the ProxyMethodInvocation
interface instead.
invokeJoinpoint()
,
proceed()
,
invocableClone()
,
setUserAttribute(java.lang.String, java.lang.Object)
,
getUserAttribute(java.lang.String)
Field Summary | |
---|---|
protected Object[] |
arguments
|
protected List |
interceptorsAndDynamicMethodMatchers
List of MethodInterceptor and InterceptorAndDynamicMethodMatcher that need dynamic checks. |
protected Method |
method
|
protected Object |
proxy
|
protected Object |
target
|
Constructor Summary | |
---|---|
protected |
ReflectiveMethodInvocation(Object proxy,
Object target,
Method method,
Object[] arguments,
Class targetClass,
List interceptorsAndDynamicMethodMatchers)
Construct a new ReflectiveMethodInvocation with the given arguments. |
Method Summary | |
---|---|
Object[] |
getArguments()
|
Method |
getMethod()
Return the method invoked on the proxied interface. |
Object |
getProxy()
Return the proxy that this method invocation was made through. |
AccessibleObject |
getStaticPart()
|
Object |
getThis()
|
Object |
getUserAttribute(String key)
Return the value of the specified user attribute. |
Map |
getUserAttributes()
Return user attributes associated with this invocation. |
MethodInvocation |
invocableClone()
This implementation returns a shallow copy of this invocation object, including an independent copy of the original arguments array. |
MethodInvocation |
invocableClone(Object[] arguments)
This implementation returns a shallow copy of this invocation object, using the given arguments array for the clone. |
protected Object |
invokeJoinpoint()
Invoke the joinpoint using reflection. |
Object |
proceed()
|
void |
setArguments(Object[] arguments)
Set the arguments to be used on subsequent invocations in the any advice in this chain. |
void |
setUserAttribute(String key,
Object value)
Add the specified user attribute with the given value to this invocation. |
String |
toString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected final Object proxy
protected final Object target
protected final Method method
protected Object[] arguments
protected final List interceptorsAndDynamicMethodMatchers
Constructor Detail |
---|
protected ReflectiveMethodInvocation(Object proxy, Object target, Method method, Object[] arguments, Class targetClass, List interceptorsAndDynamicMethodMatchers)
proxy
- the proxy object that the invocation was made ontarget
- the target object to invokemethod
- the method to invokearguments
- the arguments to invoke the method withtargetClass
- the target class, for MethodMatcher invocationsinterceptorsAndDynamicMethodMatchers
- interceptors that should be applied,
along with any InterceptorAndDynamicMethodMatchers that need evaluation at runtime.
MethodMatchers included in this struct must already have been found to have matched
as far as was possibly statically. Passing an array might be about 10% faster,
but would complicate the code. And it would work only for static pointcuts.Method Detail |
---|
public final Object getProxy()
ProxyMethodInvocation
getProxy
in interface ProxyMethodInvocation
public final Object getThis()
getThis
in interface Joinpoint
public final AccessibleObject getStaticPart()
getStaticPart
in interface Joinpoint
public final Method getMethod()
getMethod
in interface MethodInvocation
public final Object[] getArguments()
getArguments
in interface Invocation
public void setArguments(Object[] arguments)
ProxyMethodInvocation
setArguments
in interface ProxyMethodInvocation
arguments
- the argument arraypublic Object proceed() throws Throwable
proceed
in interface Joinpoint
Throwable
protected Object invokeJoinpoint() throws Throwable
Throwable
- if invoking the joinpoint resulted in an exceptionpublic MethodInvocation invocableClone()
We want a shallow copy in this case: We want to use the same interceptor chain and other object references, but we want an independent value for the current interceptor index.
invocableClone
in interface ProxyMethodInvocation
proceed()
can be called once per clone.Object.clone()
public MethodInvocation invocableClone(Object[] arguments)
We want a shallow copy in this case: We want to use the same interceptor chain and other object references, but we want an independent value for the current interceptor index.
invocableClone
in interface ProxyMethodInvocation
arguments
- the arguments that the cloned invocation is supposed to use,
overriding the original arguments
proceed()
can be called once per clone.Object.clone()
public void setUserAttribute(String key, Object value)
ProxyMethodInvocation
Such attributes are not used within the AOP framework itself. They are just kept as part of the invocation object, for use in special interceptors.
setUserAttribute
in interface ProxyMethodInvocation
key
- the name of the attributevalue
- the value of the attribute, or null
to reset itpublic Object getUserAttribute(String key)
ProxyMethodInvocation
getUserAttribute
in interface ProxyMethodInvocation
key
- the name of the attribute
null
if not setProxyMethodInvocation.setUserAttribute(java.lang.String, java.lang.Object)
public Map getUserAttributes()
This map is initialized lazily and is not used in the AOP framework itself.
null
)public String toString()
toString
in class Object
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |