package hudson.plugins.build_publisher;
import hudson.Extension;
import hudson.Plugin;
import hudson.util.FormFieldValidator;
import hudson.model.Hudson;
import hudson.model.ManagementLink;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.StaplerResponse;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
/**
* Entry point of a plugin.
*
* <p>
* There must be one {@link Plugin} class in each plugin. See javadoc of
* {@link Plugin} for more about what can be done on this class.
*
* @author Kohsuke Kawaguchi
* @plugin
*/
public class BuildPublisherPlugin extends Plugin {
@Extension
public static class BuildPublisherManagementLink extends ManagementLink {
public String getIconFileName() {
return "redo.gif";
}
public String getUrlName() {
return "plugin/build-publisher/";
}
public String getDisplayName() {
return "Build Publishing Status";
}
@Override
public String getDescription() {
return "Monitor the status of the <a href='http://wiki.hudson-ci.org/display/HUDSON/Build+Publisher+Plugin'>build-publisher plugin</a>";
}
}
// for Jelly
public HudsonInstance[] getHudsonInstances() {
return BuildPublisher.DESCRIPTOR.getPublicInstances();
}
// bind HudsonInstance to Jelly views
public HudsonInstance getInstance(int n) {
return getHudsonInstances()[n];
}
public void doRetryNow(StaplerRequest req, StaplerResponse rsp, @QueryParameter("name") String name) throws IOException {
Hudson.getInstance().checkPermission(Hudson.ADMINISTER);
HudsonInstance h = BuildPublisher.DESCRIPTOR.getHudsonInstanceForName(name);
if(h==null) {
rsp.sendError(HttpServletResponse.SC_BAD_REQUEST,"No such name: "+name);
return;
}
h.getPublisherThread().interrupt();
rsp.sendRedirect(".");
}
public void doResurrect(StaplerRequest req, StaplerResponse rsp, @QueryParameter("name") String name) throws IOException {
Hudson.getInstance().checkPermission(Hudson.ADMINISTER);
HudsonInstance h = BuildPublisher.DESCRIPTOR.getHudsonInstanceForName(name);
if(h==null) {
rsp.sendError(HttpServletResponse.SC_BAD_REQUEST,"No such name: "+name);
return;
}
h.initPublisherThread();
rsp.sendRedirect(".");
}
// form field validation
public void doCheckHudsonUrl(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException {
new FormFieldValidator.HudsonURL(req,rsp).process();
}
}