[cdi-dev] [JBoss JIRA] (CDI-701) Should addSterotype trigger discovery of new annotated types?
Guillermo González de Agüero (JIRA)
issues at jboss.org
Mon Apr 24 07:46:00 EDT 2017
[ https://issues.jboss.org/browse/CDI-701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13396997#comment-13396997 ]
Guillermo González de Agüero commented on CDI-701:
--------------------------------------------------
Thanks everyone for so fast respones!
[~manovotn] my original conclusion was exactly that (feature not supported by spec). Maybe the spec could incorporate a note regarding this, saying "Implementations are NOT MANDATED to treat stereotypes added by this method as bean defining annotations. Implementations are ALLOWED to do it in a non portable manner". That would clarify the situation and avoid confusions.
A way to add annotations to the set of "bean defining annotations" was what I was really looking for. I just wanted to clarify that the addStereotype() was not the way to go before creating a feature request. Has that been already discussed in the past?
> Should addSterotype trigger discovery of new annotated types?
> -------------------------------------------------------------
>
> Key: CDI-701
> URL: https://issues.jboss.org/browse/CDI-701
> Project: CDI Specification Issues
> Issue Type: Clarification
> Components: Portable Extensions
> Reporter: Guillermo González de Agüero
>
> I've tried to post this question to the mailing list multiple times without success, so I fill an issue for it.
> I'm adding some annotations as stereotypes via an extension, with the purpose of converting into beans any classes annotated with them (JAX-RS resources in my specific case). What I'm facing is that classes with that annotations are still only discovered if they were to be discovered before. So when using discovery-mode="annotated", my JAX-RS resources are not passed to the @ProcessAnnotatedType event.
> WildFly automatically converts JAX-RS resources into @RequestScoped CDI beans, but looking at the code I saw it does that dealing directly with Weld APIs at server level, not on a portable manner at RESTEasy level.
> I haven't found any mention in the spec that my approach wouldn't work, but the TCK doesn't address this usecase, which makes me think it's not supported.
> Could you please clarify me the situation? Could this me changed on a future version?
> And the original email I sent:
> {quote}
> Hi,
>
> I have a question about the behavior of the "BeforeBeanDiscovery#add*()" methods.
>
> My usecase is the following: I'd want to convert all JAX-RS resources into CDI beans. That resources are all annotated with @Path. My understanding was that converting that annotation into a stereotype would make them eligible as bean types.
>
> Since I can't modify that annotation, I just created an extension that observes the BeforeBeanDiscovery event and converts @Path into a stereotype associated with the @RequestScoped annotation. But it doesn't work, neither on Weld nor on OpenWebBeans. The class is not discovered on the next ProcessAnnotatedType event.
>
> I haven't found anything in the spec that explicitly says that a "runtime added" bean defining annotation makes clases eligible for discovery. But I think is makes sense.
>
> Checking the TCK, test org.jboss.cdi.tck.tests.extensions.stereotype.StereotypeExtensionTest tests that the addition of the stereotype works, but doesn't cover my case of adding a stereotype to a non bean class.
>
> Is this expected to work that way? Is a bug on the TCK and implementations? Any other way to achieve my goal?
>
>
> Regards,
> Guillermo González de Agüero
> {quote}
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)
More information about the cdi-dev
mailing list