From: Simon Brandhof Date: Tue, 26 May 2015 13:51:18 +0000 (+0200) Subject: Improve exception handling when a plugin can not be loaded at server startup X-Git-Tag: 5.2-RC1~1841 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=8e89552292b69539a289c6296d257cf040f461b7;p=sonarqube.git Improve exception handling when a plugin can not be loaded at server startup --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java index 7df318fbdf4..54a733341c2 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java +++ b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java @@ -21,6 +21,7 @@ package org.sonar.server.plugins; import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ListMultimap; +import java.util.Map; import org.sonar.api.Extension; import org.sonar.api.ExtensionProvider; import org.sonar.api.Plugin; @@ -30,8 +31,6 @@ import org.sonar.core.platform.ComponentContainer; import org.sonar.core.platform.PluginInfo; import org.sonar.core.platform.PluginRepository; -import java.util.Map; - /** * Loads the plugins server extensions and injects them to DI container */ @@ -48,24 +47,32 @@ public class ServerExtensionInstaller { ListMultimap installedExtensionsByPlugin = ArrayListMultimap.create(); for (PluginInfo pluginInfo : pluginRepository.getPluginInfos()) { - String pluginKey = pluginInfo.getKey(); - Plugin plugin = pluginRepository.getPluginInstance(pluginKey); - container.addExtension(pluginInfo, plugin); + try { + String pluginKey = pluginInfo.getKey(); + Plugin plugin = pluginRepository.getPluginInstance(pluginKey); + container.addExtension(pluginInfo, plugin); - for (Object extension : plugin.getExtensions()) { - if (installExtension(container, pluginInfo, extension, true) != null) { - installedExtensionsByPlugin.put(pluginInfo, extension); - } else { - container.declareExtension(pluginInfo, extension); + for (Object extension : plugin.getExtensions()) { + if (installExtension(container, pluginInfo, extension, true) != null) { + installedExtensionsByPlugin.put(pluginInfo, extension); + } else { + container.declareExtension(pluginInfo, extension); + } } + } catch (Exception e) { + throw new IllegalStateException(String.format("Fail to load plugin %s [%s]", pluginInfo.getName(), pluginInfo.getKey()), e); } } for (Map.Entry entry : installedExtensionsByPlugin.entries()) { - PluginInfo plugin = entry.getKey(); - Object extension = entry.getValue(); - if (isExtensionProvider(extension)) { - ExtensionProvider provider = (ExtensionProvider) container.getComponentByKey(extension); - installProvider(container, plugin, provider); + PluginInfo pluginInfo = entry.getKey(); + try { + Object extension = entry.getValue(); + if (isExtensionProvider(extension)) { + ExtensionProvider provider = (ExtensionProvider) container.getComponentByKey(extension); + installProvider(container, pluginInfo, provider); + } + } catch (Exception e) { + throw new IllegalStateException(String.format("Fail to load plugin %s [%s]", pluginInfo.getName(), pluginInfo.getKey()), e); } } }