diff --git a/src/main/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParser.java b/src/main/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParser.java index df91864..8f10cb3 100644 --- a/src/main/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParser.java +++ b/src/main/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParser.java @@ -2,10 +2,10 @@ import hudson.model.ParametersDefinitionProperty; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.apache.commons.lang.StringUtils; import org.jenkinsci.plugins.parameterizedscheduler.Messages; @@ -47,9 +47,9 @@ public String checkSanity(String cronTabSpec, ParametersDefinitionProperty param if (split.length == 2) { try { Map parsedParameters = parse(split[1]); - List parameterDefinitionNames = parametersDefinitionProperty.getParameterDefinitionNames(); - List parsedKeySet = new ArrayList<>(parsedParameters.keySet()); - parsedKeySet.removeAll(parameterDefinitionNames); + List parameterDefinitionNames = parametersDefinitionProperty != null + ? parametersDefinitionProperty.getParameterDefinitionNames() : Collections.emptyList(); + List parsedKeySet = parsedParameters.keySet().stream().filter(s -> !parameterDefinitionNames.contains(s)).collect(Collectors.toList()); if (!parsedKeySet.isEmpty()) { return Messages.ParameterizedTimerTrigger_UndefinedParameter(parsedKeySet, parameterDefinitionNames); } diff --git a/src/test/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParserTest.java b/src/test/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParserTest.java index 92ca437..44b5caa 100644 --- a/src/test/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParserTest.java +++ b/src/test/java/org/jenkinsci/plugins/parameterizedscheduler/ParameterParserTest.java @@ -1,10 +1,12 @@ package org.jenkinsci.plugins.parameterizedscheduler; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import hudson.model.ParametersDefinitionProperty; import java.util.Arrays; +import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -153,8 +155,14 @@ public void checkSanity_duplicateParamName() throws Exception { @Test public void checkSanity_UnmatchedEquals() throws Exception { ParameterParser testObject = new ParameterParser(); - testObject.checkSanity("* * * * *%name=value;name2=", mockParametersDefinitionProperty); } + @Test + public void checkSanity_NullParameters() throws Exception { + ParameterParser testObject = new ParameterParser(); + assertEquals(Messages.ParameterizedTimerTrigger_UndefinedParameter(Collections.singletonList("name"), Collections.emptyList()), + testObject.checkSanity("* * * * *%name=value", null)); + } + }