Package org.aopalliance.intercept

# Interface Joinpoint

All Known Subinterfaces:
  `ConstructorInvocation`, `Invocation`, `MethodInvocation`, `ProxyMethodInvocation`

All Known Implementing Classes:
  `ReflectiveMethodInvocation`

public interface Joinpoint
This interface represents a generic runtime joinpoint (in the AOP terminology).

A runtime joinpoint is an event that occurs on a static joinpoint (i.e. a location in a program). For instance, an invocation is the runtime joinpoint on a method (static joinpoint). The static part of a given joinpoint can be generically retrieved using the `getStaticPart()` method.

In the context of an interception framework, a runtime joinpoint is then the reification of an access to an accessible object (a method, a constructor, a field), i.e. the static part of the joinpoint. It is passed to the interceptors that are installed on the static joinpoint.

Author:
  Rod Johnson
See Also:
  - `Interceptor`

## Method Summary

Modifier and Type
Method
Description
`AccessibleObject`
`getStaticPart()`
Return the static part of this joinpoint.
`Object`
`getThis()`
Return the object that holds the current joinpoint's static part.
`Object`
`proceed()`
Proceed to the next interceptor in the chain.

## Method Details

### proceed

@Nullable Object proceed() throws Throwable
Proceed to the next interceptor in the chain.

The implementation and the semantics of this method depends on the actual joinpoint type (see the children interfaces).

Returns:
  see the children interfaces' proceed definition
Throws:
  `Throwable` - if the joinpoint throws an exception

### getThis

@Nullable Object getThis()
Return the object that holds the current joinpoint's static part.

For instance, the target object for an invocation.

Returns:
  the object (can be null if the accessible object is static)

### getStaticPart

@Nonnull AccessibleObject getStaticPart()
Return the static part of this joinpoint.

The static part is an accessible object on which a chain of interceptors is installed.