[cdi-dev] [JBoss JIRA] (CDI-650) Introduce asynchronous event notification options

Emily Jiang (JIRA) issues at jboss.org
Wed Nov 23 10:26:00 EST 2016

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

Emily Jiang commented on CDI-650:

On event receiving side, how an user can get hold of this NotificationOption, which is an interface? Will this be part of observation such as EventMetaData? After getting hold of it, what the receiver is supposed to do?

> Introduce asynchronous event notification options
> -------------------------------------------------
>                 Key: CDI-650
>                 URL: https://issues.jboss.org/browse/CDI-650
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>            Reporter: Martin Kouba
>            Assignee: Martin Kouba
>             Fix For: 2.0 .Final
> Currently, it's only possible to provide a custom executor when firing an event asynchronously - see also {{javax.enterprise.event.Event.fireAsync(U, Executor)}}. It might be useful to provide other implementation-specific options, e.g. notification timeout.
> Therefore, I suggest to introduce {{NotificationOptions}} interface:
> {code:java}
> public interface NotificationOptions {
>     Executor getExecutor();
>     // Implementation-specific options
>     Object get(String optionName);
> }
> {code}
> and change the method signature to:
> {code:java}
> <U extends T> CompletionStage<U>  fireAsync(U event, NotificationOptions options);
> {code}
> In the future, if any implementation-specific configuration proves to be useful and worth standardizing, we may simply add a new method to {{NotificationOptions}}, e.g. 
> {code:java}
> Duration getTimeout();
> {code}
> instead of adding more and more params to {{Event.fireAsync()}}.
> We could also introduce some convenient static methods on {{NotificationOptions}}, e.g.:
> {code:java}
> void fireEvents(Event event, Executor executor) {
>     event.fireAsync(new Foo(), NotificationOptions.ofExecutor(executor));
> }
> {code}

This message was sent by Atlassian JIRA

More information about the cdi-dev mailing list