package hudson.plugins.statusmonitor; import hudson.Extension; import hudson.Launcher; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; import hudson.model.Action; import hudson.model.BuildListener; import hudson.model.Hudson; import hudson.tasks.BuildStepMonitor; import hudson.tasks.Notifier; import java.io.IOException; import java.util.List; public class MonitorPublisher extends Notifier { @Extension public static final MonitorDescriptor DESCRIPTOR = new MonitorDescriptor(); @Override public boolean needsToRunAfterFinalized() { return false; } @Override public Action getProjectAction(AbstractProject<?, ?> project) { return null; } @Override public boolean perform(AbstractBuild<?, ?> build, Launcher launcher, BuildListener listener) throws InterruptedException, IOException { installMonitor(); return true; } /** * Installs MonitorAction onto the front page. If it is already installed, nothing happens. */ private void installMonitor() { boolean isInstalled = false; List<Action> installedActions = Hudson.getInstance().getActions(); for (Action installedAction: installedActions) { if (installedAction instanceof MonitorAction) { isInstalled = true; break; } } if (!isInstalled) { MonitorAction action = new MonitorAction(); Hudson.getInstance().getActions().add(action); } } public BuildStepMonitor getRequiredMonitorService() { return BuildStepMonitor.STEP; } }