From 913b7080fdd01c03204819c6cfb691915f66ff10 Mon Sep 17 00:00:00 2001 From: Eduard Heimbuch Date: Wed, 18 Sep 2019 15:47:58 +0200 Subject: [PATCH] mark installed plugin as core after server started --- .../sonia/scm/plugin/InstalledPlugin.java | 6 +++++- .../scm/plugin/DefaultPluginManager.java | 19 ++++++++++++++----- .../sonia/scm/plugin/PluginProcessor.java | 2 +- 3 files changed, 20 insertions(+), 7 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java b/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java index 5d009a96e4..602378fe6a 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java +++ b/scm-core/src/main/java/sonia/scm/plugin/InstalledPlugin.java @@ -142,6 +142,10 @@ public final class InstalledPlugin implements Plugin public void setUninstallable(boolean uninstallable) { this.uninstallable = uninstallable; } + + public void markAsCore() { + this.core = true; + } //~--- fields --------------------------------------------------------------- /** plugin class loader */ @@ -156,7 +160,7 @@ public final class InstalledPlugin implements Plugin /** plugin web resource loader */ private final WebResourceLoader webResourceLoader; - private final boolean core; + private boolean core; private boolean markedForUninstall = false; private boolean uninstallable = false; diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java index e0aa04776f..a73c2795ed 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/DefaultPluginManager.java @@ -195,11 +195,7 @@ public class DefaultPluginManager implements PluginManager { dependencyTracker.removeInstalled(installed.getDescriptor()); installed.setMarkedForUninstall(true); - try { - Files.createFile(installed.getDirectory().resolve(InstalledPlugin.UNINSTALL_MARKER_FILENAME)); - } catch (IOException e) { - throw new PluginException("could not mark plugin " + name + " in path " + installed.getDirectory() + " for uninstall", e); - } + createMarkerFile(installed, InstalledPlugin.UNINSTALL_MARKER_FILENAME); if (restartAfterInstallation) { restart("plugin installation"); @@ -219,6 +215,19 @@ public class DefaultPluginManager implements PluginManager { && dependencyTracker.mayUninstall(p.getDescriptor().getInformation().getName()); } + private void markAsCore(InstalledPlugin plugin) { + createMarkerFile(plugin, PluginConstants.FILE_CORE); + plugin.markAsCore(); + } + + private void createMarkerFile(InstalledPlugin plugin, String markerFile) { + try { + Files.createFile(plugin.getDirectory().resolve(markerFile)); + } catch (IOException e) { + throw new PluginException("could not mark plugin " + plugin.getId() + " in path " + plugin.getDirectory() + "as " + markerFile, e); + } + } + @Override public void executePendingAndRestart() { PluginPermissions.manage().check(); diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java index e1f0367948..2bbab3c650 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginProcessor.java @@ -462,7 +462,7 @@ public final class PluginProcessor if (Files.exists(descriptorPath)) { - boolean core = Files.exists(directory.resolve("core")); + boolean core = Files.exists(directory.resolve(PluginConstants.FILE_CORE)); ClassLoader cl = createClassLoader(classLoader, smp);