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;
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;
private final Map<String, PluginInfo> pluginInfosByKeys = new HashMap<>();
private final Map<String, Plugin> 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;
do {
removedKeys.clear();
for (PluginInfo plugin : pluginInfosByKeys.values()) {
- if (!isCompatible(plugin, server, pluginInfosByKeys)) {
+ if (!isCompatible(plugin, runtime, pluginInfosByKeys)) {
removedKeys.add(plugin.getKey());
}
}
}
@VisibleForTesting
- static boolean isCompatible(PluginInfo plugin, Server server, Map<String, PluginInfo> allPluginsByKeys) {
+ static boolean isCompatible(PluginInfo plugin, SonarRuntime runtime, Map<String, PluginInfo> 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()));
}
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;
@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 {
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
@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 {
@Test
public void plugin_is_incompatible_if_no_entry_point_class() {
PluginInfo plugin = new PluginInfo("foo").setName("Foo");
- assertThat(ServerPluginRepository.isCompatible(plugin, server, Collections.<String, PluginInfo>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");
}
PluginInfo plugin = new PluginInfo("foo").setBasePlugin("base");
Map<String, PluginInfo> plugins = ImmutableMap.of("base", basePlugin, "foo", plugin);
- assertThat(ServerPluginRepository.isCompatible(plugin, server, plugins)).isTrue();
+ assertThat(ServerPluginRepository.isCompatible(plugin, runtime, plugins)).isTrue();
}
@Test