package hudson.plugins.tfs; import hudson.model.Action; import hudson.plugins.tfs.util.QueryString; import hudson.plugins.tfs.util.UriHelper; import org.kohsuke.stapler.export.Exported; import org.kohsuke.stapler.export.ExportedBean; import java.io.Serializable; import java.net.URI; import java.util.HashMap; import java.util.Map; /** * Captures the details of the TFS/Team Services build which triggered us. */ @ExportedBean(defaultVisibility = 999) public class TeamBuildDetailsAction implements Action, Serializable { private static final long serialVersionUID = 1L; public Map<String, String> buildVariables = new HashMap<String, String>(); public String buildUrl; public TeamBuildDetailsAction() { } public TeamBuildDetailsAction(final Map<String, String> buildVariables) { this.buildVariables = new HashMap<String, String>(buildVariables); this.buildUrl = determineBuildUrl(buildVariables).toString(); } static URI determineBuildUrl(final Map<String, String> buildVariables) { // TODO: eventually call the build REST API to obtain the proper web URL final String collectionUri = buildVariables.get("System.TeamFoundationCollectionUri"); final String projectName = buildVariables.get("System.TeamProject"); final String buildId = buildVariables.get("Build.BuildId"); final QueryString query = new QueryString("buildId", buildId); final URI result = UriHelper.join( collectionUri, projectName, "_build", "index", query); return result; } @Override public String getIconFileName() { return "/plugin/tfs/48x48/logo.png"; } @Override public String getDisplayName() { return "TFS/Team Services build"; } @Override public String getUrlName() { return "team-build"; } // the following methods are called from this/summary.jelly and this/index.jelly @Exported public String getBuildNumber() { return buildVariables.get("Build.BuildNumber"); } @Exported public String getBuildDefinitionName() { return buildVariables.get("Build.DefinitionName"); } @Exported public String getBuildUrl() { return buildUrl; } }