From c47d03434fb4ac172eb6eaf76e8057d465ec9d3a Mon Sep 17 00:00:00 2001 From: Simon Brandhof Date: Thu, 28 Jul 2016 13:22:14 +0200 Subject: [PATCH] SONAR-7899 Remove coupling of ServerPluginRepository on Server --- .../server/plugins/ServerPluginRepository.java | 14 +++++++------- .../server/plugins/ServerPluginRepositoryTest.java | 14 +++++++------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java index 47e3bc584e0..211e39e9490 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java +++ b/server/sonar-server/src/main/java/org/sonar/server/plugins/ServerPluginRepository.java @@ -40,7 +40,7 @@ import javax.annotation.Nonnull; import org.apache.commons.io.FileUtils; import org.picocontainer.Startable; import org.sonar.api.Plugin; -import org.sonar.api.platform.Server; +import org.sonar.api.SonarRuntime; import org.sonar.api.platform.ServerUpgradeStatus; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.log.Logger; @@ -83,7 +83,7 @@ public class ServerPluginRepository implements PluginRepository, Startable { private static final Joiner SLASH_JOINER = Joiner.on(" / ").skipNulls(); private static final String NOT_STARTED_YET = "not started yet"; - private final Server server; + private final SonarRuntime runtime; private final ServerFileSystem fs; private final ServerUpgradeStatus upgradeStatus; private final PluginLoader loader; @@ -94,9 +94,9 @@ public class ServerPluginRepository implements PluginRepository, Startable { private final Map pluginInfosByKeys = new HashMap<>(); private final Map pluginInstancesByKeys = new HashMap<>(); - public ServerPluginRepository(Server server, ServerUpgradeStatus upgradeStatus, + public ServerPluginRepository(SonarRuntime runtime, ServerUpgradeStatus upgradeStatus, ServerFileSystem fs, PluginLoader loader) { - this.server = server; + this.runtime = runtime; this.upgradeStatus = upgradeStatus; this.fs = fs; this.loader = loader; @@ -231,7 +231,7 @@ public class ServerPluginRepository implements PluginRepository, Startable { do { removedKeys.clear(); for (PluginInfo plugin : pluginInfosByKeys.values()) { - if (!isCompatible(plugin, server, pluginInfosByKeys)) { + if (!isCompatible(plugin, runtime, pluginInfosByKeys)) { removedKeys.add(plugin.getKey()); } } @@ -242,13 +242,13 @@ public class ServerPluginRepository implements PluginRepository, Startable { } @VisibleForTesting - static boolean isCompatible(PluginInfo plugin, Server server, Map allPluginsByKeys) { + static boolean isCompatible(PluginInfo plugin, SonarRuntime runtime, Map allPluginsByKeys) { if (Strings.isNullOrEmpty(plugin.getMainClass()) && Strings.isNullOrEmpty(plugin.getBasePlugin())) { LOG.warn("Plugin {} [{}] is ignored because entry point class is not defined", plugin.getName(), plugin.getKey()); return false; } - if (!plugin.isCompatibleWith(server.getVersion())) { + if (!plugin.isCompatibleWith(runtime.getApiVersion().toString())) { throw MessageException.of(format( "Plugin %s [%s] requires at least SonarQube %s", plugin.getName(), plugin.getKey(), plugin.getMinimalSqVersion())); } diff --git a/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java b/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java index 51bc9ebe563..c33e359d0ae 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/plugins/ServerPluginRepositoryTest.java @@ -33,7 +33,7 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.junit.rules.TemporaryFolder; import org.mockito.Mockito; -import org.sonar.api.platform.Server; +import org.sonar.api.SonarRuntime; import org.sonar.api.platform.ServerUpgradeStatus; import org.sonar.api.utils.MessageException; import org.sonar.api.utils.log.LogTester; @@ -58,11 +58,11 @@ public class ServerPluginRepositoryTest { @Rule public LogTester logs = new LogTester(); - Server server = mock(Server.class); + private SonarRuntime runtime = mock(SonarRuntime.class); ServerUpgradeStatus upgradeStatus = mock(ServerUpgradeStatus.class); ServerFileSystem fs = mock(ServerFileSystem.class, Mockito.RETURNS_DEEP_STUBS); PluginLoader pluginLoader = mock(PluginLoader.class); - ServerPluginRepository underTest = new ServerPluginRepository(server, upgradeStatus, fs, pluginLoader); + ServerPluginRepository underTest = new ServerPluginRepository(runtime, upgradeStatus, fs, pluginLoader); @Before public void setUp() throws IOException { @@ -72,7 +72,7 @@ public class ServerPluginRepositoryTest { when(fs.getHomeDir()).thenReturn(temp.newFolder()); when(fs.getInstalledPluginsDir()).thenReturn(temp.newFolder()); when(fs.getTempDir()).thenReturn(temp.newFolder()); - when(server.getVersion()).thenReturn("5.2"); + when(runtime.getApiVersion()).thenReturn(org.sonar.api.utils.Version.parse("5.2")); } @After @@ -213,7 +213,7 @@ public class ServerPluginRepositoryTest { @Test public void fail_if_plugin_does_not_support_sq_version() throws Exception { - when(server.getVersion()).thenReturn("1.0"); + when(runtime.getApiVersion()).thenReturn(org.sonar.api.utils.Version.parse("1.0")); copyTestPluginTo("test-base-plugin", fs.getInstalledPluginsDir()); try { @@ -310,7 +310,7 @@ public class ServerPluginRepositoryTest { @Test public void plugin_is_incompatible_if_no_entry_point_class() { PluginInfo plugin = new PluginInfo("foo").setName("Foo"); - assertThat(ServerPluginRepository.isCompatible(plugin, server, Collections.emptyMap())).isFalse(); + assertThat(ServerPluginRepository.isCompatible(plugin, runtime, Collections.emptyMap())).isFalse(); assertThat(logs.logs()).contains("Plugin Foo [foo] is ignored because entry point class is not defined"); } @@ -350,7 +350,7 @@ public class ServerPluginRepositoryTest { PluginInfo plugin = new PluginInfo("foo").setBasePlugin("base"); Map plugins = ImmutableMap.of("base", basePlugin, "foo", plugin); - assertThat(ServerPluginRepository.isCompatible(plugin, server, plugins)).isTrue(); + assertThat(ServerPluginRepository.isCompatible(plugin, runtime, plugins)).isTrue(); } @Test -- 2.39.5