diff options
author | Duarte Meneses <duarte.meneses@sonarsource.com> | 2017-04-11 15:05:06 +0200 |
---|---|---|
committer | dbmeneses <duarte.meneses@sonarsource.com> | 2017-04-12 09:33:10 +0200 |
commit | df9e95d9da11cafb5d894b589a80c614b654a9b1 (patch) | |
tree | f35d27655f1ba130f732135084734f5f428b02a0 /sonar-scanner-engine/src/main | |
parent | 8893f0dab4f866ac9a49cf4723fb6340196560d3 (diff) | |
download | sonarqube-df9e95d9da11cafb5d894b589a80c614b654a9b1.tar.gz sonarqube-df9e95d9da11cafb5d894b589a80c614b654a9b1.zip |
SONAR-9080 Stop using api/batch/users
Diffstat (limited to 'sonar-scanner-engine/src/main')
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(); |