org.jboss.aop.joinpoint
Class ConstructionInvocation

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

public class ConstructionInvocation
extends InvocationBase

This is a helper wrapper class for an Invocation object. It is used to add or get values or metadata that pertains to an AOP Constructor interception.

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

Field Summary
protected  Object[] arguments
           
protected  Constructor<?> constructor
           
 
Fields inherited from class org.jboss.aop.joinpoint.InvocationBase
advisor, currentInterceptor, instanceResolver, interceptors, metadata, responseContextInfo, targetObject
 
Constructor Summary
ConstructionInvocation(ConstructionInfo info, Interceptor[] interceptors)
           
ConstructionInvocation(Interceptor[] interceptors, Constructor<?> con)
           
ConstructionInvocation(Interceptor[] interceptors, Constructor<?> con, Object[] args)
           
 
Method Summary
 Invocation copy()
          Copies complete state of Invocation object.
 Object[] getArguments()
          Returns a non-null array containing all constructor arguments.
 Constructor<?> getConstructor()
           
 Object getMetaData(Object group, Object attr)
          This method resolves metadata based on the context of the invocation.
 Invocation getWrapper(Interceptor[] newchain)
          Returns a wrapper invocation object that can insert a new chain of interceptors at runtime to the invocation flow.
 Object invokeNext()
          Invoke on the next interceptor in the chain.
 Object invokeTarget()
          Invokes the target joinpoint for this invocation skipping any subsequent interceptors in the chain.
 Object resolveAnnotation(Class<? extends Annotation> annotation)
          This method resolves an annotation based on the context of the invocation.
<T extends Annotation>
T
resolveTypedAnnotation(Class<T> annotation)
          Abstraction for resolving an annotation so that it can be overriden from the Method, Constructor, Field, etc.
 void setArguments(Object[] arguments)
          Replaces constructor argument values by the ones contained in arguments.
 void setConstructor(Constructor<?> constructor)
           
 
Methods inherited from class org.jboss.aop.joinpoint.InvocationBase
addResponseAttachment, getAdvisor, getCurrentInterceptor, getInstanceResolver, getInterceptors, getMetaData, getResponseAttachment, getResponseContextInfo, getTargetObject, invokeNext, resolveAnnotation, resolveClassAnnotation, resolveClassMetaData, resolveTypedAnnotation, resolveTypedClassAnnotation, setAdvisor, setInstanceResolver, setMetaData, setResponseContextInfo, setTargetObject
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

arguments

protected Object[] arguments

constructor

protected transient Constructor<?> constructor
Constructor Detail

ConstructionInvocation

public ConstructionInvocation(Interceptor[] interceptors,
                              Constructor<?> con,
                              Object[] args)

ConstructionInvocation

public ConstructionInvocation(Interceptor[] interceptors,
                              Constructor<?> con)

ConstructionInvocation

public ConstructionInvocation(ConstructionInfo info,
                              Interceptor[] interceptors)
Method Detail

invokeNext

public Object invokeNext()
                  throws Throwable
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 InvocationBase
Throws:
Throwable

invokeTarget

public Object invokeTarget()
                    throws Throwable
Invokes the target joinpoint for this invocation skipping any subsequent interceptors in the chain.

Specified by:
invokeTarget in interface Invocation
Overrides:
invokeTarget in class InvocationBase
Throws:
Throwable

resolveAnnotation

public Object resolveAnnotation(Class<? extends Annotation> annotation)
This method resolves an annotation based on the context of the invocation.

Specified by:
resolveAnnotation in interface Invocation
Overrides:
resolveAnnotation in class InvocationBase
Returns:

resolveTypedAnnotation

public <T extends Annotation> T resolveTypedAnnotation(Class<T> annotation)
Description copied from interface: Invocation
Abstraction for resolving an annotation so that it can be overriden from the Method, Constructor, Field, etc.

Specified by:
resolveTypedAnnotation in interface Invocation
Overrides:
resolveTypedAnnotation in class InvocationBase
Returns:

getMetaData

public Object getMetaData(Object group,
                          Object attr)
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 InvocationBase

getWrapper

public Invocation getWrapper(Interceptor[] newchain)
Returns a wrapper invocation object that can insert a new chain of interceptors at runtime to the invocation flow. CFlow makes use of this. When the wrapper object finishes its invocation chain it delegates back to the wrapped invocation.

Parameters:
newchain - chain of interceptors to be inserted on invocation
Returns:
an invocation wrapper

copy

public Invocation copy()
Copies complete state of Invocation object.

Returns:
an copy of this instance

getArguments

public Object[] getArguments()
Returns a non-null array containing all constructor arguments.

The returned array can be changed by the advice or interceptor accordingly. All changes will be noticed by construction 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 invokeNext(), InvocationBase.invokeNext(Interceptor[]), or invokeTarget() method. Otherwise, inconsistency on joinpoint argument values may be noticed.

Returns:
the constructor arguments

setArguments

public void setArguments(Object[] arguments)
Replaces constructor argument values by the ones contained in arguments. Since this invocation is executed after construction, the changes performed on arguments will not be applied on the construction itself. However, these changes will be noticeable to all subsequent construction advices.

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.

Parameters:
arguments - a non-null array containing the new values of constructor arguments. The size of this array must be the same as the one of getArguments(), as well as the element types.

getConstructor

public Constructor<?> getConstructor()

setConstructor

public void setConstructor(Constructor<?> constructor)


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