public Issue assign(String issueKey, @Nullable String assignee) { verifyLoggedIn(); DbSession session = dbClient.openSession(false); try { DefaultIssue issue = getByKeyForUpdate(session, issueKey).toDefaultIssue(); User user = null; if (!Strings.isNullOrEmpty(assignee)) { user = userFinder.findByLogin(assignee); if (user == null) { throw new BadRequestException("Unknown user: " + assignee); } } IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.getLogin()); if (issueUpdater.assign(issue, user, context)) { saveIssue(session, issue, context, null); } return issue; } finally { session.close(); } }
@Override public Function.Context setAssignee(@Nullable User user) { updater.assign(issue, user, changeContext); return this; }
private void assignIssue(Issue issue, User user) { issueUpdater.assign((DefaultIssue) issue, user, changeContext); // To be taken into account by the IssuePersister launched at the end of the scan, // we have to put back then updated issue in the cache issueCache.put((DefaultIssue) issue); }