提交 bd2a4c85 编写于 作者: O Oliver Gondža

Merge pull request #968 from akiellor/JENKINS-18434

package hudson.model;
import hudson.util.FormValidation;
import org.kohsuke.stapler.QueryParameter;
import org.kohsuke.stapler.StaplerRequest;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.export.Exported;
......@@ -15,25 +17,26 @@ import java.util.Arrays;
* @author huybrechts
*/
public class ChoiceParameterDefinition extends SimpleParameterDefinition {
public static final String CHOICES_DELIMETER = "\\r?\\n";
private final List<String> choices;
private final String defaultValue;
public static boolean areValidChoices(String choices) {
String strippedChoices = choices.trim();
return !StringUtils.isEmpty(strippedChoices) && strippedChoices.split(CHOICES_DELIMETER).length > 0;
}
@DataBoundConstructor
public ChoiceParameterDefinition(String name, String choices, String description) {
super(name, description);
this.choices = Arrays.asList(choices.split("\\r?\\n"));
if (choices.length()==0) {
throw new IllegalArgumentException("No choices found");
}
this.choices = Arrays.asList(choices.split(CHOICES_DELIMETER));
defaultValue = null;
}
public ChoiceParameterDefinition(String name, String[] choices, String description) {
super(name, description);
this.choices = new ArrayList<String>(Arrays.asList(choices));
if (this.choices.isEmpty()) {
throw new IllegalArgumentException("No choices found");
}
defaultValue = null;
}
......@@ -52,7 +55,7 @@ public class ChoiceParameterDefinition extends SimpleParameterDefinition {
return this;
}
}
@Exported
public List<String> getChoices() {
return choices;
......@@ -95,6 +98,17 @@ public class ChoiceParameterDefinition extends SimpleParameterDefinition {
public String getHelpFile() {
return "/help/parameter/choice.html";
}
/**
* Checks if parameterised build choices are valid.
*/
public FormValidation doCheckChoices(@QueryParameter String value) {
if (ChoiceParameterDefinition.areValidChoices(value)) {
return FormValidation.ok();
} else {
return FormValidation.error(Messages.ChoiceParameterDefinition_MissingChoices());
}
}
}
}
\ No newline at end of file
......@@ -30,7 +30,7 @@ THE SOFTWARE.
<f:textbox name="parameter.name" value="${instance.name}" />
</f:entry>
<f:entry title="${%Choices}" help="/help/parameter/choice-choices.html">
<f:textarea name="parameter.choices" value="${instance.choicesText}" />
<f:textarea checkUrl="'${rootURL}/descriptorByName/hudson.model.ChoiceParameterDefinition/checkChoices?value='+encodeURIComponent(this.value)" name="parameter.choices" value="${instance.choicesText}" />
</f:entry>
<f:entry title="${%Description}" help="/help/parameter/description.html">
<f:textarea name="parameter.description" value="${instance.description}" />
......
......@@ -308,6 +308,7 @@ TextParameterDefinition.DisplayName=Text Parameter
FileParameterDefinition.DisplayName=File Parameter
BooleanParameterDefinition.DisplayName=Boolean Value
ChoiceParameterDefinition.DisplayName=Choice
ChoiceParameterDefinition.MissingChoices=Requires Choices.
RunParameterDefinition.DisplayName=Run Parameter
PasswordParameterDefinition.DisplayName=Password Parameter
......
package hudson.model;
import hudson.util.FormValidation;
import jenkins.model.Jenkins;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
public class ChoiceParameterDefinitionTest {
@Test
public void shouldValidateChoices(){
assertFalse(ChoiceParameterDefinition.areValidChoices(""));
assertFalse(ChoiceParameterDefinition.areValidChoices(" "));
assertTrue(ChoiceParameterDefinition.areValidChoices("abc"));
assertTrue(ChoiceParameterDefinition.areValidChoices("abc\ndef"));
assertTrue(ChoiceParameterDefinition.areValidChoices("abc\r\ndef"));
}
@Test
public void testCheckChoices() throws Exception {
ChoiceParameterDefinition.DescriptorImpl descriptorImpl = new ChoiceParameterDefinition.DescriptorImpl();
assertEquals(FormValidation.Kind.OK, descriptorImpl.doCheckChoices("abc\ndef").kind);
assertEquals(FormValidation.Kind.ERROR, descriptorImpl.doCheckChoices("").kind);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册