aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-plugin-api-impl
diff options
context:
space:
mode:
authorJacek <jacek.poreda@sonarsource.com>2022-05-30 18:50:42 +0200
committersonartech <sonartech@sonarsource.com>2022-05-31 20:02:50 +0000
commit9097b10693f9c4fe2c7bde4bccdbca151ebfa452 (patch)
tree10eb71dfd890e5725f4f085386812eeb65c53197 /sonar-plugin-api-impl
parentcdeca9bf6ccd0cb1a3b2d397efa8ace1ef4789c2 (diff)
downloadsonarqube-9097b10693f9c4fe2c7bde4bccdbca151ebfa452.tar.gz
sonarqube-9097b10693f9c4fe2c7bde4bccdbca151ebfa452.zip
SONAR-16232 Use plugin api version for SonarRuntime impl
- introduce internal SonarQubeVersion
Diffstat (limited to 'sonar-plugin-api-impl')
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java2
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/MetadataLoader.java14
-rw-r--r--sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/SonarRuntimeImpl.java8
-rw-r--r--sonar-plugin-api-impl/src/test/java/org/sonar/api/internal/MetadataLoaderTest.java17
4 files changed, 28 insertions, 13 deletions
diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
index dc5acf17136..98b48f12382 100644
--- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
+++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/batch/sensor/internal/SensorContextTester.java
@@ -125,7 +125,7 @@ public class SensorContextTester implements SensorContext {
this.sensorStorage = new InMemorySensorStorage();
this.project = new DefaultInputProject(ProjectDefinition.create().setKey("projectKey").setBaseDir(moduleBaseDir.toFile()).setWorkDir(moduleBaseDir.resolve(".sonar").toFile()));
this.module = new DefaultInputModule(ProjectDefinition.create().setKey("projectKey").setBaseDir(moduleBaseDir.toFile()).setWorkDir(moduleBaseDir.resolve(".sonar").toFile()));
- this.runtime = SonarRuntimeImpl.forSonarQube(MetadataLoader.loadVersion(System2.INSTANCE), SonarQubeSide.SCANNER, MetadataLoader.loadEdition(System2.INSTANCE));
+ this.runtime = SonarRuntimeImpl.forSonarQube(MetadataLoader.loadApiVersion(System2.INSTANCE), SonarQubeSide.SCANNER, MetadataLoader.loadEdition(System2.INSTANCE));
}
public static SensorContextTester create(File moduleBaseDir) {
diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/MetadataLoader.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/MetadataLoader.java
index 33dae76c3f8..77fe9cc89b5 100644
--- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/MetadataLoader.java
+++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/MetadataLoader.java
@@ -38,20 +38,28 @@ import static org.apache.commons.lang.StringUtils.trimToEmpty;
public class MetadataLoader {
private static final String SQ_VERSION_FILE_PATH = "/sq-version.txt";
+ private static final String SONAR_API_VERSION_FILE_PATH = "/sonar-api-version.txt";
private static final String EDITION_FILE_PATH = "/sonar-edition.txt";
private MetadataLoader() {
// only static methods
}
- public static Version loadVersion(System2 system) {
- URL url = system.getResource(SQ_VERSION_FILE_PATH);
+ public static Version loadApiVersion(System2 system) {
+ return getVersion(system, SONAR_API_VERSION_FILE_PATH);
+ }
+ public static Version loadSQVersion(System2 system) {
+ return getVersion(system, SQ_VERSION_FILE_PATH);
+ }
+
+ private static Version getVersion(System2 system, String versionFilePath) {
+ URL url = system.getResource(versionFilePath);
try (Scanner scanner = new Scanner(url.openStream(), StandardCharsets.UTF_8.name())) {
String versionInFile = scanner.nextLine();
return Version.parse(versionInFile);
} catch (IOException e) {
- throw new IllegalStateException("Can not load " + SQ_VERSION_FILE_PATH + " from classpath ", e);
+ throw new IllegalStateException("Can not load " + versionFilePath + " from classpath ", e);
}
}
diff --git a/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/SonarRuntimeImpl.java b/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/SonarRuntimeImpl.java
index 0b1a9b51225..051b567bc54 100644
--- a/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/SonarRuntimeImpl.java
+++ b/sonar-plugin-api-impl/src/main/java/org/sonar/api/internal/SonarRuntimeImpl.java
@@ -36,24 +36,24 @@ import static org.sonar.api.utils.Preconditions.checkArgument;
@Immutable
public class SonarRuntimeImpl implements SonarRuntime {
- private final Version version;
+ private final Version apiVersion;
private final SonarProduct product;
private final SonarQubeSide sonarQubeSide;
private final SonarEdition edition;
- private SonarRuntimeImpl(Version version, SonarProduct product, @Nullable SonarQubeSide sonarQubeSide, @Nullable SonarEdition edition) {
+ private SonarRuntimeImpl(Version apiVersion, SonarProduct product, @Nullable SonarQubeSide sonarQubeSide, @Nullable SonarEdition edition) {
this.edition = edition;
requireNonNull(product);
checkArgument((product == SonarProduct.SONARQUBE) == (sonarQubeSide != null), "sonarQubeSide should be provided only for SonarQube product");
checkArgument((product == SonarProduct.SONARQUBE) == (edition != null), "edition should be provided only for SonarQube product");
- this.version = requireNonNull(version);
+ this.apiVersion = requireNonNull(apiVersion);
this.product = product;
this.sonarQubeSide = sonarQubeSide;
}
@Override
public Version getApiVersion() {
- return version;
+ return apiVersion;
}
@Override
diff --git a/sonar-plugin-api-impl/src/test/java/org/sonar/api/internal/MetadataLoaderTest.java b/sonar-plugin-api-impl/src/test/java/org/sonar/api/internal/MetadataLoaderTest.java
index e7f1e23021d..fc340b90d87 100644
--- a/sonar-plugin-api-impl/src/test/java/org/sonar/api/internal/MetadataLoaderTest.java
+++ b/sonar-plugin-api-impl/src/test/java/org/sonar/api/internal/MetadataLoaderTest.java
@@ -33,11 +33,18 @@ import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class MetadataLoaderTest {
- private System2 system = mock(System2.class);
+ private final System2 system = mock(System2.class);
@Test
- public void load_version_from_file_in_classpath() {
- Version version = MetadataLoader.loadVersion(System2.INSTANCE);
+ public void load_api_version_from_file_in_classpath() {
+ Version version = MetadataLoader.loadApiVersion(System2.INSTANCE);
+ assertThat(version).isNotNull();
+ assertThat(version.major()).isGreaterThanOrEqualTo(5);
+ }
+
+ @Test
+ public void load_sq_version_from_file_in_classpath() {
+ Version version = MetadataLoader.loadSQVersion(System2.INSTANCE);
assertThat(version).isNotNull();
assertThat(version.major()).isGreaterThanOrEqualTo(5);
}
@@ -66,9 +73,9 @@ public class MetadataLoaderTest {
public void throw_ISE_if_fail_to_load_version() throws Exception {
when(system.getResource(anyString())).thenReturn(new File("target/unknown").toURI().toURL());
- assertThatThrownBy(() -> MetadataLoader.loadVersion(system))
+ assertThatThrownBy(() -> MetadataLoader.loadApiVersion(system))
.isInstanceOf(IllegalStateException.class)
- .hasMessageContaining("Can not load /sq-version.txt from classpath");
+ .hasMessageContaining("Can not load /sonar-api-version.txt from classpath");
}
}