Ok,

removed after and replaced all the boilerplate we added with AfterEvent<Event>.

Side note: i kept two passes with Invocation for fireEvent impl cause
I think it can be useful but today it is not so we can revert too if
you think it should
Romain Manni-Bucau
Twitter: @rmannibucau
Blog: http://rmannibucau.wordpress.com/
LinkedIn: http://fr.linkedin.com/in/rmannibucau
Github: https://github.com/rmannibucau



2014-03-22 10:20 GMT+01:00 Romain Manni-Bucau <rmannibu...@gmail.com>:
> Thought the same but when you hack in arquilluan stack you realize it us
> inefficient to understand the code. Your last commit proove it too:
>
> Firer(afterxxx)
> Fire(afterxxxxxx)
>
> So we need a
>
> Fire(afterxxxxxxxxx)
>
> Makes code dumb to read and no more contextual so harder to follow.
>
> Can you change stop/start event you added with an ObserverEvent(event)
> maybe?
>
> Le 22 mars 2014 05:46, "David Blevins" <david.blev...@gmail.com> a écrit :
>
>> I tend to agree on the I hope we don't need it thought.  I'm thinking
>> maybe we don't do either approach.
>>
>> For the large part, there's little difference between
>>
>>     public void observe(final @Observes(after=A.class) SimpleEvent event)
>>
>> ..and
>>
>>     public void observe(final @Observes AfterSimpleEvent event)
>>
>> The one difference is the LinkedList and Collections.sort calls (and the
>> equals and/or string compares it involves) would not affect Observer
>> performance.
>>
>> Seems like the cleaner API and the more performant.
>>
>> Agreed we still want to be careful how many events we add.
>>
>>
>> -David
>>
>> On Mar 21, 2014, at 2:30 PM, Romain Manni-Bucau <rmannibu...@gmail.com>
>> wrote:
>>
>> > yep both have advantages and drawbacks. One open question for me is
>> > Class or String but not int cause first thing you'll do if not the
>> > name (or class) is to look for all other adatpers...not efficient.
>> > Class makes a forced dependency, String make it optional. ATM I think
>> > Class is enough while we don't abuse of it in extensions like does
>> > arquillian (which uses priority because it can't do anything else).
>> >
>> > I really hope we don't need it.
>> >
>> > Trying to summarize my thoughts: while internal events I think api is
>> > nice and efficient but for the particular event we speak about we can
>> > just fire a CDI event and benefit from @Priority very soon ;). Would
>> > make everybody happy
>> > 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 21:09 GMT+01:00 David Blevins <david.blev...@gmail.com>:
>> >> 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