diff --git a/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java b/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java index 83c4ea19e..3f1720a38 100644 --- a/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java +++ b/spring-batch-core/src/main/java/org/springframework/batch/core/converter/DefaultJobParametersConverter.java @@ -166,6 +166,9 @@ public class DefaultJobParametersConverter implements JobParametersConverter { String key = entry.getKey(); JobParameter jobParameter = entry.getValue(); Object value = jobParameter.getValue(); + if (value == null) { + continue; //skip null parameters + } if (jobParameter.getType() == ParameterType.DATE) { result.setProperty(key + DATE_TYPE, dateFormat.format(value)); } diff --git a/spring-batch-core/src/test/java/org/springframework/batch/core/converter/DefaultJobParametersConverterTests.java b/spring-batch-core/src/test/java/org/springframework/batch/core/converter/DefaultJobParametersConverterTests.java index 7fa4fe442..6d8aa1397 100644 --- a/spring-batch-core/src/test/java/org/springframework/batch/core/converter/DefaultJobParametersConverterTests.java +++ b/spring-batch-core/src/test/java/org/springframework/batch/core/converter/DefaultJobParametersConverterTests.java @@ -252,4 +252,21 @@ public class DefaultJobParametersConverterTests { private boolean contains(String str, String searchStr) { return str.indexOf(searchStr) != -1; } + + @Test + public void testGetPropertiesWithNullValues() throws Exception { + + JobParameters parameters = new JobParametersBuilder().addDate("schedule.date", null) + .addString("job.key", null).addLong("vendor.id", null).addDouble("double.key", null) + .toJobParameters(); + + Properties props = factory.getProperties(parameters); + assertNotNull(props); + + final String NOT_FOUND = "NOT FOUND"; + assertEquals(NOT_FOUND, props.getProperty("schedule.date", NOT_FOUND)); + assertEquals(NOT_FOUND, props.getProperty("job.key", NOT_FOUND)); + assertEquals(NOT_FOUND, props.getProperty("vendor.id", NOT_FOUND)); + assertEquals(NOT_FOUND, props.getProperty("double.key", NOT_FOUND)); + } }