Update required plugins if available

When plugins are updated, we should update required plugins, too, so
that we do not get errors when new plugins use features not available
in the old versions of required plugins.
This commit is contained in:
René Pfeuffer
2020-07-02 12:08:23 +02:00
parent 3b0693e744
commit e3eb8a99d0
6 changed files with 31 additions and 13 deletions

View File

@@ -247,18 +247,18 @@ public class DefaultPluginManager implements PluginManager {
private List<AvailablePlugin> collectPluginsToInstall(String name) {
List<AvailablePlugin> plugins = new ArrayList<>();
collectPluginsToInstall(plugins, name, true);
collectPluginsToInstallOrUpdate(plugins, name);
return plugins;
}
private void collectPluginsToInstall(List<AvailablePlugin> plugins, String name, boolean isUpdate) {
if (!isInstalledOrPending(name) || isUpdate && isUpdatable(name)) {
private void collectPluginsToInstallOrUpdate(List<AvailablePlugin> plugins, String name) {
if (!isInstalledOrPending(name) || isUpdatable(name)) {
AvailablePlugin plugin = getAvailable(name).orElseThrow(() -> NotFoundException.notFound(entity(AvailablePlugin.class, name)));
Set<String> dependencies = plugin.getDescriptor().getDependencies();
if (dependencies != null) {
for (String dependency : dependencies) {
collectPluginsToInstall(plugins, dependency, false);
collectPluginsToInstallOrUpdate(plugins, dependency);
}
}