aboutsummaryrefslogtreecommitdiffstats
path: root/server
diff options
context:
space:
mode:
authorSimon Brandhof <simon.brandhof@sonarsource.com>2015-05-26 15:51:18 +0200
committerSimon Brandhof <simon.brandhof@sonarsource.com>2015-05-26 15:51:29 +0200
commit8e89552292b69539a289c6296d257cf040f461b7 (patch)
tree8af78e37dcbbdc2fa157fd1f5d64258ea38f6f5f /server
parentb6066864751a4ab5b39932f685999df656af75ce (diff)
downloadsonarqube-8e89552292b69539a289c6296d257cf040f461b7.tar.gz
sonarqube-8e89552292b69539a289c6296d257cf040f461b7.zip
Improve exception handling when a plugin can not be loaded at server startup
Diffstat (limited to 'server')
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/plugins/ServerExtensionInstaller.java37
1 files changed, 22 insertions, 15 deletions
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<PluginInfo, Object> 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<PluginInfo, Object> 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);
}
}
}