From 6fbbfe057242e5a3d5b5b86f161fec93a282319e Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 13 Apr 2014 12:00:47 -0400 Subject: [PATCH] Improve plugin dispatcher command help --- src/main/java/com/gitblit/tickets/ITicketService.java | 32 ++++++++++++++++++++++++++++++++ 1 files changed, 32 insertions(+), 0 deletions(-) diff --git a/src/main/java/com/gitblit/tickets/ITicketService.java b/src/main/java/com/gitblit/tickets/ITicketService.java index d04cd5e..9522e42 100644 --- a/src/main/java/com/gitblit/tickets/ITicketService.java +++ b/src/main/java/com/gitblit/tickets/ITicketService.java @@ -35,7 +35,9 @@ import com.gitblit.IStoredSettings; import com.gitblit.Keys; +import com.gitblit.extensions.TicketHook; import com.gitblit.manager.INotificationManager; +import com.gitblit.manager.IPluginManager; import com.gitblit.manager.IRepositoryManager; import com.gitblit.manager.IRuntimeManager; import com.gitblit.manager.IUserManager; @@ -94,6 +96,8 @@ protected final IRepositoryManager repositoryManager; + protected final IPluginManager pluginManager; + protected final TicketIndexer indexer; private final Cache<TicketKey, TicketModel> ticketsCache; @@ -136,6 +140,7 @@ */ public ITicketService( IRuntimeManager runtimeManager, + IPluginManager pluginManager, INotificationManager notificationManager, IUserManager userManager, IRepositoryManager repositoryManager) { @@ -143,6 +148,7 @@ this.log = LoggerFactory.getLogger(getClass()); this.settings = runtimeManager.getSettings(); this.runtimeManager = runtimeManager; + this.pluginManager = pluginManager; this.notificationManager = notificationManager; this.userManager = userManager; this.repositoryManager = repositoryManager; @@ -832,6 +838,17 @@ if (success) { TicketModel ticket = getTicket(repository, ticketId); indexer.index(ticket); + + // call the ticket hooks + if (pluginManager != null) { + for (TicketHook hook : pluginManager.getExtensions(TicketHook.class)) { + try { + hook.onNewTicket(ticket); + } catch (Exception e) { + log.error("Failed to execute extension", e); + } + } + } return ticket; } return null; @@ -862,6 +879,17 @@ TicketModel ticket = getTicket(repository, ticketId); ticketsCache.put(key, ticket); indexer.index(ticket); + + // call the ticket hooks + if (pluginManager != null) { + for (TicketHook hook : pluginManager.getExtensions(TicketHook.class)) { + try { + hook.onUpdateTicket(ticket, change); + } catch (Exception e) { + log.error("Failed to execute extension", e); + } + } + } return ticket; } return null; @@ -897,6 +925,7 @@ public boolean deleteAll(RepositoryModel repository) { boolean success = deleteAllImpl(repository); if (success) { + log.info("Deleted all tickets for {}", repository.name); resetCaches(repository); indexer.deleteAll(repository); } @@ -936,6 +965,8 @@ TicketModel ticket = getTicket(repository, ticketId); boolean success = deleteTicketImpl(repository, ticket, deletedBy); if (success) { + log.info(MessageFormat.format("Deleted {0} ticket #{1,number,0}: {2}", + repository.name, ticketId, ticket.title)); ticketsCache.invalidate(new TicketKey(repository, ticketId)); indexer.delete(ticket); return true; @@ -1074,6 +1105,7 @@ long end = System.nanoTime(); long secs = TimeUnit.NANOSECONDS.toMillis(end - start); log.info("reindexing completed in {} msecs.", secs); + resetCaches(repository); } /** -- Gitblit v1.9.1