Am 13.04.2012 17:43 schrieb "Vincent Massol" <vincent(a)massol.net>et>:
Hi devs,
We already have ApplicationStartedEvent and ApplicationReadyEvent (when
DB is
ready). We also need an event when the wiki is ready since in s a
multiwiki environment when you create a new wiki for example, you might
need to init some stuff (like initialize mandatory classes). It's also
needed the first time a request comes in for a given wiki.
Thus I propose to add a WikiReadyEvent next to ApplicationStartedEvent
and to send
it in XWiki.updateDatabase():
...
synchronized (wikiName) {
if (!wikiList.contains(wikiName)) {
wikiList.add(wikiName);
// Make sure these classes exists
if (initClasses) {
initializeMandatoryClasses(context);
getPluginManager().virtualInit(context);
getRenderingEngine().virtualInit(context);
}
--> send WikiReadyEvent here
}
}
Is it a good practise to call event listeners in the synchronized block?
(see Brian Götz, Java Concurrence in Practise, never call alien code from a
synchronized block)
My 2cents
Richard
WDYT?
Note that I was tempted to have a WikiCreatedEvent event sent when
creating a wiki
but that wouldn't fill the use case of initializing the
wiki on the first request to it.
Thanks
-Vincent
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs