use of hudson.model.ParametersDefinitionProperty in project hudson-2.x by hudson.
the class CascadingParameterDefinitionPropertiesTest method setUp.
@Before
public void setUp() throws Exception {
p1 = new FreeStyleProjectMock("p1");
p2 = new FreeStyleProjectMock("p2");
p3 = new FreeStyleProjectMock("p3");
p2.setCascadingProject(p1);
CascadingUtil.linkCascadingProjectsToChild(p1, "p2");
p3.setCascadingProject(p2);
CascadingUtil.linkCascadingProjectsToChild(p2, "p3");
Hudson hudson = createMock(Hudson.class);
expect(hudson.getItem("p2")).andReturn(p2).anyTimes();
expect(hudson.getItem("p3")).andReturn(p3).anyTimes();
mockStatic(Hudson.class);
expect(Hudson.getInstance()).andReturn(hudson).anyTimes();
replay(Hudson.class, hudson);
propertyKey = Job.PARAMETERS_DEFINITION_JOB_PROPERTY_PROPERTY_NAME;
List<ParameterDefinition> parameterDefinitionList = new ArrayList<ParameterDefinition>();
parameterDefinitionList.add(new BooleanParameterDefinition("name", true, "d1"));
ParametersDefinitionProperty property = new ParametersDefinitionProperty(parameterDefinitionList);
copyOnWriteList = new CopyOnWriteList<ParametersDefinitionProperty>();
copyOnWriteList.add(property);
}
use of hudson.model.ParametersDefinitionProperty in project blueocean-plugin by jenkinsci.
the class RunContainerImpl method getParameterValue.
private List<ParameterValue> getParameterValue(@Nonnull StaplerRequest request) {
List<ParameterValue> values = new ArrayList<>();
List<ParameterDefinition> pdsInRequest = new ArrayList<>();
ParametersDefinitionProperty pp = (ParametersDefinitionProperty) job.getProperty(ParametersDefinitionProperty.class);
if (pp == null) {
return values;
}
try {
JSONObject body = JSONObject.fromObject(IOUtils.toString(request.getReader()));
if (body.get("parameters") == null && pp.getParameterDefinitions().size() > 0) {
throw new ServiceException.BadRequestException("This is parameterized job, requires parameters");
}
if (body.get("parameters") != null) {
JSONArray pds = JSONArray.fromObject(body.get("parameters"));
for (Object o : pds) {
JSONObject p = (JSONObject) o;
String name = (String) p.get("name");
if (name == null) {
throw new ServiceException.BadRequestException("parameters.name is required element");
}
ParameterDefinition pd = pp.getParameterDefinition(name);
if (pd == null) {
throw new ServiceException.BadRequestException("No such parameter definition: " + name);
}
ParameterValue parameterValue = pd.createValue(request, p);
if (parameterValue != null) {
values.add(parameterValue);
pdsInRequest.add(pd);
} else {
throw new ServiceException.BadRequestException("Invalid value. Cannot retrieve the parameter value: " + name);
}
}
// now check for missing parameters without default values
if (pdsInRequest.size() != pp.getParameterDefinitions().size()) {
for (ParameterDefinition pd : pp.getParameterDefinitions()) {
if (!pdsInRequest.contains(pd)) {
ParameterValue v = pd.getDefaultParameterValue();
if (v == null || v.getValue() == null) {
throw new ServiceException.BadRequestException("Missing parameter: " + pd.getName());
}
values.add(v);
}
}
}
}
} catch (IOException e) {
throw new ServiceException.UnexpectedErrorException(e.getMessage(), e);
}
return values;
}
use of hudson.model.ParametersDefinitionProperty in project blueocean-plugin by jenkinsci.
the class PipelineApiTest method parameterizedFreestyleTestWithoutDefaultParam.
@Test
public void parameterizedFreestyleTestWithoutDefaultParam() throws Exception {
FreeStyleProject p = j.createFreeStyleProject("pp");
p.addProperty(new ParametersDefinitionProperty(new TestStringParameterDefinition("version", null, "version number")));
p.getBuildersList().add(new Shell("echo hello!"));
Map resp = get("/organizations/jenkins/pipelines/pp/");
List<Map<String, Object>> parameters = (List<Map<String, Object>>) resp.get("parameters");
assertEquals(1, parameters.size());
assertEquals("version", parameters.get(0).get("name"));
assertEquals("TestStringParameterDefinition", parameters.get(0).get("type"));
assertEquals("version number", parameters.get(0).get("description"));
assertNull(parameters.get(0).get("defaultParameterValue"));
validatePipeline(p, resp);
resp = post("/organizations/jenkins/pipelines/pp/runs/", ImmutableMap.of("parameters", ImmutableList.of()), 400);
}
use of hudson.model.ParametersDefinitionProperty in project blueocean-plugin by jenkinsci.
the class PipelineApiTest method testPipelineQueue.
@Test
public void testPipelineQueue() throws Exception {
FreeStyleProject p1 = j.createFreeStyleProject("pipeline1");
p1.setConcurrentBuild(true);
p1.addProperty(new ParametersDefinitionProperty(new StringParameterDefinition("test", "test")));
p1.getBuildersList().add(new Shell("echo hello!\nsleep 300"));
p1.scheduleBuild2(0).waitForStart();
p1.scheduleBuild2(0).waitForStart();
Jenkins.getInstance().getQueue().schedule(p1, 0, new ParametersAction(new StringParameterValue("test", "test1")), new CauseAction(new Cause.UserIdCause()));
Jenkins.getInstance().getQueue().schedule(p1, 0, new ParametersAction(new StringParameterValue("test", "test2")), new CauseAction(new Cause.UserIdCause()));
List queue = request().get("/organizations/jenkins/pipelines/pipeline1/queue").build(List.class);
Assert.assertEquals(2, queue.size());
Assert.assertEquals(4, ((Map) queue.get(0)).get("expectedBuildNumber"));
Assert.assertEquals(3, ((Map) queue.get(1)).get("expectedBuildNumber"));
Assert.assertEquals("Waiting for next available executor", ((Map) queue.get(0)).get("causeOfBlockage"));
Assert.assertEquals("Waiting for next available executor", ((Map) queue.get(1)).get("causeOfBlockage"));
Run r = QueueUtil.getRun(p1, Long.parseLong((String) ((Map) queue.get(0)).get("id")));
// its not moved out of queue yet
assertNull(r);
}
use of hudson.model.ParametersDefinitionProperty in project workflow-cps-plugin by jenkinsci.
the class ParamsVariable method getValue.
@SuppressWarnings("unchecked")
@Override
public Object getValue(CpsScript script) throws Exception {
Run<?, ?> b = script.$build();
if (b == null) {
throw new IllegalStateException("cannot find owning build");
}
// Could extend AbstractMap and make a Serializable lazy wrapper, but getValue impls seem cheap anyway.
Map<String, Object> values = new HashMap<>();
ParametersAction action = b.getAction(ParametersAction.class);
if (action != null) {
List<ParameterValue> parameterValues;
try {
// TODO 1.651.2+ remove reflection
parameterValues = (List<ParameterValue>) ParametersAction.class.getMethod("getAllParameters").invoke(action);
} catch (NoSuchMethodException x) {
parameterValues = action.getParameters();
}
for (ParameterValue parameterValue : parameterValues) {
addValue(values, parameterValue);
}
}
ParametersDefinitionProperty prop = b.getParent().getProperty(ParametersDefinitionProperty.class);
if (prop != null) {
// JENKINS-35698: look for default values as well
for (ParameterDefinition param : prop.getParameterDefinitions()) {
if (!values.containsKey(param.getName())) {
ParameterValue defaultParameterValue = param.getDefaultParameterValue();
if (defaultParameterValue != null) {
addValue(values, defaultParameterValue);
}
}
}
}
return Collections.unmodifiableMap(values);
}
Aggregations