diff --git a/scm-webapp/src/main/java/sonia/scm/plugin/PluginInstaller.java b/scm-webapp/src/main/java/sonia/scm/plugin/PluginInstaller.java index 9f0637124c..1fc7ac5011 100644 --- a/scm-webapp/src/main/java/sonia/scm/plugin/PluginInstaller.java +++ b/scm-webapp/src/main/java/sonia/scm/plugin/PluginInstaller.java @@ -36,17 +36,7 @@ class PluginInstaller { Files.copy(input, file); verifyChecksum(plugin, input.hash(), file); - InstalledPluginDescriptor pluginDescriptor = smpDDescriptorExtractor.extractPluginDescriptor(file); - if (!pluginDescriptor.getCondition().isSupported()) { - cleanup(file); - throw new PluginConditionFailedException( - pluginDescriptor.getCondition(), - String.format( - "could not load plugin %s, the plugin condition does not match", - plugin.getDescriptor().getInformation().getName() - ) - ); - } + verifyConditions(plugin, file); return new PendingPluginInstallation(plugin.install(), file); } catch (IOException ex) { cleanup(file); @@ -77,6 +67,20 @@ class PluginInstaller { } } + private void verifyConditions(AvailablePlugin plugin, Path file) throws IOException { + InstalledPluginDescriptor pluginDescriptor = smpDDescriptorExtractor.extractPluginDescriptor(file); + if (!pluginDescriptor.getCondition().isSupported()) { + cleanup(file); + throw new PluginConditionFailedException( + pluginDescriptor.getCondition(), + String.format( + "could not load plugin %s, the plugin condition does not match", + plugin.getDescriptor().getInformation().getName() + ) + ); + } + } + private InputStream download(AvailablePlugin plugin) throws IOException { return client.get(plugin.getDescriptor().getUrl()).request().contentAsStream(); }