aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-scanner-engine/src/main
diff options
context:
space:
mode:
authorDuarte Meneses <duarte.meneses@sonarsource.com>2017-04-11 15:05:06 +0200
committerdbmeneses <duarte.meneses@sonarsource.com>2017-04-12 09:33:10 +0200
commitdf9e95d9da11cafb5d894b589a80c614b654a9b1 (patch)
treef35d27655f1ba130f732135084734f5f428b02a0 /sonar-scanner-engine/src/main
parent8893f0dab4f866ac9a49cf4723fb6340196560d3 (diff)
downloadsonarqube-df9e95d9da11cafb5d894b589a80c614b654a9b1.tar.gz
sonarqube-df9e95d9da11cafb5d894b589a80c614b654a9b1.zip
SONAR-9080 Stop using api/batch/users
Diffstat (limited to 'sonar-scanner-engine/src/main')
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueCallback.java48
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/UserRepositoryLoader.java114
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/package-info.java23
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java4
-rw-r--r--sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/JSONReport.java19
5 files changed, 12 insertions, 196 deletions
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueCallback.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueCallback.java
index c4061dc6092..e1c8531e6b9 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueCallback.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/issue/DefaultIssueCallback.java
@@ -19,43 +19,29 @@
*/
package org.sonar.scanner.issue;
-import org.apache.commons.lang.StringUtils;
import org.sonar.api.rule.RuleKey;
import org.sonar.batch.bootstrapper.IssueListener;
import org.sonar.api.batch.rule.Rule;
import org.sonar.api.batch.rule.Rules;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
import org.sonar.scanner.issue.tracking.TrackedIssue;
-import org.sonar.scanner.protocol.input.ScannerInput.User;
-import org.sonar.scanner.repository.user.UserRepositoryLoader;
public class DefaultIssueCallback implements IssueCallback {
private final IssueCache issues;
private final IssueListener listener;
- private final UserRepositoryLoader userRepository;
private final Rules rules;
- private Set<String> userLoginNames = new HashSet<>();
- private Map<String, String> userMap = new HashMap<>();
- private Set<RuleKey> ruleKeys = new HashSet<>();
-
- public DefaultIssueCallback(IssueCache issues, IssueListener listener, UserRepositoryLoader userRepository, Rules rules) {
+ public DefaultIssueCallback(IssueCache issues, IssueListener listener, Rules rules) {
this.issues = issues;
this.listener = listener;
- this.userRepository = userRepository;
this.rules = rules;
}
/**
* If no listener exists, this constructor will be used by pico.
*/
- public DefaultIssueCallback(IssueCache issues, UserRepositoryLoader userRepository, Rules rules) {
- this(issues, null, userRepository, rules);
+ public DefaultIssueCallback(IssueCache issues, Rules rules) {
+ this(issues, null, rules);
}
@Override
@@ -65,15 +51,9 @@ public class DefaultIssueCallback implements IssueCallback {
}
for (TrackedIssue issue : issues.all()) {
- collectInfo(issue);
- }
-
- getUsers();
-
- for (TrackedIssue issue : issues.all()) {
IssueListener.Issue newIssue = new IssueListener.Issue();
newIssue.setAssigneeLogin(issue.assignee());
- newIssue.setAssigneeName(getAssigneeName(issue.assignee()));
+ newIssue.setAssigneeName(issue.assignee());
newIssue.setComponentKey(issue.componentKey());
newIssue.setKey(issue.key());
newIssue.setMessage(issue.getMessage());
@@ -92,26 +72,6 @@ public class DefaultIssueCallback implements IssueCallback {
}
}
- private void collectInfo(TrackedIssue issue) {
- if (!StringUtils.isEmpty(issue.assignee())) {
- userLoginNames.add(issue.assignee());
- }
- if (issue.getRuleKey() != null) {
- ruleKeys.add(issue.getRuleKey());
- }
- }
-
- private String getAssigneeName(String login) {
- return userMap.get(login);
- }
-
- private void getUsers() {
- Map<String, User> map = userRepository.map(userLoginNames);
-
- userMap = map.entrySet().stream()
- .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue().getName()));
- }
-
private String getRuleName(RuleKey ruleKey) {
Rule rule = rules.find(ruleKey);
return rule != null ? rule.name() : null;
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/UserRepositoryLoader.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/UserRepositoryLoader.java
deleted file mode 100644
index 365739bc93e..00000000000
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/UserRepositoryLoader.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-package org.sonar.scanner.repository.user;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import org.apache.commons.io.IOUtils;
-import org.sonar.scanner.bootstrap.ScannerWsClient;
-import org.sonar.scanner.protocol.input.ScannerInput;
-import org.sonar.scanner.util.ScannerUtils;
-import org.sonarqube.ws.client.GetRequest;
-
-public class UserRepositoryLoader {
- private final ScannerWsClient wsClient;
-
- public UserRepositoryLoader(ScannerWsClient wsClient) {
- this.wsClient = wsClient;
- }
-
- public ScannerInput.User load(String userLogin) {
- InputStream is = loadQuery(new UserEncodingFunction().apply(userLogin));
- return parseUser(is);
- }
-
- public Collection<ScannerInput.User> load(Collection<String> userLogins) {
- if (userLogins.isEmpty()) {
- return Collections.emptyList();
- }
- UserEncodingFunction userEncodingFunction = new UserEncodingFunction();
- String encodedUserLogins = userLogins.stream()
- .map(userEncodingFunction::apply)
- .collect(Collectors.joining(","));
- InputStream is = loadQuery(encodedUserLogins);
-
- return parseUsers(is);
- }
-
- public Map<String, ScannerInput.User> map(Collection<String> userLogins) {
- Collection<ScannerInput.User> users = load(userLogins);
- Map<String, ScannerInput.User> map = new HashMap<>();
-
- for (ScannerInput.User user : users) {
- map.put(user.getLogin(), user);
- }
- return map;
- }
-
- private InputStream loadQuery(String loginsQuery) {
- GetRequest getRequest = new GetRequest("/batch/users?logins=" + loginsQuery);
- return wsClient.call(getRequest).contentStream();
- }
-
- private static class UserEncodingFunction implements Function<String, String> {
- @Override
- public String apply(String input) {
- return ScannerUtils.encodeForUrl(input);
- }
- }
-
- private static ScannerInput.User parseUser(InputStream is) {
- try {
- return ScannerInput.User.parseDelimitedFrom(is);
- } catch (IOException e) {
- throw new IllegalStateException("Unable to get user details from server", e);
- } finally {
- IOUtils.closeQuietly(is);
- }
- }
-
- private static Collection<ScannerInput.User> parseUsers(InputStream is) {
- List<ScannerInput.User> users = new ArrayList<>();
-
- try {
- ScannerInput.User user = ScannerInput.User.parseDelimitedFrom(is);
- while (user != null) {
- users.add(user);
- user = ScannerInput.User.parseDelimitedFrom(is);
- }
- } catch (IOException e) {
- throw new IllegalStateException("Unable to get user details from server", e);
- } finally {
- IOUtils.closeQuietly(is);
- }
-
- return users;
- }
-
-}
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/package-info.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/package-info.java
deleted file mode 100644
index 8d4219d7814..00000000000
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/repository/user/package-info.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * SonarQube
- * Copyright (C) 2009-2017 SonarSource SA
- * mailto:info AT sonarsource DOT com
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-@ParametersAreNonnullByDefault
-package org.sonar.scanner.repository.user;
-
-import javax.annotation.ParametersAreNonnullByDefault;
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java
index aede44cda81..b3a9fb68c21 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/ProjectScanContainer.java
@@ -80,7 +80,6 @@ import org.sonar.scanner.repository.QualityProfileLoader;
import org.sonar.scanner.repository.QualityProfileProvider;
import org.sonar.scanner.repository.ServerIssuesLoader;
import org.sonar.scanner.repository.language.DefaultLanguagesRepository;
-import org.sonar.scanner.repository.user.UserRepositoryLoader;
import org.sonar.scanner.rule.ActiveRulesLoader;
import org.sonar.scanner.rule.ActiveRulesProvider;
import org.sonar.scanner.rule.DefaultActiveRulesLoader;
@@ -200,8 +199,7 @@ public class ProjectScanContainer extends ComponentContainer {
CpdExecutor.class,
SonarCpdBlockIndex.class,
- ScanTaskObservers.class,
- UserRepositoryLoader.class);
+ ScanTaskObservers.class);
addIfMissing(DefaultRulesLoader.class, RulesLoader.class);
addIfMissing(DefaultActiveRulesLoader.class, ActiveRulesLoader.class);
diff --git a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/JSONReport.java b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/JSONReport.java
index 05ab73ac247..7db8f84929a 100644
--- a/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/JSONReport.java
+++ b/sonar-scanner-engine/src/main/java/org/sonar/scanner/scan/report/JSONReport.java
@@ -53,9 +53,6 @@ import org.sonar.api.utils.text.JsonWriter;
import org.sonar.core.component.ComponentKeys;
import org.sonar.scanner.issue.IssueCache;
import org.sonar.scanner.issue.tracking.TrackedIssue;
-import org.sonar.scanner.protocol.input.ScannerInput;
-import org.sonar.scanner.protocol.input.ScannerInput.User;
-import org.sonar.scanner.repository.user.UserRepositoryLoader;
import org.sonar.scanner.scan.filesystem.InputComponentStore;
@Properties({
@@ -75,12 +72,11 @@ public class JSONReport implements Reporter {
private final IssueCache issueCache;
private final InputComponentStore componentStore;
private final DefaultInputModule rootModule;
- private final UserRepositoryLoader userRepository;
private final InputModuleHierarchy moduleHierarchy;
private final InputComponentTree inputComponentTree;
public JSONReport(InputModuleHierarchy moduleHierarchy, Settings settings, FileSystem fileSystem, Server server, Rules rules, IssueCache issueCache,
- DefaultInputModule rootModule, InputComponentStore componentStore, UserRepositoryLoader userRepository, InputComponentTree inputComponentTree) {
+ DefaultInputModule rootModule, InputComponentStore componentStore, InputComponentTree inputComponentTree) {
this.moduleHierarchy = moduleHierarchy;
this.settings = settings;
this.fileSystem = fileSystem;
@@ -89,7 +85,6 @@ public class JSONReport implements Reporter {
this.issueCache = issueCache;
this.rootModule = rootModule;
this.componentStore = componentStore;
- this.userRepository = userRepository;
this.inputComponentTree = inputComponentTree;
}
@@ -232,15 +227,15 @@ public class JSONReport implements Reporter {
json.endArray();
}
- private void writeUsers(JsonWriter json, Collection<String> userLogins) throws IOException {
- Collection<User> users = userRepository.load(userLogins);
-
+ private static void writeUsers(JsonWriter json, Collection<String> userLogins) throws IOException {
json.name("users").beginArray();
- for (ScannerInput.User user : users) {
+
+ // for compatiblity with programs that parse the json report. We no longer get the name for logins.
+ for (String user : userLogins) {
json
.beginObject()
- .prop("login", user.getLogin())
- .prop("name", user.getName())
+ .prop("login", user)
+ .prop("name", user)
.endObject();
}
json.endArray();