From: Jean-Baptiste Lievremont Date: Tue, 25 Nov 2014 09:09:56 +0000 (+0100) Subject: SONAR-5872 Add module key on issues in api/issues/search X-Git-Tag: 5.0-RC1~225 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=f0c1fe896bdc865aadcef49e3224e64b37888864;p=sonarqube.git SONAR-5872 Add module key on issues in api/issues/search --- diff --git a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java index c71765fd7ea..bf6576634a8 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java +++ b/server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java @@ -279,18 +279,7 @@ public class SearchAction extends SearchRequestHandler { } } - Collection facetRules = result.getFacetValues(IssueFilterParameters.RULES); - if (facetRules != null) { - for (FacetValue rule: facetRules) { - ruleKeys.add(RuleKey.parse(rule.getKey())); - } - } - List rulesFromRequest = request.paramAsStrings(IssueFilterParameters.RULES); - if (rulesFromRequest != null ) { - for (String ruleKey: rulesFromRequest) { - ruleKeys.add(RuleKey.parse(ruleKey)); - } - } + collectRuleKeys(request, result, ruleKeys); collectFacetsData(request, result, projectUuids, componentUuids, userLogins, actionPlanKeys); @@ -342,6 +331,21 @@ public class SearchAction extends SearchRequestHandler { writeLegacyPaging(context, json, result); } + private void collectRuleKeys(Request request, Result result, Set ruleKeys) { + Collection facetRules = result.getFacetValues(IssueFilterParameters.RULES); + if (facetRules != null) { + for (FacetValue rule: facetRules) { + ruleKeys.add(RuleKey.parse(rule.getKey())); + } + } + List rulesFromRequest = request.paramAsStrings(IssueFilterParameters.RULES); + if (rulesFromRequest != null ) { + for (String ruleKey: rulesFromRequest) { + ruleKeys.add(RuleKey.parse(ruleKey)); + } + } + } + @Override protected void writeFacets(Request request, QueryContext context, Result results, JsonWriter json) { addMandatoryFacetValues(results, IssueFilterParameters.SEVERITIES, Severity.ALL); @@ -469,7 +473,13 @@ public class SearchAction extends SearchRequestHandler { String actionPlanKey = issue.actionPlanKey(); ComponentDto file = componentsByUuid.get(issue.componentUuid()); - ComponentDto project = file != null ? projectsByComponentUuid.get(file.uuid()) : null; + ComponentDto project = null, subProject = null; + if (file != null) { + project = projectsByComponentUuid.get(file.uuid()); + if (! file.projectUuid().equals(file.moduleUuid())) { + subProject = componentsByUuid.get(file.moduleUuid()); + } + } Duration debt = issue.debt(); Date updateDate = issue.updateDate(); @@ -479,6 +489,7 @@ public class SearchAction extends SearchRequestHandler { // Only used for the compatibility with the Issues Java WS Client <= 4.4 used by Eclipse .prop("componentId", file != null ? file.getId() : null) .prop("project", project != null ? project.getKey() : null) + .prop("subProject", subProject != null ? subProject.getKey() : null) .prop("rule", issue.ruleKey().toString()) .prop("status", issue.status()) .prop("resolution", issue.resolution()) @@ -548,23 +559,35 @@ public class SearchAction extends SearchRequestHandler { actionsWriter.writeTransitions(issue, json); } - String assignee = issue.assignee(); - if (extraFields.contains(ASSIGNEE_NAME_EXTRA_FIELD) && assignee != null) { - User user = usersByLogin.get(assignee); - json.prop(ASSIGNEE_NAME_EXTRA_FIELD, user != null ? user.name() : null); - } + writeAssigneeIfNeeded(issue, usersByLogin, extraFields, json); - String reporter = issue.reporter(); - if (extraFields.contains(REPORTER_NAME_EXTRA_FIELD) && reporter != null) { - User user = usersByLogin.get(reporter); - json.prop(REPORTER_NAME_EXTRA_FIELD, user != null ? user.name() : null); - } + writeReporterIfNeeded(issue, usersByLogin, extraFields, json); - String actionPlanKey = issue.actionPlanKey(); - if (extraFields.contains(ACTION_PLAN_NAME_EXTRA_FIELD) && actionPlanKey != null) { - ActionPlan actionPlan = actionPlanByKeys.get(actionPlanKey); - json.prop(ACTION_PLAN_NAME_EXTRA_FIELD, actionPlan != null ? actionPlan.name() : null); - } + writeActionPlanIfNeeded(issue, actionPlanByKeys, extraFields, json); + } + } + + private void writeAssigneeIfNeeded(Issue issue, Map usersByLogin, List extraFields, JsonWriter json) { + String assignee = issue.assignee(); + if (extraFields.contains(ASSIGNEE_NAME_EXTRA_FIELD) && assignee != null) { + User user = usersByLogin.get(assignee); + json.prop(ASSIGNEE_NAME_EXTRA_FIELD, user != null ? user.name() : null); + } + } + + private void writeReporterIfNeeded(Issue issue, Map usersByLogin, List extraFields, JsonWriter json) { + String reporter = issue.reporter(); + if (extraFields.contains(REPORTER_NAME_EXTRA_FIELD) && reporter != null) { + User user = usersByLogin.get(reporter); + json.prop(REPORTER_NAME_EXTRA_FIELD, user != null ? user.name() : null); + } + } + + private void writeActionPlanIfNeeded(Issue issue, Map actionPlanByKeys, List extraFields, JsonWriter json) { + String actionPlanKey = issue.actionPlanKey(); + if (extraFields.contains(ACTION_PLAN_NAME_EXTRA_FIELD) && actionPlanKey != null) { + ActionPlan actionPlan = actionPlanByKeys.get(actionPlanKey); + json.prop(ACTION_PLAN_NAME_EXTRA_FIELD, actionPlan != null ? actionPlan.name() : null); } }