From 3199b5f043ad533429b7834ce06e9d4129e6b596 Mon Sep 17 00:00:00 2001 From: Decebal Suiu Date: Mon, 15 Apr 2019 20:28:30 +0300 Subject: [PATCH] Resolve #309 --- pf4j/src/main/java/org/pf4j/AbstractPluginManager.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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;