@Override public WikiDescriptor create(String wikiId, String wikiAlias, boolean failOnExist) throws WikiManagerException { // Check that the wiki Id is available if (failOnExist && !idAvailable(wikiId)) { throw new WikiManagerException(String.format("wiki id [%s] is already used and is thus not available", wikiId)); } XWikiContext context = xcontextProvider.get(); WikiDescriptor descriptor; try { // Send the begin event observationManager.notify(new WikiCreatingEvent(wikiId), wikiId, context); // Create the wiki descriptor = wikiCreator.create(wikiId, wikiAlias); // Send the end event observationManager.notify(new WikiCreatedEvent(wikiId), wikiId, context); } catch (WikiManagerException e) { // Send the failed event observationManager.notify(new WikiCreateFailedEvent(wikiId), wikiId, context); // Throw the exception throw e; } return descriptor; }