Skip to content

Commit e080136

Browse files
authored
Merge pull request #84 from jenkinsci/JENKINS-57093
[JENKINS-57093] Fix NPE in formvalidation if no job property configured
2 parents 5bd20ad + 11cff51 commit e080136

2 files changed

Lines changed: 13 additions & 5 deletions

File tree

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
import hudson.model.ParametersDefinitionProperty;
44

5-
import java.util.ArrayList;
65
import java.util.Collections;
76
import java.util.List;
87
import java.util.Map;
8+
import java.util.stream.Collectors;
99

1010
import org.apache.commons.lang.StringUtils;
1111
import org.jenkinsci.plugins.parameterizedscheduler.Messages;
@@ -47,9 +47,9 @@ public String checkSanity(String cronTabSpec, ParametersDefinitionProperty param
4747
if (split.length == 2) {
4848
try {
4949
Map<String, String> parsedParameters = parse(split[1]);
50-
List<String> parameterDefinitionNames = parametersDefinitionProperty.getParameterDefinitionNames();
51-
List<String> parsedKeySet = new ArrayList<>(parsedParameters.keySet());
52-
parsedKeySet.removeAll(parameterDefinitionNames);
50+
List<String> parameterDefinitionNames = parametersDefinitionProperty != null
51+
? parametersDefinitionProperty.getParameterDefinitionNames() : Collections.emptyList();
52+
List<String> parsedKeySet = parsedParameters.keySet().stream().filter(s -> !parameterDefinitionNames.contains(s)).collect(Collectors.toList());
5353
if (!parsedKeySet.isEmpty()) {
5454
return Messages.ParameterizedTimerTrigger_UndefinedParameter(parsedKeySet, parameterDefinitionNames);
5555
}

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.jenkinsci.plugins.parameterizedscheduler;
22

33
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNotNull;
45
import static org.junit.Assert.assertNull;
56
import hudson.model.ParametersDefinitionProperty;
67

78
import java.util.Arrays;
9+
import java.util.Collections;
810
import java.util.HashMap;
911
import java.util.List;
1012

@@ -153,8 +155,14 @@ public void checkSanity_duplicateParamName() throws Exception {
153155
@Test
154156
public void checkSanity_UnmatchedEquals() throws Exception {
155157
ParameterParser testObject = new ParameterParser();
156-
157158
testObject.checkSanity("* * * * *%name=value;name2=", mockParametersDefinitionProperty);
158159
}
159160

161+
@Test
162+
public void checkSanity_NullParameters() throws Exception {
163+
ParameterParser testObject = new ParameterParser();
164+
assertEquals(Messages.ParameterizedTimerTrigger_UndefinedParameter(Collections.singletonList("name"), Collections.emptyList()),
165+
testObject.checkSanity("* * * * *%name=value", null));
166+
}
167+
160168
}

0 commit comments

Comments
 (0)