org.jboss.aop.joinpoint
Class MethodInvocationWrapper

java.lang.Object
  extended by org.jboss.aop.joinpoint.InvocationBase
      extended by org.jboss.aop.joinpoint.MethodInvocation
          extended by org.jboss.aop.joinpoint.MethodInvocationWrapper
All Implemented Interfaces:
Externalizable, Serializable, Invocation

public class MethodInvocationWrapper
extends MethodInvocation

This wrapper class allows you to insert a chain of interceptors into the middle of a call stack.

Version:
$Revision: 70849 $
Author:
Bill Burke
See Also:
Serialized Form

Field Summary
 
Fields inherited from class org.jboss.aop.joinpoint.MethodInvocation
advisedMethod, arguments, marshalledArguments, methodHash, unadvisedMethod
 
Fields inherited from class org.jboss.aop.joinpoint.InvocationBase
advisor, currentInterceptor, instanceResolver, interceptors, metadata, responseContextInfo, targetObject
 
Constructor Summary
MethodInvocationWrapper(MethodInvocation wrapped, Interceptor[] interceptors)
           
 
Method Summary
 void addResponseAttachment(Object key, Object val)
           
 Invocation copy()
          Copies complete state of Invocation object.
 Method getActualMethod()
           
 Advisor getAdvisor()
           
 Object[] getArguments()
          Returns a non-null array containing all method arguments.
 MetaDataResolver getInstanceResolver()
           
 SimpleMetaData getMetaData()
          Return all the contextual data attached to this invocation
 Object getMetaData(Object group, Object attr)
          This method resolves metadata based on the context of the invocation.
 Method getMethod()
           
 long getMethodHash()
           
 Object getResponseAttachment(Object key)
           
 Map<Object,Object> getResponseContextInfo()
           
 Object getTargetObject()
           
 Object invokeNext()
          Invoke on the next interceptor in the chain.
 void setArguments(Object[] args)
          Replaces method argument values by the ones contained in arguments.
 void setMetaData(SimpleMetaData data)
          Set all the contextual data attached to this invocation
 void setResponseContextInfo(Map<Object,Object> responseContextInfo)
           
 void setTargetObject(Object targetObject)
           
 
Methods inherited from class org.jboss.aop.joinpoint.MethodInvocation
getWrapper, handleErrors, invokeTarget, readExternal, resolveAnnotation, resolveAnnotation, resolveTypedAnnotation, resolveTypedAnnotation, toString, writeExternal
 
Methods inherited from class org.jboss.aop.joinpoint.InvocationBase
getCurrentInterceptor, getInterceptors, invokeNext, resolveClassAnnotation, resolveClassMetaData, resolveTypedClassAnnotation, setAdvisor, setInstanceResolver
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MethodInvocationWrapper

public MethodInvocationWrapper(MethodInvocation wrapped,
                               Interceptor[] interceptors)
Method Detail

getMetaData

public Object getMetaData(Object group,
                          Object attr)
Description copied from class: MethodInvocation
This method resolves metadata based on the context of the invocation. It iterates through its list of MetaDataResolvers to find out the value of the metadata desired.

This list usually is ThreadMetaData, InstanceAdvisor.getMetaData ClassAdvisor.getMethodMetaData (or field, or constructor) ClassAdvisor.getDefaultMetaData

Specified by:
getMetaData in interface Invocation
Overrides:
getMetaData in class MethodInvocation

invokeNext

public Object invokeNext()
                  throws Throwable
Description copied from class: MethodInvocation
Invoke on the next interceptor in the chain. If this is already the end of the chain, reflection will call the constructor, field, or method you are invoking on.

Specified by:
invokeNext in interface Invocation
Overrides:
invokeNext in class MethodInvocation
Throws:
Throwable

getInstanceResolver

public MetaDataResolver getInstanceResolver()
Overrides:
getInstanceResolver in class InvocationBase

getArguments

public Object[] getArguments()
Description copied from class: MethodInvocation
Returns a non-null array containing all method arguments.

The returned array can be changed by the advice or interceptor accordingly. All changes are reflected on joinpoint execution, and are noticed as well by other advices and interceptors that are executed after the current one.
However, changes to this array are limited to the scope of current advice execution, and must be performed before execution of MethodInvocation.invokeNext(), InvocationBase.invokeNext(Interceptor[]), or MethodInvocation.invokeTarget() method. Otherwise, inconsistency on joinpoint argument values may be noticed.

Overrides:
getArguments in class MethodInvocation
Returns:
the method arguments

setArguments

public void setArguments(Object[] args)
Description copied from class: MethodInvocation
Replaces method argument values by the ones contained in arguments.

Advices and interceptors must be aware that, for performance reasons, this array does not get copied across; its reference is directly used instead. Hence, changes to arguments array after this method being called are forbidden. Otherwise, inconsistency on joinpoint argument values may be noticed.

Overrides:
setArguments in class MethodInvocation
Parameters:
args - a non-null array containing the new values of method arguments. The size of this array must be the same as the one of MethodInvocation.getArguments(), as well as the element types.

getTargetObject

public Object getTargetObject()
Specified by:
getTargetObject in interface Invocation
Overrides:
getTargetObject in class InvocationBase

copy

public Invocation copy()
Description copied from class: MethodInvocation
Copies complete state of Invocation object.

Specified by:
copy in interface Invocation
Overrides:
copy in class MethodInvocation
Returns:
a copy of this instance

getMethod

public Method getMethod()
Overrides:
getMethod in class MethodInvocation

getActualMethod

public Method getActualMethod()
Overrides:
getActualMethod in class MethodInvocation

getMethodHash

public long getMethodHash()
Overrides:
getMethodHash in class MethodInvocation

getAdvisor

public Advisor getAdvisor()
Specified by:
getAdvisor in interface Invocation
Overrides:
getAdvisor in class MethodInvocation

getResponseContextInfo

public Map<Object,Object> getResponseContextInfo()
Specified by:
getResponseContextInfo in interface Invocation
Overrides:
getResponseContextInfo in class InvocationBase

setResponseContextInfo

public void setResponseContextInfo(Map<Object,Object> responseContextInfo)
Specified by:
setResponseContextInfo in interface Invocation
Overrides:
setResponseContextInfo in class InvocationBase

getResponseAttachment

public Object getResponseAttachment(Object key)
Specified by:
getResponseAttachment in interface Invocation
Overrides:
getResponseAttachment in class InvocationBase

addResponseAttachment

public void addResponseAttachment(Object key,
                                  Object val)
Specified by:
addResponseAttachment in interface Invocation
Overrides:
addResponseAttachment in class InvocationBase

getMetaData

public SimpleMetaData getMetaData()
Description copied from class: InvocationBase
Return all the contextual data attached to this invocation

Specified by:
getMetaData in interface Invocation
Overrides:
getMetaData in class InvocationBase

setMetaData

public void setMetaData(SimpleMetaData data)
Description copied from class: InvocationBase
Set all the contextual data attached to this invocation

Specified by:
setMetaData in interface Invocation
Overrides:
setMetaData in class InvocationBase

setTargetObject

public void setTargetObject(Object targetObject)
Specified by:
setTargetObject in interface Invocation
Overrides:
setTargetObject in class InvocationBase


Copyright © 2008 JBoss, a division of Red Hat, Inc.. All Rights Reserved.