]> source.dussan.org Git - pf4j.git/commitdiff
Fix for problem with file lock on Windows platform. Introduce unloadPlugins method...
authorValeriy Kucherenko <valeriy.kucherenko@gmail.com>
Fri, 17 Jul 2020 16:51:43 +0000 (19:51 +0300)
committerGitHub <noreply@github.com>
Fri, 17 Jul 2020 16:51:43 +0000 (19:51 +0300)
Thanks for your contribution!

pf4j/src/main/java/org/pf4j/AbstractPluginManager.java
pf4j/src/main/java/org/pf4j/PluginManager.java
pf4j/src/test/java/org/pf4j/JarPluginManagerTest.java

index 5b8b82c05552095e49ee77acc43d0cac4fe7bfe7..ea8d297f1d7e7f9cbbd1c36ac5f6bde3442d2006 100644 (file)
@@ -235,6 +235,17 @@ public abstract class AbstractPluginManager implements PluginManager {
         }
     }
 
+    /**
+     * Unload all plugins
+     */
+    @Override
+    public void unloadPlugins() {
+        // wrap resolvedPlugins in new list because of concurrent modification
+        for (PluginWrapper pluginWrapper : new ArrayList<>(resolvedPlugins)) {
+            unloadPlugin(pluginWrapper.getPluginId());
+        }
+    }
+
     /**
      * Unload the specified plugin and it's dependents.
      */
index a937f2290885a9f328ba8956a5ef7f46f30c71a2..248b1acc52b0b59448ddd7e753d7458022402251 100644 (file)
@@ -100,6 +100,11 @@ public interface PluginManager {
      */
     PluginState stopPlugin(String pluginId);
 
+    /**
+     * Unload all plugins
+     */
+    void unloadPlugins();
+
     /**
      * Unload a plugin.
      *
index d9ca90a78981e737ed569fb79c3b94ea4c9333d8..4eb28729d2bf66fa09221d47468956804aea58c6 100644 (file)
@@ -53,6 +53,8 @@ public class JarPluginManagerTest {
 
     @AfterEach
     public void tearDown() {
+        pluginManager.unloadPlugins();
+
         pluginJar = null;
         pluginManager = null;
     }