package hudson.plugins.trackingsvn;
import hudson.EnvVars;
import hudson.model.AbstractBuild;
import hudson.model.EnvironmentContributingAction;
import hudson.model.Hudson;
import hudson.model.InvisibleAction;
import hudson.model.Job;
import hudson.model.Run;
import org.kohsuke.stapler.export.Exported;
import org.kohsuke.stapler.export.ExportedBean;
@ExportedBean
public class TrackingSVNAction extends InvisibleAction implements EnvironmentContributingAction {
private final String trackedBuildProject;
private final int trackedBuildNumber;
public TrackingSVNAction(Run<?,?> build) {
trackedBuildProject = build.getParent().getName();
trackedBuildNumber = build.getNumber();
}
public void buildEnvVars(AbstractBuild<?, ?> build, EnvVars env) {
env.put("TRACKING_SVN_BUILD", getTrackedBuildURL());
}
public Run<?,?> getTrackedBuild() {
Job<?,?> job = (Job<?,?>) Hudson.getInstance().getItem(trackedBuildProject);
return job.getBuildByNumber(trackedBuildNumber);
}
@Exported(visibility=2)
public String getTrackedBuildProject() {
return trackedBuildProject;
}
@Exported(visibility=2)
public int getTrackedBuildNumber() {
return trackedBuildNumber;
}
@Exported(visibility=2)
public String getTrackedBuildURL() {
Run<?,?> r = getTrackedBuild();
if (r == null) return null;
return Hudson.getInstance().getRootUrl() + r.getUrl();
}
}