[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
Thu Sep 27 03:12:03 EDT 2012
[ https://issues.jboss.org/browse/CDI-271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12722162#comment-12722162 ]
Arne Limburg commented on CDI-271:
----------------------------------
Thinking about it, this needs to be applied to Producer-Methods of Instances, too:
{code}
@Inject @MyQualifier
Instance<MyObject> event;
public MyObject getInstance(MyTypeValue type) {
return instance.select(new MyTypeAnnotationLiteral(type)).get();
}
{code}
{code}
@Produces
@MyQualifier
@MyType
public MyObject getMyObject(InjectionPoint ip) {
MyType annotation = ip.getAnnotated().getAnnotation(MyType.class);
MyTypeValue value = annotation.value();
...
}
{code}
I see, if I can make it to the meeting next monday. Then we can discuss this further.
> 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
>
> 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