diff options
author | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-08-12 13:45:58 +0200 |
---|---|---|
committer | Jean-Baptiste Vilain <jean-baptiste.vilain@sonarsource.com> | 2013-08-12 13:45:58 +0200 |
commit | 13940870ccde5a2093031b66a50c66b79c318f50 (patch) | |
tree | e0e4cd7ec752b8fe39be059174bdfc2923efa58a /sonar-server | |
parent | fabca195200bd227d5347d1dc1b47b3caee4fb4f (diff) | |
download | sonarqube-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.java | 19 | ||||
-rw-r--r-- | sonar-server/src/main/java/org/sonar/server/issue/PlanAction.java | 22 |
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 |