[ https://issues.apache.org/jira/browse/OWB-1004?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14128735#comment-14128735 ]
Antonin Stefanutti commented on OWB-1004: ----------------------------------------- Unfortunately, quoting ยง[Qualifier annotations with members|http://docs.jboss.org/cdi/spec/1.2/cdi-spec.html#qualifier_annotation_members] from the CDI specification: {quote} Array-valued or annotation-valued members of a qualifier type should be annotated @Nonbinding in a portable application. If an array-valued or annotation-valued member of a qualifier type is not annotated @Nonbinding, non-portable behavior results. {quote} >From my understanding, the bean metadata that can be manipulated with the CDI >SPI are more a logical abstraction than something physically coupled to the >Java language in the sense that it does not percolate into the Java bytecode. >That's more the other way around. That being said, I understand that ideally there should be a 1 to 1 match. Unfortunately the quote above just breaks it and I don't see any other way to implement that approach (referred to as the second approach in my first comment) which IMO is a lot more powerful and elegant than the first approach in quite a number of use cases. > Enable repeatable qualifiers with binding attributes > ---------------------------------------------------- > > Key: OWB-1004 > URL: https://issues.apache.org/jira/browse/OWB-1004 > Project: OpenWebBeans > Issue Type: Improvement > Components: Core > Affects Versions: 2.0.0 > Reporter: Antonin Stefanutti > > While having multiple annotations of the same type declared on a member or > type is not permitted in the Java language prior to Java 8, the CDI > specification does not set any particular restriction in its SPI that enables > to alter bean metadata, e.g. in {{Annotated.getAnnotations()}} and > {{BeanAttributes.getQualifiers()}}, in a way to add multiple annotations of > the same type. > Having multiple CDI qualifiers of the same type can prove to be useful when > this type declares binding attributes. > Unfortunately, in such situation, the following exception is thrown by OWB > version 2.0-SNASHOT: > {code} > javax.enterprise.inject.spi.DefinitionException: > java.lang.IllegalArgumentException: Manager.resolveDecorators() method > parameter qualifiers array argument can not define duplicate qualifier > annotation with name : @org.apache.camel.cdi.ContextName > at > org.apache.webbeans.config.BeansDeployer.deploy(BeansDeployer.java:284) > at > org.apache.webbeans.lifecycle.AbstractLifeCycle.bootstrapApplication(AbstractLifeCycle.java:138) > at > org.apache.webbeans.lifecycle.AbstractLifeCycle.startApplication(AbstractLifeCycle.java:104) > at > org.apache.webbeans.arquillian.standalone.OwbStandaloneContainer.deploy(OwbStandaloneContainer.java:122) > {code} > IMO, preventing the ability to add multiple annotations of the same type via > the CDI SPI restricts powerful use cases (I can share more details on these > use cases if needed). Last but not least, having this ability built-in in the > Java 8 language is another incentive to provide that support. -- This message was sent by Atlassian JIRA (v6.3.4#6332)