package pl.touk.jenkins.spark;
import hudson.Extension;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Result;
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;
public class SparkNotifier extends Notifier {
@DataBoundConstructor
public SparkNotifier() { }
@Override
public boolean perform(AbstractBuild build, Launcher launcher, BuildListener listener) {
SparkApi api = SparkApiFactory.getInstance(getDescriptor().accessToken, getDescriptor().deviceId);
if (build.getResult() == Result.FAILURE) {
api.notify(getDescriptor().function);
}
return true;
}
public BuildStepMonitor getRequiredMonitorService() {
return BuildStepMonitor.NONE;
}
@Override
public DescriptorImpl getDescriptor() {
return (DescriptorImpl) super.getDescriptor();
}
@Extension
public static class DescriptorImpl extends BuildStepDescriptor<Publisher> {
private String accessToken;
private String deviceId;
private String function;
public DescriptorImpl() {
load();
}
public String getAccessToken() {
return accessToken;
}
public String getDeviceId() {
return deviceId;
}
public String getFunction() {
return function;
}
public boolean isApplicable(Class<? extends AbstractProject> aClass) {
return true;
}
public String getDisplayName() {
return "Spark notifier";
}
@Override
public boolean configure(StaplerRequest req, JSONObject formData) throws FormException {
accessToken = formData.getString("accessToken");
deviceId = formData.getString("deviceId");
function = formData.getString("function");
save();
return super.configure(req,formData);
}
}
}