package hudson.plugins.jira;
import hudson.Extension;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.tasks.BuildStepDescriptor;
import hudson.tasks.BuildStepMonitor;
import hudson.tasks.Notifier;
import hudson.tasks.Publisher;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.StaplerRequest;
/**
* Task which releases the jira version specified in the parameters when the build completes.
*
* @author Justen Walker justen.walker@gmail.com
* @deprecated Replaced by {@link JiraReleaseVersionUpdaterBuilder} which can be used as a PostBuild step with conditional triggering.<br>
* Kept for backward compatibility.
*/
public class JiraReleaseVersionUpdater extends Notifier {
private static final long serialVersionUID = 699563338312232811L;
private String jiraProjectKey;
private String jiraRelease;
@DataBoundConstructor
public JiraReleaseVersionUpdater(String jiraProjectKey, String jiraRelease) {
this.jiraRelease = jiraRelease;
this.jiraProjectKey = jiraProjectKey;
}
public String getJiraRelease() {
return jiraRelease;
}
public void setJiraRelease(String jiraRelease) {
this.jiraRelease = jiraRelease;
}
public String getJiraProjectKey() {
return jiraProjectKey;
}
public void setJiraProjectKey(String jiraProjectKey) {
this.jiraProjectKey = jiraProjectKey;
}
@Override
public BuildStepDescriptor<Publisher> getDescriptor() {
return DESCRIPTOR;
}
@Extension
public static final DescriptorImpl DESCRIPTOR = new DescriptorImpl();
@Override
public boolean perform(AbstractBuild<?, ?> build, Launcher launcher,
BuildListener listener) {
return VersionReleaser.perform(getSiteForProject(build.getProject()), jiraProjectKey, jiraRelease, build, listener);
}
JiraSite getSiteForProject(AbstractProject<?, ?> project) {
return JiraSite.get(project);
}
public BuildStepMonitor getRequiredMonitorService() {
return BuildStepMonitor.BUILD;
}
public static class DescriptorImpl extends BuildStepDescriptor<Publisher> {
public DescriptorImpl() {
super(JiraReleaseVersionUpdater.class);
}
@Override
public JiraReleaseVersionUpdater newInstance(StaplerRequest req,
JSONObject formData) throws FormException {
return req.bindJSON(JiraReleaseVersionUpdater.class, formData);
}
@Override
public boolean isApplicable(Class<? extends AbstractProject> jobType) {
return true;
}
@Override
public String getDisplayName() {
return Messages.JiraReleaseVersionBuilder_DisplayName();
}
@Override
public String getHelpFile() {
return "/plugin/jira/help-release.html";
}
}
}