[
https://issues.jboss.org/browse/CDI-580?page=com.atlassian.jira.plugin.sy...
]
Antoine Sabot-Durand commented on CDI-580:
------------------------------------------
We discussed this feature during last F2F meeting. My suggestion was to introduce a
{{BeanInstanceBuilder}} interface to generate an unmanaged instance for a given
{{AnnotatedType}}.
This is inspired by the existing {{UnManaged}} helper class for injecting and calling
lifecycle callbacks unmanaged instances.
{{UnManaged}} only uses a class (containing @Inject, @PostConstruct and @Presdetroy
annotations) to create instances, {{BeanInstanceBuilder}} would use an {{AnnotatedType}}
allowing the use of a synthetic {{AnnotatedType}} containing annotations added by the user
like interceptor bindings or {{@Inject}} mentions not present in the original class.
We should forbid or ignore other annotations (scope, qualifier on class
This would allow applying interceptor on a produced class but also interceptor on method
in the produced class. And finally it could also be used to have interceptor on custom
beans.
Code would look like this
{code}
public class MyAdvancedProducerBean {
public BeanInstanceProducer<MyClass> bip = Builders.beanInstanceProducer();
@Produces
@RequestScoped
public MyClass produceTransactionalMyClass() {
AnnotatedTypeBuilder<MyClass> atb = Builders.annotatedType(Myclass.class)
.read(MyClass.class)
.addToType(new
TransactionalLiteral());
return
bip.read(atb.build()).inject().postConstruct().intercept().decorate().get(); // injection,
callbacks and proxies creation
}
public void disposeMyClass (@Disposes Myclass td) {
bip.dispose(td);
}
}
{code}
The important point is that BeanInstanceProducer is an interface so implementation will
use specific proxy feature of Weld or OWB.
wdyt?
Allow interceptors and decorators to be applied to the return value
of a producer method
----------------------------------------------------------------------------------------
Key: CDI-580
URL:
https://issues.jboss.org/browse/CDI-580
Project: CDI Specification Issues
Issue Type: Feature Request
Components: Beans
Affects Versions: 2.0-EDR1
Reporter: Mark Struberg
Currently the spec explicitly disallows to apply interceptors and decorators to
contextual instances created by producer fields and producer methods.
if you add an Interceptor annotation to a producer method then only the invocation of the
producermethod gets intercepted. The created Contextual Instance will remain a plain
object.
We should explore ways to allow this somehow.
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)