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()); }