public Issue plan(String issueKey, @Nullable String actionPlanKey) { verifyLoggedIn(); DbSession session = dbClient.openSession(false); try { ActionPlan actionPlan = null; if (!Strings.isNullOrEmpty(actionPlanKey)) { actionPlan = actionPlanService.findByKey(actionPlanKey, userSession); if (actionPlan == null) { throw new BadRequestException("Unknown action plan: " + actionPlanKey); } } DefaultIssue issue = getByKeyForUpdate(session, issueKey).toDefaultIssue(); IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.getLogin()); if (issueUpdater.plan(issue, actionPlan, context)) { saveIssue(session, issue, context, null); } return issue; } finally { session.close(); } }
public DefaultIssue createManualIssue( String componentKey, RuleKey ruleKey, @Nullable Integer line, @Nullable String message, @Nullable String severity) { verifyLoggedIn(); DbSession dbSession = dbClient.openSession(false); try { Optional<ComponentDto> componentOptional = dbClient.componentDao().selectByKey(dbSession, componentKey); if (!componentOptional.isPresent()) { throw new BadRequestException( String.format("Component with key '%s' not found", componentKey)); } ComponentDto component = componentOptional.get(); ComponentDto project = dbClient.componentDao().selectOrFailByUuid(dbSession, component.projectUuid()); userSession.checkComponentPermission(UserRole.USER, project.getKey()); if (!ruleKey.isManual()) { throw new IllegalArgumentException( "Issues can be created only on rules marked as 'manual': " + ruleKey); } Rule rule = getNullableRuleByKey(ruleKey); if (rule == null) { throw new IllegalArgumentException("Unknown rule: " + ruleKey); } DefaultIssue issue = new DefaultIssueBuilder() .componentKey(component.getKey()) .projectKey(project.getKey()) .line(line) .message(!Strings.isNullOrEmpty(message) ? message : rule.getName()) .severity(Objects.firstNonNull(severity, Severity.MAJOR)) .ruleKey(ruleKey) .reporter(userSession.getLogin()) .assignee(findSourceLineUser(dbSession, component.uuid(), line)) .build(); Date now = new Date(); issue.setCreationDate(now); issue.setUpdateDate(now); issueStorage.save(issue); return issue; } finally { dbSession.close(); } }
public Collection<String> setTags(String issueKey, Collection<String> tags) { verifyLoggedIn(); DbSession session = dbClient.openSession(false); try { DefaultIssue issue = getByKeyForUpdate(session, issueKey).toDefaultIssue(); IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.getLogin()); if (issueUpdater.setTags(issue, tags, context)) { saveIssue(session, issue, context, null); } return issue.tags(); } finally { session.close(); } }
public Issue setSeverity(String issueKey, String severity) { verifyLoggedIn(); DbSession session = dbClient.openSession(false); try { DefaultIssue issue = getByKeyForUpdate(session, issueKey).toDefaultIssue(); userSession.checkComponentPermission(UserRole.ISSUE_ADMIN, issue.projectKey()); IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.getLogin()); if (issueUpdater.setManualSeverity(issue, severity, context)) { saveIssue(session, issue, context, null); } return issue; } finally { session.close(); } }
public Issue doTransition(String issueKey, String transitionKey) { verifyLoggedIn(); DbSession session = dbClient.openSession(false); try { DefaultIssue defaultIssue = getByKeyForUpdate(session, issueKey).toDefaultIssue(); IssueChangeContext context = IssueChangeContext.createUser(new Date(), userSession.getLogin()); checkTransitionPermission(transitionKey, userSession, defaultIssue); if (workflow.doTransition(defaultIssue, transitionKey, context)) { saveIssue(session, defaultIssue, context, null); } return defaultIssue; } finally { session.close(); } }
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(); } }