diff options
author | Jacek <jacek.poreda@sonarsource.com> | 2022-05-30 18:50:42 +0200 |
---|---|---|
committer | sonartech <sonartech@sonarsource.com> | 2022-05-31 20:02:50 +0000 |
commit | 9097b10693f9c4fe2c7bde4bccdbca151ebfa452 (patch) | |
tree | 10eb71dfd890e5725f4f085386812eeb65c53197 /sonar-plugin-api-impl | |
parent | cdeca9bf6ccd0cb1a3b2d397efa8ace1ef4789c2 (diff) | |
download | sonarqube-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')
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"); } } |