Browse Source

Merge 1a16be8ad0 into 74aa987ca9

pull/579/merge
Decebal Suiu 1 month ago
parent
commit
fd3ea85733
No account linked to committer's email address

+ 3
- 0
pf4j/src/main/java/org/pf4j/AbstractPluginManager.java View File

@@ -331,6 +331,9 @@ public abstract class AbstractPluginManager implements PluginManager {
}
}

// resolve the plugins again (update plugins graph)
resolveDependencies();

return true;
}


+ 36
- 0
pf4j/src/test/java/org/pf4j/DefaultPluginManagerTest.java View File

@@ -396,4 +396,40 @@ public class DefaultPluginManagerTest {
assertThrows(PluginNotFoundException.class, () -> pluginManager.stopPlugin(pluginZip2.pluginId()));
}

@Test
void deletePluginWithDependency() throws IOException {
PluginZip pluginZip1 = new PluginZip.Builder(pluginsPath.resolve("my-first-plugin-1.1.1.zip"), "myPlugin1")
.pluginVersion("1.1.1")
.build();

PluginZip pluginZip2 = new PluginZip.Builder(pluginsPath.resolve("my-second-plugin-2.2.2.zip"), "myPlugin2")
.pluginVersion("2.2.2")
.pluginDependencies("myPlugin1")
.build();

PluginZip pluginZip3 = new PluginZip.Builder(pluginsPath.resolve("my-third-plugin-3.3.3.zip"), "myPlugin3")
.pluginVersion("3.3.3")
.pluginDependencies("myPlugin2")
.build();

pluginManager.loadPlugins();
pluginManager.startPlugins();

assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState());
assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip2.pluginId()).getPluginState());
assertEquals(PluginState.STARTED, pluginManager.getPlugin(pluginZip3.pluginId()).getPluginState());

System.out.println("Stopping " + pluginZip2.pluginId());
pluginManager.stopPlugin(pluginZip2.pluginId());
assertEquals(PluginState.STOPPED, pluginManager.getPlugin(pluginZip2.pluginId()).getPluginState());

boolean deleted = pluginManager.deletePlugin(pluginZip2.pluginId());
assertTrue(deleted);

assertEquals(1, pluginManager.getPlugins().size()); // myPlugin1 should still be there, myPlugin2 and myPlugin3 should be gone

pluginManager.stopPlugin(pluginZip1.pluginId());
assertEquals(PluginState.STOPPED, pluginManager.getPlugin(pluginZip1.pluginId()).getPluginState());
}

}

Loading…
Cancel
Save