package hudson.plugins.jira; import hudson.Extension; import hudson.Launcher; import hudson.model.AbstractProject; import hudson.model.BuildListener; import hudson.model.AbstractBuild; import hudson.tasks.BuildStepDescriptor; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Publisher; import hudson.tasks.Recorder; import net.sf.json.JSONObject; import org.kohsuke.stapler.StaplerRequest; import java.io.IOException; /** * Parses build changelog for JIRA issue IDs and then * updates JIRA issues accordingly. * * @author Kohsuke Kawaguchi */ public class JiraIssueUpdater extends Recorder { public JiraIssueUpdater() { } @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { return Updater.perform(build, listener); } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.BUILD; } @Override public DescriptorImpl getDescriptor() { return DESCRIPTOR; } @Extension public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl(); public static final class DescriptorImpl extends BuildStepDescriptor<Publisher> { private DescriptorImpl() { super(JiraIssueUpdater.class); } @Override public String getDisplayName() { // Displayed in the publisher section return Messages.JiraIssueUpdater_DisplayName(); } @Override public String getHelpFile() { return "/plugin/jira/help.html"; } @Override public Publisher newInstance(StaplerRequest req, JSONObject formData) { return new JiraIssueUpdater(); } @Override @SuppressWarnings("unchecked") public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } } }