aboutsummaryrefslogtreecommitdiffstats
path: root/sonar-server
diff options
context:
space:
mode:
authorJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>2013-08-12 13:45:58 +0200
committerJean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com>2013-08-12 13:45:58 +0200
commit13940870ccde5a2093031b66a50c66b79c318f50 (patch)
treee0e4cd7ec752b8fe39be059174bdfc2923efa58a /sonar-server
parentfabca195200bd227d5347d1dc1b47b3caee4fb4f (diff)
downloadsonarqube-13940870ccde5a2093031b66a50c66b79c318f50.tar.gz
sonarqube-13940870ccde5a2093031b66a50c66b79c318f50.zip
SONAR-4525 Use names instead of keys for action plans and users in issue changes notification emails
Diffstat (limited to 'sonar-server')
-rw-r--r--sonar-server/src/main/java/org/sonar/server/issue/AssignAction.java19
-rw-r--r--sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java22
2 files changed, 29 insertions, 12 deletions
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/AssignAction.java b/sonar-server/src/main/java/org/sonar/server/issue/AssignAction.java
index 735cfed12e7..808d8690f75 100644
--- a/sonar-server/src/main/java/org/sonar/server/issue/AssignAction.java
+++ b/sonar-server/src/main/java/org/sonar/server/issue/AssignAction.java
@@ -41,6 +41,8 @@ public class AssignAction extends Action implements ServerComponent {
private final UserFinder userFinder;
private final IssueUpdater issueUpdater;
+ private User assignee;
+
public AssignAction(UserFinder userFinder, IssueUpdater issueUpdater) {
super(KEY);
this.userFinder = userFinder;
@@ -50,8 +52,8 @@ public class AssignAction extends Action implements ServerComponent {
@Override
public boolean verify(Map<String, Object> properties, List<Issue> issues, UserSession userSession){
- String assignee = assignee(properties);
- if (!Strings.isNullOrEmpty(assignee) && userFinder.findByLogin(assignee) == null) {
+ String assignee = assigneeValue(properties);
+ if (!Strings.isNullOrEmpty(assignee) && getOrSelectUser(assignee) == null) {
throw new IllegalArgumentException("Unknown user: " + assignee);
}
return true;
@@ -59,11 +61,18 @@ public class AssignAction extends Action implements ServerComponent {
@Override
public boolean execute(Map<String, Object> properties, Context context) {
- User user = userFinder.findByLogin(assignee(properties));
- return issueUpdater.assign((DefaultIssue) context.issue(), user, context.issueChangeContext());
+ String assignee = assigneeValue(properties);
+ return issueUpdater.assign((DefaultIssue) context.issue(), getOrSelectUser(assignee), context.issueChangeContext());
}
- private String assignee(Map<String, Object> properties){
+ private String assigneeValue(Map<String, Object> properties) {
return (String) properties.get("assignee");
}
+
+ private User getOrSelectUser(String assigneeKey) {
+ if(assignee == null) {
+ assignee = userFinder.findByLogin(assigneeKey);
+ }
+ return assignee;
+ }
} \ No newline at end of file
diff --git a/sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java b/sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java
index b357474775e..2ff701d364e 100644
--- a/sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java
+++ b/sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java
@@ -40,6 +40,8 @@ public class PlanAction extends Action implements ServerComponent {
private final ActionPlanService actionPlanService;
private final IssueUpdater issueUpdater;
+ private ActionPlan actionPlan;
+
public PlanAction(ActionPlanService actionPlanService, IssueUpdater issueUpdater) {
super(KEY);
this.actionPlanService = actionPlanService;
@@ -49,11 +51,11 @@ public class PlanAction extends Action implements ServerComponent {
@Override
public boolean verify(Map<String, Object> properties, List<Issue> issues, UserSession userSession) {
- String actionPlanKey = planKey(properties);
- if (!Strings.isNullOrEmpty(actionPlanKey)) {
- ActionPlan actionPlan = actionPlanService.findByKey(actionPlanKey, userSession);
+ String actionPlanValue = planValue(properties);
+ if (!Strings.isNullOrEmpty(actionPlanValue)) {
+ ActionPlan actionPlan = getOrSelectActionPlan(actionPlanValue, userSession);
if (actionPlan == null) {
- throw new IllegalArgumentException("Unknown action plan: " + actionPlanKey);
+ throw new IllegalArgumentException("Unknown action plan: " + actionPlanValue);
}
verifyIssuesAreAllRelatedOnActionPlanProject(issues, actionPlan);
}
@@ -62,11 +64,11 @@ public class PlanAction extends Action implements ServerComponent {
@Override
public boolean execute(Map<String, Object> properties, Context context) {
- ActionPlan actionPlan = actionPlanService.findByKey(planKey(properties), UserSession.get());
- return issueUpdater.plan((DefaultIssue) context.issue(), actionPlan, context.issueChangeContext());
+ String actionPlan = planValue(properties);
+ return issueUpdater.plan((DefaultIssue) context.issue(), getOrSelectActionPlan(actionPlan, UserSession.get()), context.issueChangeContext());
}
- private String planKey(Map<String, Object> properties) {
+ private String planValue(Map<String, Object> properties) {
return (String) properties.get("plan");
}
@@ -81,4 +83,10 @@ public class PlanAction extends Action implements ServerComponent {
}
}
+ private ActionPlan getOrSelectActionPlan(String planValue, UserSession userSession) {
+ if(actionPlan == null) {
+ actionPlan = actionPlanService.findByKey(planValue, userSession);
+ }
+ return actionPlan;
+ }
} \ No newline at end of file