There are some downsides to reference based approaches as well.

    A.class:   public void observe(final @Observes SimpleEvent event)
    Z.class:   public void observe(final @Observes(after=A.class) SimpleEvent 
event)

If you later want to add B.class or C.class in the middle between A and Z, you 
can't.

As well you can't really express things like "low priority" and "high priority"

    EventLogger.class:   public void observe(final @Observes(priority=1) Object 
event)


On Mar 21, 2014, at 12:08 PM, Romain Manni-Bucau <rmannibu...@gmail.com> wrote:

> -1 to index, it is what is in deltaspike, spec etc and it doesn't work
> by design (see the spec already defined constants). For such an
> internal thing we know where we want to bind our event so I still
> think referencing the event is better.
> 
> Always better to say where you want to be than saying "i want to be
> here...almost" which is the index case.
> Romain Manni-Bucau
> Twitter: @rmannibucau
> Blog: http://rmannibucau.wordpress.com/
> LinkedIn: http://fr.linkedin.com/in/rmannibucau
> Github: https://github.com/rmannibucau
> 
> 
> 
> 2014-03-21 20:02 GMT+01:00 David Blevins <david.blev...@gmail.com>:
>> For Observers maybe we can find another way to achieve OPENEJB-2082 without 
>> binding one observer directly to another:
>> 
>>   public void observe(final @Observes(after = SimpleObserver.class) 
>> SimpleEvent event)
>> 
>> I can see that creating just as much of a mess as having too many events.  
>> Having to sort each event is not exactly optimal for speed either.
>> 
>> If we were to take a sorting based approach, maybe we can take a page from 
>> the interceptor ordering of Java EE 7, based on unix start orders:
>> 
>>   @Priority(5)
>>   public void observe(final @Observes SimpleEvent event)
>> 
>> Default priority for all observers would be say, 5, like it is for a thread. 
>>  We would recommend 1-10 as the range and use a float rather than an int so 
>> it can be easy to break a tie without complex hacking.
>> 
>> Also as an optimization, we don't actually call the sort method unless one 
>> of the Observers actually has a priority.
>> 
>> Thoughts?
>> 
>> 
>> -David
>> 

Reply via email to