org.aspectj.lang

## Interface ProceedingJoinPoint

All Superinterfaces:
  JoinPoint

    public interface ProceedingJoinPoint
    extends JoinPoint

ProceedingJoinPoint exposes the proceed(..) method in order to support around advice in @AJ aspects

Author:
  Alexandre Vasseur

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.aspectj.lang.JoinPoint

`JoinPoint.EnclosingStaticPart, JoinPoint.StaticPart`

### Field Summary

### Fields inherited from interface org.aspectj.lang.JoinPoint

`ADVICE_EXECUTION, CONSTRUCTOR_CALL, CONSTRUCTOR_EXECUTION, EXCEPTION_HANDLER, FIELD_GET, FIELD_SET, INITIALIZATION, METHOD_CALL, METHOD_EXECUTION, PREINITIALIZATION, STATICINITIALIZATION, SYNCHRONIZATION_LOCK, SYNCHRONIZATION_UNLOCK`

### Method Summary

All Methods Instance Methods Abstract Methods
`java.lang.Object` `proceed()` Proceed with the next advice or target method invocation
`java.lang.Object` `proceed(java.lang.Object[] args)` Proceed with the next advice or target method invocation
`void` `set$AroundClosure(org.aspectj.runtime.internal.AroundClosure arc)` The joinpoint needs to know about its closure so that proceed can delegate to closure.run() This internal method should not be called directly, and won't be visible to the end-user when packed in a jar (synthetic method)

### Methods inherited from interface org.aspectj.lang.JoinPoint

`getArgs, getKind, getSignature, getSourceLocation, getStaticPart, getTarget, getThis, toLongString, toShortString, toString`

### Method Detail

#### set$AroundClosure

    void set$AroundClosure(org.aspectj.runtime.internal.AroundClosure arc)

The joinpoint needs to know about its closure so that proceed can delegate to closure.run()

This internal method should not be called directly, and won't be visible to the end-user when packed in a jar (synthetic method)

Parameters:
  `arc` -

#### proceed

    java.lang.Object proceed()
                      throws java.lang.Throwable

Proceed with the next advice or target method invocation

Returns:
Throws:
  `java.lang.Throwable`

#### proceed

    java.lang.Object proceed(java.lang.Object[] args)
                      throws java.lang.Throwable

Proceed with the next advice or target method invocation

Unlike code style, proceed(..) in annotation style places different requirements on the parameters passed to it. The proceed(..) call takes, in this order:

- If 'this()' was used in the pointcut for binding, it must be passed first in proceed(..).
- If 'target()' was used in the pointcut for binding, it must be passed next in proceed(..) - it will be the first argument to proceed(..) if this() was not used for binding.
- Finally come all the arguments expected at the join point, in the order they are supplied at the join point. Effectively the advice signature is ignored - it doesn't matter if a subset of arguments were bound or the ordering was changed in the advice signature, the proceed(..) calls takes all of them in the right order for the join point.

Since proceed(..) in this case takes an Object array, AspectJ cannot do as much compile time checking as it can for code style. If the rules above aren't obeyed then it will unfortunately manifest as a runtime error.

Parameters:
  `args` -
Returns:
Throws:
  `java.lang.Throwable`