Package groovy.lang

## Interface Interceptor

- All Known Subinterfaces:
    `PropertyAccessInterceptor`
  All Known Implementing Classes:
    `BenchmarkInterceptor`, `TracingInterceptor`

      public interface Interceptor

  Implementers of this interface can be registered in the ProxyMetaClass for notifications about method calls for objects managed by the ProxyMetaClass. See groovy/lang/InterceptorTest.groovy for details.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.Object` | `afterInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments, java.lang.Object result)` | This code is executed after the method is optionally called.
    `java.lang.Object` | `beforeInvoke​(java.lang.Object object, java.lang.String methodName, java.lang.Object[] arguments)` | This code is executed before the method is optionally called.
    `boolean` | `doInvoke()` |

- - ### Method Detail

    - #### beforeInvoke

          java.lang.Object beforeInvoke​(java.lang.Object object,
                                        java.lang.String methodName,
                                        java.lang.Object[] arguments)

      This code is executed before the method is optionally called.
      Parameters:
        `object` - receiver object for the method call
        `methodName` - name of the method to call
        `arguments` - arguments to the method call
      Returns:
        any arbitrary result that replaces the result of the original method call only if doInvoke() returns false and afterInvoke() relays this result.

    - #### afterInvoke

          java.lang.Object afterInvoke​(java.lang.Object object,
                                       java.lang.String methodName,
                                       java.lang.Object[] arguments,
                                       java.lang.Object result)

      This code is executed after the method is optionally called.
      Parameters:
        `object` - receiver object for the called method
        `methodName` - name of the called method
        `arguments` - arguments to the called method
        `result` - result of the executed method call or result of beforeInvoke if method was not called
      Returns:
        any arbitrary result that can replace the result of the original method call. Typically, the result parameter is returned.

    - #### doInvoke

          boolean doInvoke()

      Returns:
        whether the target method should be invoked at all.