org.aopalliance.intercept

## Interface ConstructorInterceptor

- All Superinterfaces:
    Advice, Interceptor

      public interface ConstructorInterceptor
      extends Interceptor

  Intercepts the construction of a new object.

  The user should implement the `construct(ConstructorInvocation)` method to modify the original behavior. E.g. the following class implements a singleton interceptor (allows only one unique instance for the intercepted class):

       class DebuggingInterceptor implements ConstructorInterceptor {
         Object instance=null;

         Object construct(ConstructorInvocation i) throws Throwable {
           if(instance==null) {
             return instance=i.proceed();
           } else {
             throw new Exception("singleton does not allow multiple instance");
           }
         }
       }

  Author:
    Rod Johnson

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `construct(ConstructorInvocation invocation)` Implement this method to perform extra treatments before and after the construction of a new object.

- - ### Method Detail

    - #### construct

          @Nonnull
          Object construct(ConstructorInvocation invocation)
                             throws Throwable

      Implement this method to perform extra treatments before and after the construction of a new object. Polite implementations would certainly like to invoke `Joinpoint.proceed()`.
      Parameters:
        `invocation` - the construction joinpoint
      Returns:
        the newly created object, which is also the result of the call to `Joinpoint.proceed()`; might be replaced by the interceptor
      Throws:
        `Throwable` - if the interceptors or the target object throws an exception