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;