[ 
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)

Reply via email to