summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/manager/PluginManager.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-04-13 11:57:55 -0400
committerJames Moger <james.moger@gitblit.com>2014-04-13 11:57:55 -0400
commit74f3d92cca058f5c297e5b6032b5e41c935a5504 (patch)
treed7be552363357ec8e7cefd425a1ccf5ee171c384 /src/main/java/com/gitblit/manager/PluginManager.java
parent22659c867e3b8f11907302a4c6bbf9c7f5f9e9d3 (diff)
downloadgitblit-74f3d92cca058f5c297e5b6032b5e41c935a5504.tar.gz
gitblit-74f3d92cca058f5c297e5b6032b5e41c935a5504.zip
Upgrade plugin command
Diffstat (limited to 'src/main/java/com/gitblit/manager/PluginManager.java')
-rw-r--r--src/main/java/com/gitblit/manager/PluginManager.java24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/manager/PluginManager.java b/src/main/java/com/gitblit/manager/PluginManager.java
index 5bd97ea2..b2a87ab3 100644
--- a/src/main/java/com/gitblit/manager/PluginManager.java
+++ b/src/main/java/com/gitblit/manager/PluginManager.java
@@ -130,6 +130,29 @@ public class PluginManager implements IPluginManager, PluginStateListener {
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 @@ public class PluginManager implements IPluginManager, PluginStateListener {
map.put(reg.id, reg);
}
}
+
for (PluginWrapper pw : pf4j.getPlugins()) {
String id = pw.getDescriptor().getPluginId();
PluginVersion pv = pw.getDescriptor().getVersion();