]> source.dussan.org Git - pf4j.git/commitdiff
Resolve #309
authorDecebal Suiu <decebal.suiu@gmail.com>
Mon, 15 Apr 2019 17:28:30 +0000 (20:28 +0300)
committerDecebal Suiu <decebal.suiu@gmail.com>
Mon, 15 Apr 2019 17:28:30 +0000 (20:28 +0300)
pf4j/src/main/java/org/pf4j/AbstractPluginManager.java

index 33130a3f06240bf32d2ddd63cc52bdef0790db10..38335887103c94ed609bf7ffa36df9b97488ddef 100644 (file)
@@ -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;