On Apr 16, 2012, at 4:52 PM, Richard Hierlmeier wrote: > Am 13.04.2012 17:43 schrieb "Vincent Massol" <[email protected]>: >> >> 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)
Good point. Although it's very unlikely it's going to cause trouble it's better to move the call just after the synchronized block. Thanks -Vincent > 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 [email protected] http://lists.xwiki.org/mailman/listinfo/devs

