From 2ffd5f867aabce922a19dbdf99edd43f38861f31 Mon Sep 17 00:00:00 2001 From: xdark Date: Sun, 28 Apr 2024 00:52:10 +0300 Subject: [PATCH] Reject plugins if one fails to load --- .../coley/recaf/services/plugin/PluginGraph.java | 15 ++++++++++----- .../src/main/java/software/coley/recaf/Main.java | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/recaf-core/src/main/java/software/coley/recaf/services/plugin/PluginGraph.java b/recaf-core/src/main/java/software/coley/recaf/services/plugin/PluginGraph.java index 024d59d40..cc7d7c841 100644 --- a/recaf-core/src/main/java/software/coley/recaf/services/plugin/PluginGraph.java +++ b/recaf-core/src/main/java/software/coley/recaf/services/plugin/PluginGraph.java @@ -67,13 +67,18 @@ Collection> apply(List preparedPlugins) throw enable(loadedPlugin); } catch (PluginException ex) { for (LoadedPlugin pl : temp.values()) { - Plugin maybeEnabled = pl.container.plugin; - if (maybeEnabled != null) { + PluginContainerImpl container = pl.container; + try { try { - maybeEnabled.onDisable(); - } catch (Exception ex1) { - ex.addSuppressed(ex1); + Plugin maybeEnabled = container.plugin; + if (maybeEnabled != null) { + maybeEnabled.onDisable(); + } + } finally { + container.preparedPlugin.reject(); } + } catch (Exception ex1) { + ex.addSuppressed(ex1); } } throw ex; diff --git a/recaf-ui/src/main/java/software/coley/recaf/Main.java b/recaf-ui/src/main/java/software/coley/recaf/Main.java index 562150b1c..bbad793bd 100644 --- a/recaf-ui/src/main/java/software/coley/recaf/Main.java +++ b/recaf-ui/src/main/java/software/coley/recaf/Main.java @@ -188,7 +188,7 @@ private static void initPlugins() { String split = "\n - "; logger.info("Initialization: {} plugins found:" + split + "{}", plugins.size(), - plugins.stream().map(PluginContainer::getInformation) + plugins.stream().map(PluginContainer::info) .map(info -> info.name() + " - " + info.version()) .collect(Collectors.joining(split))); }