[cdi-dev] [JBoss JIRA] (CDI-271) Provide a way to inject Event metadata into an observer method

Arne Limburg (JIRA) jira-events at lists.jboss.org
Sun Jan 13 06:01:23 EST 2013


    [ https://issues.jboss.org/browse/CDI-271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12745526#comment-12745526 ] 

Arne Limburg commented on CDI-271:
----------------------------------

Later on we should also change
{quote}
The getType() and getQualifiers() methods return the required type and required qualifiers of the injection point. If
the injection point represents a dynamically obtained instance, the getType() and getQualifiers() methods should
return the required type (as defined by Instance.select()), and required qualifiers of the injection point including
any additional required qualifiers (as defined by Instance.select()).{quote}
to
{quote}
The getType() and getQualifiers() methods return the required type and required qualifiers of the injection point. If
the injection point represents a dynamically obtained instance or event, the getType() and getQualifiers() methods should
return the required type (as defined by Instance.select() and Event.select()), and required qualifiers of the injection point including any additional required qualifiers (as defined by Instance.select() and Event.select()).{quote}
                
> Provide a way to inject Event metadata into an observer method
> --------------------------------------------------------------
>
>                 Key: CDI-271
>                 URL: https://issues.jboss.org/browse/CDI-271
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Events
>            Reporter: Arne Limburg
>             Fix For: 1.1 (Proposed)
>
>
> Currently there is no way for observer methods to access the qualifiers of the fired event (i.e. to access @Nonbinding members).
> Consider the following example:
> {code}
> @Inject @MyQualifier
> Event<MyObject> event;
> public void fireEvent(MyObject object, MyTypeValue type) {
>     event.select(new MyTypeAnnotationLiteral(type)).fire(object);
> }
> {code}
> Currently no observer can receive the value of MyTypeValue. I suggest to introduce an interface AnnotatedEvent that extends Annotated and contains this information. It then could be injected via the InjectionPoint like this:
> {code}
> public void observeEvent(@Observes @MyType MyObject object, InjectionPoint ip) {
>     MyType annotation = ip.getAnnotated().getAnnotation(MyType.class);
>     MyTypeValue value = annotation.value();
>     ...
> }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the cdi-dev mailing list