Skip to content

Commit 7fd870a

Browse files
committed
Support extended-choice-parameter JSON parameter
1 parent 53028c4 commit 7fd870a

File tree

3 files changed

+42
-1
lines changed

3 files changed

+42
-1
lines changed

pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@
8484
<artifactId>pipeline-model-definition</artifactId>
8585
<scope>test</scope>
8686
</dependency>
87+
<dependency>
88+
<groupId>org.jenkins-ci.plugins</groupId>
89+
<artifactId>extended-choice-parameter</artifactId>
90+
<version>0.82</version>
91+
<scope>test</scope>
92+
</dependency>
8793
<dependency>
8894
<groupId>org.mockito</groupId>
8995
<artifactId>mockito-core</artifactId>

src/main/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterizedTimerTrigger.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
import java.util.logging.Level;
2222
import java.util.logging.Logger;
2323

24+
import net.sf.json.JSONObject;
25+
2426
/**
2527
* {@link Trigger} that runs a job periodically with support for parameters.
2628
*
@@ -62,7 +64,15 @@ private List<ParameterValue> configurePropertyValues(Map<String, String> paramet
6264
if (parameterValues.containsKey(paramDefinition.getName())) {
6365
ParameterizedStaplerRequest request = new ParameterizedStaplerRequest(
6466
parameterValues.get(paramDefinition.getName()));
65-
ParameterValue value = paramDefinition.createValue(request);
67+
ParameterValue value;
68+
if (paramDefinition.getClass().getName().equals("com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition") &&
69+
paramDefinition.getType().equals("PT_JSON")) {
70+
JSONObject jO = new JSONObject();
71+
jO.put("value", parameterValues.get(paramDefinition.getName()));
72+
value = paramDefinition.createValue(request, jO);
73+
} else {
74+
value = paramDefinition.createValue(request);
75+
}
6676
if (value!= null) {
6777
defValues.add(value);
6878
} else {

src/test/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterizedSchedulerTest.java

+25
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.jenkinsci.plugins.parameterizedscheduler;
22

3+
import com.cwctravel.hudson.plugins.extended_choice_parameter.ExtendedChoiceParameterDefinition;
34
import hudson.model.FreeStyleProject;
45
import hudson.model.Job;
56
import hudson.model.ParameterDefinition;
@@ -106,6 +107,30 @@ public void declarative() throws Exception {
106107
assertThat((String) p.getLastCompletedBuild().getAction(ParametersAction.class).getParameter("foo").getValue(), is("bar"));
107108
}
108109

110+
@Test
111+
@Issue("JENKINS-49372")
112+
public void extendedChoiceJson() throws Exception {
113+
FreeStyleProject p = r.createFreeStyleProject();
114+
p.addProperty(new ParametersDefinitionProperty(new ExtendedChoiceParameterDefinition("foo", ExtendedChoiceParameterDefinition.PARAMETER_TYPE_JSON, "",
115+
"", "", "def jsonSlurper = new groovy.json.JsonSlurper()\n" +
116+
"def object = jsonSlurper.parseText('{\"schema\":{\"type\":\"object\",\"title\":\"Car\",\"properties\":{\"make\":{\"type\":\"string\",\"enum\":[\"Toyota\",\"BMW\",\"Honda\",\"Ford\",\"Chevy\",\"VW\"]},\"model\":{\"type\":\"string\"},\"year\":{\"type\":\"integer\",\"enum\":[1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014],\"default\":2008}}}}')\n" +
117+
"return object", "", "", "", "",
118+
"", "", "" , "", "", "",
119+
"", "", "", "", "", "",
120+
"", "", "", "", false, false,
121+
0, "", "")));
122+
assertThat(p.getLastCompletedBuild(), is(nullValue()));
123+
Trigger<Job> t = new ParameterizedTimerTrigger("* * * * *%foo={\"make\":\"Toyota\",\"model\":\"test\",\"year\":2008}");
124+
t.start(p, true);
125+
p.addTrigger(t);
126+
new Cron().doRun();
127+
assertThat(p.isInQueue(), is(true));
128+
r.waitUntilNoActivity();
129+
// Build should complete successfully but will not have any value
130+
assertThat(p.getLastCompletedBuild(), is(notNullValue()));
131+
assertThat(p.getLastCompletedBuild().getAction(ParametersAction.class).getParameter("foo").getValue(), is("{\"make\":\"Toyota\",\"model\":\"test\",\"year\":2008}"));
132+
}
133+
109134
@Test
110135
@Issue("JENKINS-49372")
111136
public void nullValueCreated() throws Exception {

0 commit comments

Comments
 (0)