From: Decebal Suiu Date: Mon, 15 Apr 2019 17:28:30 +0000 (+0300) Subject: Resolve #309 X-Git-Tag: release-3.0.0~2^2~25 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=3199b5f043ad533429b7834ce06e9d4129e6b596;p=pf4j.git Resolve #309 --- diff --git a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java index 33130a3..3833588 100644 --- a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java +++ b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java @@ -287,19 +287,25 @@ public abstract class AbstractPluginManager implements PluginManager { checkPluginId(pluginId); PluginWrapper pluginWrapper = getPlugin(pluginId); + // stop the plugin if it's started PluginState pluginState = stopPlugin(pluginId); if (PluginState.STARTED == pluginState) { log.error("Failed to stop plugin '{}' on delete", pluginId); return false; } + // get an instance of plugin before the plugin is unloaded + // for reason see https://github.com/pf4j/pf4j/issues/309 + Plugin plugin = pluginWrapper.getPlugin(); + if (!unloadPlugin(pluginId)) { log.error("Failed to unload plugin '{}' on delete", pluginId); return false; } + // notify the plugin as it's deleted try { - pluginWrapper.getPlugin().delete(); + plugin.delete(); } catch (PluginException e) { log.error(e.getMessage(), e); return false;