From b92ec9ed53f69638c9726c29bc25a780a8eb7a17 Mon Sep 17 00:00:00 2001 From: Sebastian Lövdahl Date: Tue, 20 Feb 2024 09:16:09 +0200 Subject: Post `PluginState.UNLOADED` event when plugins are unloaded (#567) --- pf4j/src/main/java/org/pf4j/AbstractPluginManager.java | 1 + pf4j/src/main/java/org/pf4j/PluginState.java | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'pf4j/src/main') diff --git a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java index f3a7231..78c261c 100644 --- a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java +++ b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java @@ -311,6 +311,7 @@ public abstract class AbstractPluginManager implements PluginManager { } // remove the plugin + pluginWrapper.setPluginState(PluginState.UNLOADED); plugins.remove(pluginId); getResolvedPlugins().remove(pluginWrapper); getUnresolvedPlugins().remove(pluginWrapper); diff --git a/pf4j/src/main/java/org/pf4j/PluginState.java b/pf4j/src/main/java/org/pf4j/PluginState.java index 989157f..6a6c1f9 100644 --- a/pf4j/src/main/java/org/pf4j/PluginState.java +++ b/pf4j/src/main/java/org/pf4j/PluginState.java @@ -20,7 +20,7 @@ package org.pf4j; *

* Lifecycle of a plugin: *

- * CREATED -> RESOLVED -> STARTED -> STOPPED
+ * CREATED -> RESOLVED -> STARTED -> STOPPED -> UNLOADED
  * CREATED -> DISABLED
  * CREATED -> FAILED
  *
@@ -57,7 +57,14 @@ public enum PluginState {
     /**
      * Plugin failed to start.
      */
-    FAILED("FAILED");
+    FAILED("FAILED"),
+
+    /**
+     * The plugin has been unloaded. After this event has been completed, the plugin's
+     * {@link ClassLoader} will be closed.
+     */
+    UNLOADED("UNLOADED"),
+    ;
 
     private final String status;
 
-- 
cgit v1.2.3