package hudson.plugins.skype;
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 java.io.IOException;
import java.util.logging.Logger;
import net.sf.json.JSONObject;
import org.kohsuke.stapler.StaplerRequest;
/**
* Skype Build Status
*
* @author udagawa
*/
public class SkypeBuildStatusPublisher extends Notifier {
@SuppressWarnings("unused")
private static final Logger LOGGER = Logger
.getLogger(SkypeBuildStatusPublisher.class.getName());
private SkypeBuildStatusPublisher() {
}
public BuildStepMonitor getRequiredMonitorService() {
return BuildStepMonitor.STEP;
}
@Override
public boolean prebuild(final AbstractBuild<?, ?> build,
final BuildListener listener) {
final SkypeHelper helper = new SkypeHelper();
final SkypeConfig config = helper.createBinding(build, null, listener);
helper.executeScript(SCRIPT_NAME_DEFAULT, config);
return true;
}
@Override
public boolean perform(final AbstractBuild<?, ?> build,
final Launcher launcher, final BuildListener listener)
throws InterruptedException, IOException {
final SkypeHelper helper = new SkypeHelper();
final SkypeConfig config = helper.createBinding(build, launcher,
listener);
helper.executeScript(SCRIPT_NAME_DEFAULT, config);
return true;
}
private static final String SCRIPT_NAME_DEFAULT = "skypeBuildStatus.groovy";
@Extension
public static final class DescriptorImpl extends BuildStepDescriptor<Publisher> {
private final String DISPLAY_NAME = "Skype Build Status";
public DescriptorImpl() {
super(SkypeBuildStatusPublisher.class);
load();
}
@Override
public String getDisplayName() {
return DISPLAY_NAME;
}
@Override
public String getHelpFile() {
return "/plugin/skype/help/skype.html";
}
@Override
public boolean isApplicable(Class<? extends AbstractProject> jobType) {
return true;
}
@Override
public SkypeBuildStatusPublisher newInstance(StaplerRequest req, JSONObject formData)
throws FormException {
return new SkypeBuildStatusPublisher();
}
}
}