Uploaded image for project: 'CDI Specification Issues'
  1. CDI Specification Issues
  2. CDI-248

Provide means to observe a group of qualified events ("Qualifier Inheritance"?)

    Details

    • Type: Feature Request
    • Status: Open (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: TBD
    • Component/s: Concepts, Events
    • Labels:
      None

      Description

      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:

      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();}
       
      }
      

      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":

      @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
      

      WDYT? Side effects? Problems?

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                french_c Jens Schumann
              • Votes:
                0 Vote for this issue
                Watchers:
                5 Start watching this issue

                Dates

                • Created:
                  Updated: