summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-11-25 10:09:56 +0100
committerJean-Baptiste Lievremont <jean-baptiste.lievremont@sonarsource.com>2014-11-25 11:47:12 +0100
commitf0c1fe896bdc865aadcef49e3224e64b37888864 (patch)
tree4f50da37120250be009b35c909ca8e5b2f79855b
parenta2d4db6fedfe509875a489fbe97a734cc53b2c7e (diff)
downloadsonarqube-f0c1fe896bdc865aadcef49e3224e64b37888864.tar.gz
sonarqube-f0c1fe896bdc865aadcef49e3224e64b37888864.zip
SONAR-5872 Add module key on issues in api/issues/search
-rw-r--r--server/sonar-server/src/main/java/org/sonar/server/issue/ws/SearchAction.java79
1 files changed, 51 insertions, 28 deletions
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<IssueQuery, Issue> {
}
}
- Collection<FacetValue> facetRules = result.getFacetValues(IssueFilterParameters.RULES);
- if (facetRules != null) {
- for (FacetValue rule: facetRules) {
- ruleKeys.add(RuleKey.parse(rule.getKey()));
- }
- }
- List<String> 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<IssueQuery, Issue> {
writeLegacyPaging(context, json, result);
}
+ private void collectRuleKeys(Request request, Result<Issue> result, Set<RuleKey> ruleKeys) {
+ Collection<FacetValue> facetRules = result.getFacetValues(IssueFilterParameters.RULES);
+ if (facetRules != null) {
+ for (FacetValue rule: facetRules) {
+ ruleKeys.add(RuleKey.parse(rule.getKey()));
+ }
+ }
+ List<String> 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<IssueQuery, Issue> {
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<IssueQuery, Issue> {
// 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<IssueQuery, Issue> {
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<String, User> usersByLogin, List<String> 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<String, User> usersByLogin, List<String> 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<String, ActionPlan> actionPlanByKeys, List<String> 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);
}
}