package hudson.plugins.mantis; 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.Publisher; import hudson.tasks.Recorder; import java.io.IOException; import net.sf.json.JSONObject; import org.kohsuke.stapler.DataBoundConstructor; import org.kohsuke.stapler.StaplerRequest; /** * Parses changelog for Mantis issue IDs and updates Mantis issues. * * @author Seiji Sogabe */ public final class MantisIssueUpdater extends Recorder { private final boolean keepNotePrivate; private final boolean recordChangelog; @DataBoundConstructor public MantisIssueUpdater(final boolean keepNotePrivate, final boolean recordChangelog) { this.keepNotePrivate = keepNotePrivate; this.recordChangelog = recordChangelog; } public boolean isKeepNotePrivate() { return keepNotePrivate; } public boolean isRecordChangelog() { return recordChangelog; } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.NONE; } @Override public boolean perform(final AbstractBuild<?, ?> build, final Launcher launcher, final BuildListener listener) throws InterruptedException, IOException { final Updater updater = new Updater(this); return updater.perform(build, listener); } @Extension public static final class DescriptorImpl extends BuildStepDescriptor<Publisher> { public DescriptorImpl() { super(MantisIssueUpdater.class); } @Override public String getDisplayName() { return Messages.MantisIssueUpdater_DisplayName(); } @Override public String getHelpFile() { return "/plugin/mantis/help.html"; } @Override public boolean isApplicable(Class<? extends AbstractProject> jobType) { return true; } @Override public Publisher newInstance(final StaplerRequest req, final JSONObject formData) { return req.bindJSON(MantisIssueUpdater.class, formData); } } }