[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 Jun 5 09:02:01 EDT 2017
[ https://issues.jboss.org/browse/CDI-701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13416270#comment-13416270 ]
Guillermo González de Agüero commented on CDI-701:
FYI, the JAX-RS expert group is now discussing ways to improve CDI integration and I think this issue or something like it could help there: https://javaee.groups.io/g/jaxrs-spec/topic/cdi_integration/5113885?p=,,,20,0,0,0::recentpostdate%2Fsticky,,,20,2,0,5113885
> 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
> Fix For: 2.1 (Discussion)
> 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:
> 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?
> Guillermo González de Agüero
This message was sent by Atlassian JIRA
More information about the cdi-dev