Interface InterceptionFactory<T>
- 
- Type Parameters:
- T- type for which the wrapper is created
 
 public interface InterceptionFactory<T>InterceptionFactoryallows to create a wrapper instance whose method invocations are intercepted by method interceptors and forwarded to a provided instance.An implementation of InterceptionFactorymay be obtained by callingBeanManager.createInterceptionFactory(CreationalContext, Class)to be used in the create method of a custom bean for example.public class MyCustomBean implements Bean<MyClass> { BeanManager bm; public MyBean(BeanManager bm) { this.bm = bm; } public MyClass create(CreationalContext<MyClass> creationalContext) { InterceptionFactory<MyClass> factory = bm.createInterceptionFactory(creationalContext, MyClass.class); factory.configure().filterMethods(m -> m.getJavaMember().getName().equals("shouldBeTransactional")).findFirst() .ifPresent(m -> m.add(new AnnotationLiteral<Transactional>() { })); return factory.createInterceptedInstance(new MyClass()); } }The container must also provide a built-in bean with scope Dependent, bean typeInterceptionFactoryand qualifierDefaultthat can be injected in a producer method parameter.@Produces @RequestScoped public MyClass produceMyClass(InterceptionFactory<MyClass> factory) { factory.configure().add(new AnnotationLiteral<Transactional>() { }); return factory.createInterceptedInstance(new MyClass()); }Instances of this class are neither reusable nor suitable for sharing between threads. CDI Lite implementations are not required to provide support for InterceptionFactory.- Since:
- 2.0
- Author:
- Antoine Sabot-Durand
 
- 
- 
Method SummaryAll Methods Instance Methods Abstract Methods Modifier and Type Method Description AnnotatedTypeConfigurator<T>configure()Returns anAnnotatedTypeConfiguratorinitialized with theAnnotatedTypecreated either for the class passed toBeanManager.createInterceptionFactory(CreationalContext, Class)or derived from theInterceptionFactoryparameter injection point.TcreateInterceptedInstance(T instance)Returns a wrapper instance whose method invocations are intercepted by method interceptors and forwarded to a provided instance.InterceptionFactory<T>ignoreFinalMethods()Instructs the container to ignore all non-static, final methods with public, protected or default visibility declared by any class in the type hierarchy of the intercepted instance during invocation ofcreateInterceptedInstance(Object).
 
- 
- 
- 
Method Detail- 
ignoreFinalMethodsInterceptionFactory<T> ignoreFinalMethods() Instructs the container to ignore all non-static, final methods with public, protected or default visibility declared by any class in the type hierarchy of the intercepted instance during invocation ofcreateInterceptedInstance(Object).Ignored methods should never be invoked upon the wrapper instance created by createInterceptedInstance(Object). Otherwise, unpredictable behavior results.- Returns:
- self
 
 - 
configureAnnotatedTypeConfigurator<T> configure() Returns anAnnotatedTypeConfiguratorinitialized with theAnnotatedTypecreated either for the class passed toBeanManager.createInterceptionFactory(CreationalContext, Class)or derived from theInterceptionFactoryparameter injection point.The configurator allows to add or remove interceptor bindings used to associate interceptors with the wrapper instance returned by createInterceptedInstance(Object).Each call returns the same AnnotatedTypeConfigurator.- Returns:
- an AnnotatedTypeConfiguratorto configure interceptors bindings
 
 - 
createInterceptedInstanceT createInterceptedInstance(T instance) Returns a wrapper instance whose method invocations are intercepted by method interceptors and forwarded to a provided instance.This method should only be called once, subsequent calls will throw an IllegalStateException.If T is not proxyable as defined in section 3.11 of the spec an UnproxyableResolutionExceptionexception is thrown. CallingignoreFinalMethods()before this method can loosen these restrictions.If the provided instance is an internal container construct (such as client proxy), non-portable behavior results. - Parameters:
- instance- The provided instance
- Returns:
- a wrapper instance
 
 
- 
 
-