Package org.aopalliance.intercept

# Interface MethodInterceptor

All Superinterfaces:
  `Advice`, `Interceptor`

All Known Subinterfaces:
  `IntroductionInterceptor`

All Known Implementing Classes:
  `AbstractMonitoringInterceptor`, `AbstractTraceInterceptor`, `AfterReturningAdviceInterceptor`, `AspectJAfterAdvice`, `AspectJAfterThrowingAdvice`, `AspectJAroundAdvice`, `AsyncExecutionInterceptor`, `ConcurrencyThrottleInterceptor`, `CustomizableTraceInterceptor`, `DebugInterceptor`, `DelegatePerTargetObjectIntroductionInterceptor`, `DelegatingIntroductionInterceptor`, `ExposeInvocationInterceptor`, `MethodBeforeAdviceInterceptor`, `PerformanceMonitorInterceptor`, `SimpleTraceInterceptor`, `ThrowsAdviceInterceptor`

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

@FunctionalInterface public interface MethodInterceptor extends Interceptor
Intercepts calls on an interface on its way to the target. These are nested "on top" of the target.

The user should implement the `invoke(MethodInvocation)` method to modify the original behavior. For example, the following class implements a tracing interceptor (traces all the calls on the intercepted method(s)):

     class TracingInterceptor implements MethodInterceptor {
       Object invoke(MethodInvocation i) throws Throwable {
         System.out.println("method "+i.getMethod()+" is called on "+
                            i.getThis()+" with args "+i.getArguments());
         Object ret=i.proceed();
         System.out.println("method "+i.getMethod()+" returns "+ret);
         return ret;
       }
     }

Author:
  Rod Johnson

## Method Summary

Modifier and Type
Method
Description
`Object`
`invoke(MethodInvocation invocation)`
Implement this method to perform extra treatments before and after the invocation.

## Method Details

### invoke

@Nullable Object invoke(@Nonnull MethodInvocation invocation) throws Throwable
Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke `Joinpoint.proceed()`.

Parameters:
  `invocation` - the method invocation joinpoint
Returns:
  the result of the call to `Joinpoint.proceed()`; might be intercepted by the interceptor
Throws:
  `Throwable` - if the interceptors or the target object throws an exception