use of org.sonarlint.intellij.exception.InvalidBindingException in project sonarlint-intellij by SonarSource.
the class SonarLintProjectConfigurable method onSave.
/**
* When we save the binding, we need to:
* - Send a message for listeners interested in it
* - If we are bound to a module, update it (even if we detected no changes)
* - Clear all issues and submit an analysis on all open files
*/
private void onSave() {
SonarLintProjectNotifications.get(project).reset();
ProjectConfigurationListener projectListener = project.getMessageBus().syncPublisher(ProjectConfigurationListener.TOPIC);
if (projectSettings.isBindingEnabled() && projectSettings.getProjectKey() != null && projectSettings.getServerId() != null) {
ProjectBindingManager bindingManager = SonarLintUtils.get(project, ProjectBindingManager.class);
try {
SonarQubeServer server = bindingManager.getSonarQubeServer();
ConnectedSonarLintEngine engine = bindingManager.getConnectedEngineSkipChecks();
String moduleKey = projectSettings.getProjectKey();
ServerUpdateTask task = new ServerUpdateTask(engine, server, Collections.singletonMap(moduleKey, Collections.singletonList(project)), true);
ProgressManager.getInstance().run(task.asModal());
} catch (InvalidBindingException e) {
// nothing to do, SonarLintEngineManager should have already shown a warning
}
}
projectListener.changed(projectSettings);
}
use of org.sonarlint.intellij.exception.InvalidBindingException in project sonarlint-intellij by SonarSource.
the class ProjectBindingManager method getSonarQubeServer.
public synchronized SonarQubeServer getSonarQubeServer() throws InvalidBindingException {
String serverId = projectSettings.getServerId();
List<SonarQubeServer> servers = globalSettings.getSonarQubeServers();
Optional<SonarQubeServer> server = servers.stream().filter(s -> s.getName().equals(serverId)).findAny();
return server.orElseThrow(() -> new InvalidBindingException("SonarQube server configuration does not exist for server id: " + serverId));
}
use of org.sonarlint.intellij.exception.InvalidBindingException in project sonarlint-intellij by SonarSource.
the class SonarLintEngineManager method getConnectedEngine.
public synchronized ConnectedSonarLintEngine getConnectedEngine(SonarLintProjectNotifications notifications, String serverId, String projectKey) throws InvalidBindingException {
Preconditions.checkNotNull(notifications, "notifications");
Preconditions.checkNotNull(serverId, "serverId");
Preconditions.checkNotNull(projectKey, "projectKey");
if (!configuredStorageIds.contains(serverId)) {
notifications.notifyServerIdInvalid();
throw new InvalidBindingException("Invalid server name: " + serverId);
}
ConnectedSonarLintEngine engine = getConnectedEngine(serverId);
checkConnectedEngineStatus(engine, notifications, serverId, projectKey);
return engine;
}
use of org.sonarlint.intellij.exception.InvalidBindingException in project sonarlint-intellij by SonarSource.
the class ServerIssueUpdaterTest method testDownloadAllServerIssues.
@Test
public void testDownloadAllServerIssues() throws InvalidBindingException {
List<VirtualFile> files = new LinkedList<>();
for (int i = 0; i < 10; i++) {
VirtualFile file = mock(VirtualFile.class);
String filename = "MyFile" + i + ".txt";
when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
files.add(file);
}
ServerIssue serverIssue = mock(ServerIssue.class);
// mock creation of engine / server
ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
when(bindingManager.getConnectedEngine()).thenReturn(engine);
SonarQubeServer server = mock(SonarQubeServer.class);
when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
when(bindingManager.getSonarQubeServer()).thenReturn(server);
// mock issues fetched
when(engine.getServerIssues(eq(PROJECT_KEY), anyString())).thenReturn(Collections.singletonList(serverIssue));
// run
settings.setBindingEnabled(true);
updater.initComponent();
updater.fetchAndMatchServerIssues(files, indicator, false);
verify(issueManager, timeout(3000).times(10)).matchWithServerIssues(any(VirtualFile.class), argThat(issues -> issues.size() == 1));
verify(engine).downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY));
verify(bindingManager).getConnectedEngine();
verify(console, never()).error(anyString());
verify(console, never()).error(anyString(), any(Throwable.class));
}
use of org.sonarlint.intellij.exception.InvalidBindingException in project sonarlint-intellij by SonarSource.
the class ServerIssueUpdaterTest method testServerIssueTracking.
@Test
public void testServerIssueTracking() throws InvalidBindingException {
VirtualFile file = mock(VirtualFile.class);
ServerIssue serverIssue = mock(ServerIssue.class);
String filename = "MyFile.txt";
when(file.getPath()).thenReturn(FileUtil.toSystemIndependentName(projectBaseDir.resolve(filename).toString()));
// mock creation of engine / server
ConnectedSonarLintEngine engine = mock(ConnectedSonarLintEngine.class);
when(bindingManager.getConnectedEngine()).thenReturn(engine);
SonarQubeServer server = mock(SonarQubeServer.class);
when(server.getHostUrl()).thenReturn("http://dummyserver:9000");
when(bindingManager.getSonarQubeServer()).thenReturn(server);
// mock issues downloaded
when(engine.downloadServerIssues(any(ServerConfiguration.class), eq(PROJECT_KEY), eq(filename))).thenReturn(Collections.singletonList(serverIssue));
// run
settings.setBindingEnabled(true);
updater.initComponent();
updater.fetchAndMatchServerIssues(Collections.singletonList(file), indicator, false);
verify(issueManager, timeout(3000).times(1)).matchWithServerIssues(eq(file), argThat(issues -> issues.size() == 1));
verify(bindingManager).getConnectedEngine();
verify(console, never()).error(anyString());
verify(console, never()).error(anyString(), any(Throwable.class));
}
Aggregations