use of org.sonarsource.sonarlint.core.container.storage.ServerInfoStore in project sonarlint-core by SonarSource.
the class GlobalStorageUpdateExecutor method update.
public void update(ServerApiHelper serverApiHelper, ProgressMonitor progress) {
Path temp;
try {
temp = Files.createTempDirectory("sonarlint-global-storage");
} catch (IOException e) {
throw new IllegalStateException("Unable to create temp directory", e);
}
try {
StorageFolder storageFolder = new StorageFolder.Default(temp);
var serverInfoStore = new ServerInfoStore(storageFolder);
var serverProjectsStore = new ServerProjectsStore(storageFolder);
var storageStatusStore = new StorageStatusStore(storageFolder);
progress.setProgressAndCheckCancel("Checking server version and status", 0.1f);
var serverStatus = new ServerVersionAndStatusChecker(serverApiHelper).checkVersionAndStatus();
serverInfoStore.store(serverStatus);
progress.setProgressAndCheckCancel("Fetching list of projects", 0.8f);
var projectListDownloader = new ProjectListDownloader(serverApiHelper, serverProjectsStore);
projectListDownloader.fetch(progress.subProgress(0.8f, 1.0f, "Fetching list of projects"));
progress.setProgressAndCheckCancel("Finalizing...", 1.0f);
progress.executeNonCancelableSection(() -> {
var storageStatus = StorageStatus.newBuilder().setStorageVersion(ProjectStoragePaths.STORAGE_VERSION).setSonarlintCoreVersion(VersionUtils.getLibraryVersion()).setUpdateTimestamp(new Date().getTime()).build();
storageStatusStore.store(storageStatus);
serverStorage.replaceStorageWith(temp);
});
} finally {
org.apache.commons.io.FileUtils.deleteQuietly(temp.toFile());
}
}
use of org.sonarsource.sonarlint.core.container.storage.ServerInfoStore in project sonarlint-core by SonarSource.
the class ProjectStorageUpdateExecutorTests method setUp.
public void setUp(@Nullable String organizationKey, Path tempDir) throws IOException {
Files.createDirectory(tempDir);
mockServer.addResponseFromResource(getQualityProfileUrl(organizationKey), "/update/qualityprofiles_project.pb");
mockServer.addProtobufResponse("/api/settings/values.protobuf?component=" + URLEncoder.encode(MODULE_KEY_WITH_BRANCH, StandardCharsets.UTF_8), ValuesWsResponse.newBuilder().build());
var response = ValuesWsResponse.newBuilder().addSettings(Setting.newBuilder().setKey("sonar.qualitygate").setValue("1").setInherited(true)).addSettings(Setting.newBuilder().setKey("sonar.core.version").setValue("6.7.1.23")).addSettings(Setting.newBuilder().setKey("sonar.java.someProp").setValue("foo")).build();
mockServer.addProtobufResponse("/api/settings/values.protobufcomponent=" + MODULE_KEY_WITH_BRANCH_URLENCODED, response);
var serverInfoStore = new ServerInfoStore(new StorageFolder.Default(tempDir));
serverInfoStore.store(new ServerInfo("", "", ""));
Map<String, String> modulesPath = new HashMap<>();
modulesPath.put(MODULE_KEY_WITH_BRANCH, "");
modulesPath.put(MODULE_KEY_WITH_BRANCH + "child1", "child 1");
when(moduleHierarchy.fetchModuleHierarchy(eq(serverApiHelper), eq(MODULE_KEY_WITH_BRANCH), any(ProgressMonitor.class))).thenReturn(modulesPath);
when(issueStoreFactory.apply(any(Path.class))).thenReturn(issueStore);
projectConfigurationDownloader = new ProjectConfigurationDownloader(moduleHierarchy);
underTest = new ProjectStorageUpdateExecutor(projectStoragePaths, projectConfigurationDownloader, projectFileListDownloader, serverIssueUpdater);
}
Aggregations