InterceptionFactory allows to create a wrapper instance whose method invocations are intercepted by method
interceptors and forwarded to a provided instance.
An implementation of InterceptionFactory may be obtained by calling
BeanManager#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 MyCustomBean(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 type InterceptionFactory and
qualifier Default that 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.
| Modifier and Type | Method and Description |
|---|---|
| public AnnotatedTypeConfigurator | Returns: anAnnotatedTypeConfigurator to configure interceptors bindingsReturns an |
| public T | Returns: a wrapper instanceThe provided instance instance)Returns a wrapper instance whose method invocations are intercepted by method interceptors and forwarded to a provided instance. |
| public InterceptionFactory | Returns: selfInstructs 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 of
|
| configure | back to summary |
|---|---|
| public AnnotatedTypeConfigurator Returns an
The configurator allows to add or remove interceptor bindings used to associate interceptors with the wrapper instance
returned by
Each call returns the same
| |
| createInterceptedInstance | back to summary |
|---|---|
| public T 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
If T is not proxyable as defined in section 3.11 of the spec an
If the provided instance is an internal container construct (such as client proxy), non-portable behavior results.
| |
| ignoreFinalMethods | back to summary |
|---|---|
| public InterceptionFactory 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 of
Ignored methods should never be invoked upon the wrapper instance created by
| |