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;
}
}
}