package hudson.plugins.jira; import java.net.URL; import java.util.Set; import com.google.common.base.Objects; import com.google.common.collect.Sets; import hudson.model.Action; import hudson.model.Run; import hudson.plugins.jira.model.JiraIssue; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; import javax.annotation.Nonnull; /** * JIRA issues related to the build. * * @author Kohsuke Kawaguchi */ @ExportedBean public class JiraBuildAction implements Action { public final Run<?, ?> owner; private Set<JiraIssue> issues; public JiraBuildAction(@Nonnull Run<?, ?> owner, @Nonnull Set<JiraIssue> issues) { this.owner = owner; this.issues = Sets.newHashSet(issues); } public String getIconFileName() { return null; } public String getDisplayName() { return Messages.JiraBuildAction_DisplayName(); } public String getUrlName() { return "jira"; } @Exported(inline = true) public Set<JiraIssue> getIssues() { return issues; } @Exported public String getServerURL() { JiraSite jiraSite = JiraSite.get(owner.getParent()); URL url = jiraSite != null ? jiraSite.getUrl() : null; return url != null ? url.toString() : null; } /** * Finds {@link JiraIssue} whose ID matches the given one. * @param issueID e.g. JENKINS-1234 * @return JIRAIssue representing the issueID */ public JiraIssue getIssue(String issueID) { for (JiraIssue issue : issues) { if (issue.getKey().equals(issueID)) { return issue; } } return null; } public void addIssues(Set<JiraIssue> issuesToBeSaved) { this.issues.addAll(issuesToBeSaved); } }