package hudson.staging; import hudson.FilePath; import hudson.model.AbstractBuild; import hudson.model.AbstractProject; import hudson.model.Action; import hudson.model.DirectoryBrowserSupport; import java.io.File; import java.io.IOException; import javax.servlet.ServletException; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; public class BrowseAction implements Action { private AbstractBuild<?, ?> build; public BrowseAction(AbstractBuild<?, ?> build) { this.build = build; } public String getDisplayName() { return "Staging Repository"; } public String getIconFileName() { return "folder.gif"; } public String getUrlName() { return "staging"; } public AbstractBuild<?, ?> getBuild() { return build; } public DirectoryBrowserSupport doDynamic(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException, InterruptedException { build.checkPermission(AbstractProject.WORKSPACE); FilePath ws = new FilePath(new File(build.getRootDir(), "staging")); if ((ws == null) || (!ws.exists())) { rsp.sendError(404); return null; } else { return new DirectoryBrowserSupport(build, ws, getDisplayName(), "folder.gif", true); } } }