Skip to content

Commit

Permalink
[FIXED JENKINS-19316] added support for choice parameters rendered vi…
Browse files Browse the repository at this point in the history
…a selects
  • Loading branch information
mcupak committed May 25, 2014
1 parent 1388c44 commit 315101e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 5 deletions.
@@ -1,16 +1,20 @@
package org.jenkinsci.plugins.buildwithparameters;

import hudson.model.ParameterValue;
import hudson.model.BooleanParameterValue;
import hudson.model.ParameterValue;
import hudson.model.PasswordParameterValue;
import hudson.model.StringParameterValue;
import hudson.model.TextParameterValue;
import java.util.List;

public class BuildParameter {

static final String JOB_DEFAULT_PASSWORD_PLACEHOLDER = "job_default_password";
private BuildParameterType type;
private String name, description, value;
private final String name;
private final String description;
private String value;
private List<String> choices = null;

public BuildParameter(String name, String description) {
this.name = name;
Expand Down Expand Up @@ -56,4 +60,12 @@ public void setType(BuildParameterType type) {
this.type = type;
}

public List<String> getChoices() {
return choices;
}

public void setChoices(List<String> choices) {
this.choices = choices;
}

}
Expand Up @@ -3,8 +3,10 @@
import hudson.model.AbstractProject;
import hudson.model.Action;
import hudson.model.BooleanParameterDefinition;
import hudson.model.BooleanParameterValue;
import hudson.model.Cause;
import hudson.model.CauseAction;
import hudson.model.ChoiceParameterDefinition;
import hudson.model.Hudson;
import hudson.model.ParameterDefinition;
import hudson.model.ParameterValue;
Expand Down Expand Up @@ -50,6 +52,9 @@ public List<BuildParameter> getAvailableParameters() {
buildParameter.setType(BuildParameterType.PASSWORD);
} else if (parameterDefinition.getClass().isAssignableFrom(BooleanParameterDefinition.class)) {
buildParameter.setType(BuildParameterType.BOOLEAN);
} else if (parameterDefinition.getClass().isAssignableFrom(ChoiceParameterDefinition.class)) {
buildParameter.setType(BuildParameterType.CHOICE);
buildParameter.setChoices(((ChoiceParameterDefinition) parameterDefinition).getChoices());
} else if (parameterDefinition.getClass().isAssignableFrom(StringParameterDefinition.class)) {
buildParameter.setType(BuildParameterType.STRING);
} else if (parameterDefinition.getClass().isAssignableFrom(TextParameterDefinition.class)) {
Expand Down Expand Up @@ -101,7 +106,10 @@ public void doConfigSubmit(StaplerRequest req, StaplerResponse rsp) throws IOExc
if (!formData.isEmpty()) {
for (ParameterDefinition parameterDefinition : getParameterDefinitions()) {
ParameterValue parameterValue = parameterDefinition.createValue(req);
if (parameterValue.getClass().isAssignableFrom(PasswordParameterValue.class)) {
if (parameterValue.getClass().isAssignableFrom(BooleanParameterValue.class)) {
boolean value = (req.getParameter(parameterDefinition.getName()) != null);
parameterValue = ((BooleanParameterDefinition) parameterDefinition).createValue(String.valueOf(value));
} else if (parameterValue.getClass().isAssignableFrom(PasswordParameterValue.class)) {
parameterValue = applyDefaultPassword(parameterDefinition, parameterValue);
}
// This will throw an exception if the provided value is not a valid option for the parameter.
Expand Down
Expand Up @@ -11,13 +11,20 @@
<f:form method="post" action="configSubmit" name="config">
<j:forEach var="parameter" items="${it.availableParameters}">
<f:entry title="${parameter.name}" description="${parameter.description}">
<div>
<div name="parameter">
<j:choose>
<j:when test="${parameter.type == 'PASSWORD'}">
<f:password name="${parameter.name}" value="${parameter.value}"/>
</j:when>
<j:when test="${parameter.type == 'BOOLEAN'}">
<f:checkbox name="${parameter.name}" checked="${parameter.value}" />
<f:checkbox name="${parameter.name}" checked="${parameter.value}"/>
</j:when>
<j:when test="${parameter.type == 'CHOICE'}">
<select name="${parameter.name}">
<j:forEach var="value" items="${parameter.choices}">
<f:option selected="${parameter.value == value}">${value}</f:option>
</j:forEach>
</select>
</j:when>
<j:when test="${parameter.type == 'TEXT'}">
<f:textarea name="${parameter.name}" value="${parameter.value}"/>
Expand Down

0 comments on commit 315101e

Please sign in to comment.