package com.smartcodeltd.jenkinsci.plugins.buildmonitor.facade; import com.smartcodeltd.jenkinsci.plugins.buildmonitor.BuildMonitorView; import hudson.Functions; import hudson.model.ItemGroup; import hudson.model.Job; import hudson.model.View; import org.kohsuke.stapler.Ancestor; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerRequest; public class RelativeLocation { private final Job job; public static RelativeLocation of(Job job) { return new RelativeLocation(job); } public String name() { ItemGroup ig = null; StaplerRequest request = Stapler.getCurrentRequest(); for( Ancestor a : request.getAncestors() ) { if(a.getObject() instanceof BuildMonitorView) { ig = ((View) a.getObject()).getOwnerItemGroup(); } } return Functions.getRelativeDisplayNameFrom(job, ig); } public String url() { return Functions.getRelativeLinkTo(job); } private RelativeLocation(Job job) { this.job = job; } }