[cdi-dev] Fwd: [jsr345-experts] AroundConstruct interceptor

Pete Muir pmuir at redhat.com
Fri Feb 8 10:36:48 EST 2013


FYI

Begin forwarded message:

> From: Marina Vatkina <marina.vatkina at oracle.com>
> Subject: [jsr345-experts] AroundConstruct interceptor
> Date: 5 February 2013 13:41:01 EST
> To: jsr345-experts at ejb-spec.java.net, users at interceptors-spec.java.net, Pete Muir <pmuir at redhat.com>, Emmanuel Bernard <emmanuel at hibernate.org>
> 
> This is the extended description of the proposal:
> 
> 1. AroundConsruct interceptor
> 
> The AroundConstruct annotation denotes lifecycle callback interceptor methods that interpose on invocation of the target instance constructor.
> 
> The AroundConstruct interceptor methods may be only defined on interceptor classes and/or superclasses of interceptor classes.
> 
> When the AroundConstruct lifecycle callback, if any, is invoked the following rules apply:
>    * The AroundConstruct lifecycle callback is invoked after the dependency injection has been completed on the interceptor instance. Injection of the target component into interceptor instances that are invoked during the AroundConstruct lifecycle callback, is not supported.
>    * The target instance is created and its constructor injection is performed, if any, when the last interceptor method in the AroundConstruct interceptor chain invokes the InvocationContext.proceed method.
>    * The AroundConstruct interceptor method can access the constructed instance using InvocationContext.getTarget method after the InvocationContext.proceed completes.
>    * An AroundConstruct lifecycle callback interceptor method should not invoke any business methods of the target instance.
>    * The dependency injection on the target instance is not completed until after invocation of all interceptor methods in the AroundConstruct interceptor chain complete successfully.
>    * The PostConstruct lifecycle callback, if any, is invoked after the dependency injection has been completed on the target instance.
> 
> If the AroundConstruct lifecycle callback is not associated with the target instance, all interceptor methods, including PostConstruct callbacks, if any, are invoked after dependency injection has been completed on both, the interceptor instances and the target instance.
> 
> 
> 2. Extending InvocationContext interface
> 
> a) The InvocationContext interface will be extended with the getConstructor method:
> 
>    public Constructor getConstructor();
> 
> The getConstructor method returns the constructor of the target class for which the AroundConstruct interceptor was invoked. For around-invoke, around-timeout and all other lifecycle callback interceptor methods, getConstructor returns null.
> 
> 
> b) The getTarget method description will be modified as follows:
> 
> The getTarget method returns the associated target instance; for the AroundConstruct lifecycle callback interceptor method, getTarget returns null if called before proceed method returns.
> 
> c) No changes are required for the getMethod and getTimer methods of the InvocationContext as they are already required to return null for lifecycle callback interceptor methods
> 
> Best,
> -marina
> 
> 




More information about the cdi-dev mailing list