+1 Thanks, Marius
On Thu, Nov 24, 2011 at 2:58 PM, Vincent Massol <[email protected]> wrote: > Hi devs, > > Summary: > ======== > > I'd like to add the notion of Priority to Event Listeners. The reason is that > in some cases it's important that some listeners execute before others. > > The problem at hand: > ================= > > Here's a typical use case: When receiving the ApplicationStartedEvent, we > have lot of code that needs to initialize. Initialization order is important > (you can compare it to run levels in OS): for example some init must happen > after the Database initialization has happened. > > Note that another solution exists for this use case: some initializations > could introduce their own events (such as a DatabaseStartedEvent) and other > init could listen on those events instead of the generic > ApplicationStartedEvent. However I can see several drawbacks to this: > * it's less generic than the priority solution > * it means creating more events > * but more importantly it means that modules will have strong dependencies > (at maven level) on each other whereas it's not necessary and shouldn't be > the case. In our example use case: it means that inits that must happen after > database is started will need to depend on oldcore (which is where DB is > started ATM) > > Proposal: > ======== > > * Don't break backward compat in Observation module > * Introduce a PrioritizedEventListener interface that adds a getPriority() > method > * Modify ObservationManager implementation to take into account priorities > * In order to make it simple I propose to have only a single priority per > Listener and not a priority per event supported by a given listener > > General Context > ============= > > To give some context here's what I'd like to do on the medium term: > > * Step 1: Introduce notion of priority in EventListeners > * Step 2: Refactor XWiki init to use an EventListener on AppStarted with low > priority > * Step 3: Refactor wiki macros to use an EventListener on AppStarted with > priority value lower than at step2 > * Step 4: Write an EventListener for the new UI Extensions with a priority > value higher than the one of step2 <-- this is the initial goal that led me > to make this proposal ;) > > WDYT? > > Thanks > -Vincent > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

