From d3b1e34c7428fbe4ef3abeee9eaef0f885c3f19b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 14 Apr 2014 12:31:56 -0400 Subject: [PATCH] Merged #47 "Fix diffstat display for tickets with pending submodule changes" --- src/main/java/com/gitblit/manager/PluginManager.java | 32 ++++++++++++++++++++++++++++---- 1 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gitblit/manager/PluginManager.java b/src/main/java/com/gitblit/manager/PluginManager.java index 1c26fa1..b2a87ab 100644 --- a/src/main/java/com/gitblit/manager/PluginManager.java +++ b/src/main/java/com/gitblit/manager/PluginManager.java @@ -130,6 +130,29 @@ return PluginState.STARTED.equals(state); } + public synchronized boolean upgradePlugin(String pluginId, String url, boolean verifyChecksum) throws IOException { + // ensure we can download the update BEFORE we remove the existing one + File file = download(url, verifyChecksum); + if (file == null || !file.exists()) { + logger.error("Failed to download plugin {}", url); + return false; + } + + if (deletePlugin(pluginId)) { + String newPluginId = pf4j.loadPlugin(file); + if (StringUtils.isEmpty(newPluginId)) { + logger.error("Failed to load plugin {}", file); + return false; + } + + PluginState state = pf4j.startPlugin(newPluginId); + return PluginState.STARTED.equals(state); + } else { + logger.error("Failed to delete plugin {}", pluginId); + } + return false; + } + @Override public synchronized boolean disablePlugin(String pluginId) { return pf4j.disablePlugin(pluginId); @@ -296,6 +319,7 @@ map.put(reg.id, reg); } } + for (PluginWrapper pw : pf4j.getPlugins()) { String id = pw.getDescriptor().getPluginId(); PluginVersion pv = pw.getDescriptor().getVersion(); @@ -320,9 +344,9 @@ } @Override - public synchronized PluginRegistration lookupPlugin(String idOrName) { + public synchronized PluginRegistration lookupPlugin(String pluginId) { for (PluginRegistration reg : getRegisteredPlugins()) { - if (reg.id.equalsIgnoreCase(idOrName) || reg.name.equalsIgnoreCase(idOrName)) { + if (reg.id.equalsIgnoreCase(pluginId)) { return reg; } } @@ -330,8 +354,8 @@ } @Override - public synchronized PluginRelease lookupRelease(String idOrName, String version) { - PluginRegistration reg = lookupPlugin(idOrName); + public synchronized PluginRelease lookupRelease(String pluginId, String version) { + PluginRegistration reg = lookupPlugin(pluginId); if (reg == null) { return null; } -- Gitblit v1.9.1