package hudson.plugins.promoted_builds;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.InvisibleAction;
import hudson.plugins.promoted_builds.util.JenkinsHelper;
import javax.annotation.CheckForNull;
/**
* Remembers what build it's promoting. Attached to {@link Promotion}.
*
* @author Kohsuke Kawaguchi
*/
public class PromotionTargetAction extends InvisibleAction {
private final String jobName;
private final int number;
public PromotionTargetAction(AbstractBuild<?,?> build) {
jobName = build.getParent().getFullName();
number = build.getNumber();
}
@CheckForNull
public AbstractBuild<?,?> resolve() {
AbstractProject<?,?> j = JenkinsHelper.getInstance().getItemByFullName(jobName, AbstractProject.class);
if (j==null) return null;
return j.getBuildByNumber(number);
}
@CheckForNull
public AbstractBuild<?,?> resolve(PromotionProcess parent) {
AbstractBuild<?,?> build = this.resolve();
if (build !=null){
return build;
}
//In case of project renamed.
AbstractProject<?,?> j = parent.getOwner();
if (j==null) return null;
return j.getBuildByNumber(number);
}
public AbstractBuild<?,?> resolve(Promotion parent) {
return resolve(parent.getParent());
}
}