[cdi-dev] [JBoss JIRA] (CDI-248) Provide means to observe a group of qualified events ("Qualifier Inheritance"?)

Antoine Sabot-Durand (JIRA) issues at jboss.org
Sun Oct 9 22:33:00 EDT 2016


     [ https://issues.jboss.org/browse/CDI-248?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Antoine Sabot-Durand updated CDI-248:
-------------------------------------
    Fix Version/s: TBD
                       (was: 2.0 (discussion))


> Provide means to observe a group of qualified events ("Qualifier Inheritance"?) 
> --------------------------------------------------------------------------------
>
>                 Key: CDI-248
>                 URL: https://issues.jboss.org/browse/CDI-248
>             Project: CDI Specification Issues
>          Issue Type: Feature Request
>          Components: Concepts, Events
>            Reporter: Jens Schumann
>             Fix For: TBD
>
>
> We have been using CDI events for application development quite extensively. For instance we use events to propagate entity lifecycle events (@Created/@Updated/@Deleted Customer customer) or GUI selections (@Selected/@Deselected Customer customer) and implement related business logic in event observers. (e.g. send email for newly created customers, clear cached values on select/deselect/create/update/delete ...).
> This works quite well, however we have noticed that especially our JSF Presentation Tier contains lots of observer methods implementing the same behavior for a group of related CDI events. 
> Example:
> {code}
> public class XyzBean {
>  public void onCustomerCreate(@Observes @Created Customer customer) { reset();} 
>  public void onCustomerUpdate(@Observes @Updated Customer customer) { reset();} 
>  public void onCustomerDelete(@Observes @Deleted Customer customer) { reset();}
>  
> }
> {code}
> Looks ugly, doesn't it? 
> The above example could be improved if CDI would be able to observe a group of qualified events, e.g. public void onCustomerLifeCycleEvent(@Observes @LifeCycleChange Customer customer) { reset(); } - ignore method and qualifier names for now.
> Since Java does not support annotation inheritance grouping could be achieved using "qualified qualifier annotations": 
> {code}
> @Qualifier
> public @interface LifeCycleChange
> @Qualifier
> @LifeCycleChange
> public @interface Created
> @Qualifier
> @LifeCycleChange
> public @interface Updated
> @Qualifier
> @LifeCycleChange
> public @interface Deleted
> @Qualifier
> public @interface SelectionChange
> @Qualifier
> @SelectionChange
> public @interface Selected
> @Qualifier
> @SelectionChange
> public @interface Deselected
> {code}
> WDYT? Side effects? Problems? 



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the cdi-dev mailing list