package org.jenkinsci.plugins.p4_client.review; import hudson.model.Action; import hudson.model.ParameterValue; import hudson.model.AbstractProject; import hudson.model.Cause; import hudson.model.CauseAction; import hudson.model.ParameterDefinition; import hudson.model.ParametersAction; import hudson.model.ParametersDefinitionProperty; import hudson.model.StringParameterValue; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.logging.Logger; import javax.servlet.ServletException; import jenkins.model.Jenkins; import jenkins.util.TimeDuration; import net.sf.json.JSONObject; import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerResponse; public class ReviewAction implements Action { private final ReviewProperty property; private final AbstractProject<?, ?> project; public ReviewProperty getProperty() { return property; } public AbstractProject<?, ?> getProject() { return project; } public ReviewAction(AbstractProject<?, ?> project, ReviewProperty property) { this.project = project; this.property = property; } public String getIconFileName() { if (property.getUrl() == null) { return null; } return "clock.png"; // return "/plugin/p4_client/icons/p4.png"; } public String getDisplayName() { if (property.getUrl() == null) { return null; } return "Build Review"; } public String getUrlName() { if (property.getUrl() == null) { return null; } return "review"; } public List<StringParameterValue> getAvailableParameters() { List<StringParameterValue> stringParameters = new ArrayList<StringParameterValue>(); for (ParameterDefinition parameterDefinition : property.getParameterDefinitions()) { StringParameterValue stringParameter = new StringParameterValue(parameterDefinition.getName(), parameterDefinition.getDescription()); stringParameters.add(stringParameter); } return stringParameters; } public void doBuildSubmit(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { project.checkPermission(AbstractProject.BUILD); List<ParameterValue> values = new ArrayList<ParameterValue>(); JSONObject formData = req.getSubmittedForm(); if (!formData.isEmpty()) { for (ParameterDefinition parameterDefinition : property.getParameterDefinitions()) { ParameterValue parameterValue = parameterDefinition .createValue(req); // This will throw an exception if the provided value is not a // valid option for the parameter. // This is the desired behavior, as we want to ensure valid // submissions. values.add(parameterValue); } } TimeDuration delay = new TimeDuration(project.getQuietPeriod()); Jenkins.getInstance() .getQueue() .schedule(project, delay.getTime(), new ParametersAction(values), new CauseAction(new Cause.UserIdCause())); rsp.sendRedirect("../"); } public void doBuild(StaplerRequest req, StaplerResponse rsp) throws IOException, ServletException { project.checkPermission(AbstractProject.BUILD); List<ParameterValue> values = new ArrayList<ParameterValue>(); if (property.getUrl() != null) { String[] val = req.getParameterValues("review"); @SuppressWarnings("unchecked") Map<String, String> map = req.getParameterMap(); List<ParameterDefinition> defs = property.getParameterDefinitions(); for (ParameterDefinition d : defs) { ParameterValue value = d.createValue(req); if (value != null) { values.add(value); } } } TimeDuration delay = new TimeDuration(project.getQuietPeriod()); Jenkins.getInstance() .getQueue() .schedule(project, delay.getTime(), new ParametersAction(values), new CauseAction(new Cause.UserIdCause())); // model / ParametersDefinitionProperty.java line 122 // send the user back to the job top page. rsp.sendRedirect("."); // project.doBuild(req, rsp, null); // rsp.sendRedirect("."); } final static Logger LOGGER = Logger.getLogger(ReviewAction.class.getName()); }
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#9 | 9672 | Paul Allen | Refactor name from 'p4_client' to 'p4'. | ||
#8 | 9055 | Paul Allen |
Label support. Build at a label using the pram 'label'. This includes adding the label to the ChangeEntry, building the change reports and Browser links to Swarm. (TPI-102) |
||
#7 | 8971 | Paul Allen |
Attempt to fix rootUrl bug, but ended up tidying code. Turns out that you MUST set the Jenkins URL and click Save; even though the box has a default value it is not applied unless the configuration page is Applied/Saved. Manage Jenkins --> Configuration --> Jenkins Location: Jenkins URL |
||
#6 | 8923 | Paul Allen | Remove unused parameters 'project' and 'branch' that might be the cause of TPI-81. | ||
#5 | 8737 | Paul Allen |
Added basic Help for SCM Configuration page. Tidy up descriptions and fix (null:null) in Credential summary. |
||
#4 | 8729 | Paul Allen |
Changed Build Review to Transient Action (so no check box required). - Added Perforce Icon to Build Review Action. |
||
#3 | 8693 | Paul Allen | Added manual launch Review page - POST from Jenkins. | ||
#2 | 8688 | Paul Allen | (Work in progress) Able to call build from review Action and pass URL params. | ||
#1 | 8683 | Paul Allen | Simple Action plugin hooks for building reviews in a Jenkins Job. |