From 5f943f6894c1738f2400119419914fd0b05e7c0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Evaristo=20Gutie=CC=81rrez?= Date: Fri, 17 Jan 2020 16:10:36 +0100 Subject: [PATCH] [JENKINS-60805] Restore binary compatibility. --- .../jenkins/support/SupportPlugin.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/cloudbees/jenkins/support/SupportPlugin.java b/src/main/java/com/cloudbees/jenkins/support/SupportPlugin.java index 74b2e7e87..8a7a8682d 100644 --- a/src/main/java/com/cloudbees/jenkins/support/SupportPlugin.java +++ b/src/main/java/com/cloudbees/jenkins/support/SupportPlugin.java @@ -44,6 +44,7 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import hudson.BulkChange; import hudson.Extension; +import hudson.ExtensionList; import hudson.FilePath; import hudson.Functions; import hudson.Main; @@ -272,13 +273,23 @@ public static SupportPlugin getInstance() { return Jenkins.get().getPlugin(SupportPlugin.class); } - public static List getComponents() { - return Jenkins.get().getExtensionList(Component.class) - .stream() - .filter(component -> component.isApplicable(Jenkins.class)) - .collect(Collectors.toList()); + public static ExtensionList getComponents() { + ExtensionList list = ExtensionList.create(Jenkins.get(), NonExistentComponent.class); + + if (list.isEmpty()) { + List applicableComponents = Jenkins.get().getExtensionList(Component.class) + .stream() + .filter(component -> component.isApplicable(Jenkins.class)) + .collect(Collectors.toList()); + + list.addAll(applicableComponents); + } + + return list; } + private static abstract class NonExistentComponent extends Component {} + public static void writeBundle(OutputStream outputStream) throws IOException { writeBundle(outputStream, getComponents()); }